diff --git a/Makefile b/Makefile
index 13aeef9..5c9645b 100644
--- a/Makefile
+++ b/Makefile
@@ -509,12 +509,17 @@
 
 endef
 
+ifeq (${ARCH},aarch32)
+        ARCH_TESTS_SKIP_LIST    := tftf/tests/aarch32_tests_to_skip.txt
+endif
+
 $(AUTOGEN_DIR):
 	$(Q)mkdir -p "$@"
 
-$(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h: $(AUTOGEN_DIR) ${TESTS_FILE} ${PLAT_TESTS_SKIP_LIST}
+$(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h: $(AUTOGEN_DIR) ${TESTS_FILE} ${PLAT_TESTS_SKIP_LIST} $(ARCH_TESTS_SKIP_LIST)
 	@echo "  AUTOGEN $@"
-	tools/generate_test_list/generate_test_list.pl $(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h  ${TESTS_FILE} $(PLAT_TESTS_SKIP_LIST)
+	tools/generate_test_list/generate_test_list.pl $(AUTOGEN_DIR)/tests_list.c \
+		$(AUTOGEN_DIR)/tests_list.h  ${TESTS_FILE} $(PLAT_TESTS_SKIP_LIST) $(ARCH_TESTS_SKIP_LIST)
 ifeq ($(SMC_FUZZING), 1)
 	$(Q)mkdir -p  ${BUILD_PLAT}/smcf
 	dtc ${SMC_FUZZ_DTS} >> ${BUILD_PLAT}/smcf/dtb
diff --git a/tftf/tests/aarch32_tests_to_skip.txt b/tftf/tests/aarch32_tests_to_skip.txt
new file mode 100644
index 0000000..cdc298d
--- /dev/null
+++ b/tftf/tests/aarch32_tests_to_skip.txt
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+Realm payload at EL1
+
diff --git a/tools/generate_test_list/generate_test_list.pl b/tools/generate_test_list/generate_test_list.pl
index 702a983..5d6d4b7 100755
--- a/tools/generate_test_list/generate_test_list.pl
+++ b/tools/generate_test_list/generate_test_list.pl
@@ -5,7 +5,6 @@
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
-
 #
 # Arg0: Name of the C file to generate.
 # Arg1: Name of the header file to generate.
@@ -17,6 +16,7 @@
 my $TESTLIST_HDR_FILENAME = $ARGV[1];
 my $XML_TEST_FILENAME     = $ARGV[2];
 my $SKIPPED_LIST_FILENAME = $ARGV[3];
+my $SKIPPED_LIST_FILENAME2 = $ARGV[4];
 
 use strict;
 use warnings;
@@ -47,7 +47,6 @@
 my @all_testcases   = $root->findnodes("//testcase");
 my @all_testsuites  = $root->findnodes("//testsuite");
 
-
 # Check the validity of the XML file:
 # - A testsuite name must be unique.
 # - A testsuite name must not contain a '/' character.
@@ -80,52 +79,56 @@
 # Get the list of tests to skip.
 # For each test to skip, find it in the XML tree and remove its node.
 #
-if (($SKIPPED_LIST_FILENAME) && (open SKIPPED_FILE, "<", $SKIPPED_LIST_FILENAME)) {
-  my @lines = <SKIPPED_FILE>;
-  close $SKIPPED_LIST_FILENAME;
+sub skip_test {
+  my $file = $_[0];
+  if (($file) && (open SKIPPED_FILE, "<", $file)) {
+    my @lines = <SKIPPED_FILE>;
 
-  # Remove the newlines from the end of each line.
-  chomp @lines;
+    # Remove the newlines from the end of each line.
+    chomp @lines;
 
-  my $line_no = 0;
-  my $testsuite_name;
-  my $testcase_name;
-  my $index = 0;
+    my $line_no = 0;
+    my $testsuite_name;
+    my $testcase_name;
+    my $index = 0;
 
-  for my $line (@lines) {
-    ++$line_no;
+    for my $line (@lines) {
+      ++$line_no;
 
-    # Skip empty lines.
-    if ($line =~ /^ *$/) { next; }
-    # Skip comments.
-    if ($line =~ /^#/) { next; }
+      # Skip empty lines.
+      if ($line =~ /^ *$/) { next; }
+      # Skip comments.
+      if ($line =~ /^#/) { next; }
 
-    ($testsuite_name, $testcase_name) = split('/', $line);
+      ($testsuite_name, $testcase_name) = split('/', $line);
 
-    my @testsuites = $root->findnodes("//testsuite[\@name=\"$testsuite_name\"]");
-    if (!@testsuites) {
-      print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test suite '$testsuite_name' doesn't exist or has already been deleted.\n";
-      next;
+      my @testsuites = $root->findnodes("//testsuite[\@name=\"$testsuite_name\"]");
+      if (!@testsuites) {
+        print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test suite '$testsuite_name' doesn't exist or has already been deleted.\n";
+        next;
+      }
+
+      if (!defined $testcase_name) {
+        print "INFO: Testsuite '$testsuite_name' will be skipped.\n";
+        $testsuites[0]->unbindNode();
+        next;
+      }
+
+      my @testcases = $testsuites[0]->findnodes("testcase[\@name=\"$testcase_name\"]");
+      if (!@testcases) {
+        print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test case '$testsuite_name/$testcase_name' doesn't exist or has already been deleted.\n";
+        next;
+      }
+
+      print "INFO: Testcase '$testsuite_name/$testcase_name' will be skipped.\n";
+      $testcases[0]->unbindNode();
     }
-
-    if (!defined $testcase_name) {
-      print "INFO: Testsuite '$testsuite_name' will be skipped.\n";
-      $testsuites[0]->unbindNode();
-      next;
-    }
-
-    my @testcases = $testsuites[0]->findnodes("testcase[\@name=\"$testcase_name\"]");
-    if (!@testcases) {
-      print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test case '$testsuite_name/$testcase_name' doesn't exist or has already been deleted.\n";
-      next;
-    }
-
-    print "INFO: Testcase '$testsuite_name/$testcase_name' will be skipped.\n";
-    $testcases[0]->unbindNode();
+    close (SKIPPED_FILE);
   }
 }
 
-
+skip_test($SKIPPED_LIST_FILENAME);
+skip_test($SKIPPED_LIST_FILENAME2);
 @all_testcases = $root->findnodes("//testcase");
 
 #
