refactor: only register undef_injection_handler during register accesses

Before, the undef_injection_handler was registered at the start of the
test, and unregistered at the end. This patch makes it so the
undef_injection_handler is only registered where a register is being
accessed. This gives us more control in which exceptions we catch.

Change-Id: I4262288543cac6b1f9ab0e6fd5092d7e3a31fb75
Signed-off-by: Charlie Bareham <charlie.bareham@arm.com>
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
diff --git a/tftf/tests/misc_tests/test_asymmetric_features.c b/tftf/tests/misc_tests/test_asymmetric_features.c
index 25b2421..a202034 100644
--- a/tftf/tests/misc_tests/test_asymmetric_features.c
+++ b/tftf/tests/misc_tests/test_asymmetric_features.c
@@ -40,11 +40,13 @@
 	unsigned int core_pos = platform_get_core_pos(mpid);
 	bool check_if_affected = is_trbe_errata_affected_core();
 
+	register_custom_sync_exception_handler(undef_injection_handler);
+	undef_injection_triggered = false;
 	read_trblimitr_el1();
+	unregister_custom_sync_exception_handler();
 
 	if (undef_injection_triggered == true && check_if_affected == true) {
 		test_result = TEST_RESULT_SUCCESS;
-		undef_injection_triggered = false;
 		tftf_testcase_printf("Undef injection triggered for core = %d "
 				     "when accessing TRB_LIMTR\n", core_pos);
 	} else if (undef_injection_triggered == false && check_if_affected == false) {
@@ -63,11 +65,13 @@
 	unsigned int mpid = read_mpidr_el1() & MPID_MASK;
 	unsigned int core_pos = platform_get_core_pos(mpid);
 
+	register_custom_sync_exception_handler(undef_injection_handler);
+	undef_injection_triggered = false;
 	read_pmscr_el1();
+	unregister_custom_sync_exception_handler();
 
 	if (undef_injection_triggered == true && !is_feat_spe_supported()) {
 		test_result = TEST_RESULT_SUCCESS;
-		undef_injection_triggered = false;
 		tftf_testcase_printf("Undef injection triggered for core = %d "
 				     "when accessing PMSCR_EL1\n", core_pos);
 	} else if (undef_injection_triggered == false &&
@@ -140,10 +144,6 @@
 
 	test_result = TEST_RESULT_SUCCESS;
 
-	undef_injection_triggered = false;
-
-	register_custom_sync_exception_handler(undef_injection_handler);
-
 	lead_mpid = read_mpidr_el1() & MPID_MASK;
 
 	/* Testing TRBE and SPE feature in Lead core */