feat(fpu): add helper routines to read, write, compare FPU registers
Add helper routines to read, write, write_rand and compare FPU state
and FPU control/status registers.
These helper routines can be called by testcases running in NS-EL2,
R-EL1, S-EL1 payload. The caller has to pass memory to read/write FPU
registers.
Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com>
Change-Id: I10ae5487c9f58e46434c1bd5b42fd458ec755045
diff --git a/realm/realm_payload_main.c b/realm/realm_payload_main.c
index 94ef25e..4eea234 100644
--- a/realm/realm_payload_main.c
+++ b/realm/realm_payload_main.c
@@ -18,7 +18,9 @@
#include <realm_tests.h>
#include <tftf_lib.h>
-static fpu_reg_state_t fpu_temp_rl;
+static fpu_state_t rl_fpu_state_write;
+static fpu_state_t rl_fpu_state_read;
+
/*
* This function reads sleep time in ms from shared buffer and spins PE
* in a loop for that time period.
@@ -98,11 +100,13 @@
test_succeed = test_pmuv3_overflow_interrupt();
break;
case REALM_REQ_FPU_FILL_CMD:
- fpu_state_fill_regs_and_template(&fpu_temp_rl);
+ fpu_state_write_rand(&rl_fpu_state_write);
test_succeed = true;
break;
case REALM_REQ_FPU_CMP_CMD:
- test_succeed = fpu_state_compare_template(&fpu_temp_rl);
+ fpu_state_read(&rl_fpu_state_read);
+ test_succeed = !fpu_state_compare(&rl_fpu_state_write,
+ &rl_fpu_state_read);
break;
case REALM_SVE_RDVL:
test_succeed = test_realm_sve_rdvl();