test(handoff): fix register convention value on test_firmware_handoff()
According to recently firmware handsoff spec [1]'s "Register usage at handoff
boundary", Transfer List's signature value was changed from 0x40_b10b
(3 bytes) to 4a0f_b10b (4 bytes).
As updating of TL's signature, register value of x1/r1 should be:
In aarch32's r1 value should be
R1[23:0]: set to the TL signature (4a0f_b10b -> masked range value: 0f_b10b)
R1[31:24]: version of the register convention == 1
and
In aarch64's x1 value should be
X1[31:0]: set to the TL signature (4a0f_b10b)
X1[39:32]: version of the register convention == 1
X1[63:40]: MBZ
(See the [2] and [3]).
Therefore, it requires to separate mask and shift value for register
convention version field when sets each r1/x1.
Currently, TRNASFER_LIST test runs only in aarch64.
So, change the assert value in test_firmware_handoff() as
aarch64's x1 value when transfer list deliver.
Link: https://github.com/FirmwareHandoff/firmware_handoff [1]
Link: https://github.com/FirmwareHandoff/firmware_handoff/issues/32 [2]
Link: https://github.com/FirmwareHandoff/firmware_handoff/commit/5aa7aa1d3a1db75213e458d392b751f0707de027 [3]
Change-Id: Ibc86963cc5abda3aae4cb8fe34533be250e3dd95
Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
diff --git a/tftf/tests/misc_tests/test_firmware_handoff.c b/tftf/tests/misc_tests/test_firmware_handoff.c
index bd565ae..00cebd3 100644
--- a/tftf/tests/misc_tests/test_firmware_handoff.c
+++ b/tftf/tests/misc_tests/test_firmware_handoff.c
@@ -20,8 +20,8 @@
{
struct transfer_list_header *tl = (struct transfer_list_header *)ns_tl;
- assert((uint32_t)tl_signature ==
- (REGISTER_CONVENTION_VERSION_MASK | TRANSFER_LIST_SIGNATURE));
+ assert(tl_signature ==
+ TRANSFER_LIST_HANDOFF_X1_VALUE(TRANSFER_LIST_VERSION));
if (transfer_list_check_header(tl) == TL_OPS_NON) {
return TEST_RESULT_FAIL;