blob: a1366d3474501e905ed7a2fc7f11fb15d1476be5 [file] [log] [blame]
J-Alves0e1e7ca2021-01-25 14:11:06 +00001/*
Shruti Gupta38133fa2023-04-19 17:00:38 +01002 * Copyright (c) 2023, Arm Limited. All rights reserved.
J-Alves0e1e7ca2021-01-25 14:11:06 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
J-Alveseeb25472021-03-11 09:54:21 +00007#include "cactus_message_loop.h"
J-Alves0e1e7ca2021-01-25 14:11:06 +00008#include "cactus_test_cmds.h"
Shruti Gupta38133fa2023-04-19 17:00:38 +01009#include <fpu.h>
J-Alves0e1e7ca2021-01-25 14:11:06 +000010#include "spm_common.h"
11
12/*
Shruti Gupta38133fa2023-04-19 17:00:38 +010013 * Note Test must exercise FILL and COMPARE command in
14 * sequence and on same CPU.
15 */
Arunachalam Ganapathy7e514f62023-08-30 13:27:36 +010016static fpu_state_t sp_fpu_state_write;
17static fpu_state_t sp_fpu_state_read;
Shruti Gupta38133fa2023-04-19 17:00:38 +010018static unsigned int core_pos;
19/*
J-Alves0e1e7ca2021-01-25 14:11:06 +000020 * Fill SIMD vectors from secure world side with a unique value.
J-Alves0e1e7ca2021-01-25 14:11:06 +000021 */
22CACTUS_CMD_HANDLER(req_simd_fill, CACTUS_REQ_SIMD_FILL_CMD)
23{
Shruti Gupta38133fa2023-04-19 17:00:38 +010024 core_pos = platform_get_core_pos(read_mpidr_el1());
Arunachalam Ganapathy7e514f62023-08-30 13:27:36 +010025 fpu_state_write_rand(&sp_fpu_state_write);
J-Alves0e1e7ca2021-01-25 14:11:06 +000026 return cactus_response(ffa_dir_msg_dest(*args),
27 ffa_dir_msg_source(*args),
28 CACTUS_SUCCESS);
29}
Shruti Gupta38133fa2023-04-19 17:00:38 +010030
31/*
32 * compare FPU state(SIMD vectors, FPCR, FPSR) from secure world side with the previous
33 * SIMD_SECURE_VALUE unique value.
34 */
35CACTUS_CMD_HANDLER(req_simd_compare, CACTUS_CMP_SIMD_VALUE_CMD)
36{
37 bool test_succeed = false;
38
39 unsigned int core_pos1 = platform_get_core_pos(read_mpidr_el1());
40 if (core_pos1 == core_pos) {
Arunachalam Ganapathy7e514f62023-08-30 13:27:36 +010041 fpu_state_read(&sp_fpu_state_read);
42 if (fpu_state_compare(&sp_fpu_state_write,
43 &sp_fpu_state_read) == 0) {
44 test_succeed = true;
45 }
Shruti Gupta38133fa2023-04-19 17:00:38 +010046 }
47 return cactus_response(ffa_dir_msg_dest(*args),
48 ffa_dir_msg_source(*args),
49 test_succeed ? CACTUS_SUCCESS : CACTUS_ERROR);
50}