1661fe480SJames Raphael Tiovalen /* SPDX-License-Identifier: GPL-2.0-only */ 2661fe480SJames Raphael Tiovalen #ifndef _RISCV_SBI_TESTS_H_ 3661fe480SJames Raphael Tiovalen #define _RISCV_SBI_TESTS_H_ 4661fe480SJames Raphael Tiovalen 5afd2cae5SJames Raphael Tiovalen #define SBI_HSM_TEST_DONE (1 << 0) 6afd2cae5SJames Raphael Tiovalen #define SBI_HSM_TEST_MAGIC_A1 (1 << 1) 7afd2cae5SJames Raphael Tiovalen #define SBI_HSM_TEST_HARTID_A0 (1 << 2) 8afd2cae5SJames Raphael Tiovalen #define SBI_HSM_TEST_SATP (1 << 3) 9afd2cae5SJames Raphael Tiovalen #define SBI_HSM_TEST_SIE (1 << 4) 10afd2cae5SJames Raphael Tiovalen 11afd2cae5SJames Raphael Tiovalen #define SBI_HSM_MAGIC 0x453 12afd2cae5SJames Raphael Tiovalen 13afd2cae5SJames Raphael Tiovalen #define SBI_HSM_MAGIC_IDX 0 14afd2cae5SJames Raphael Tiovalen #define SBI_HSM_HARTID_IDX 1 15afd2cae5SJames Raphael Tiovalen #define SBI_HSM_NUM_OF_PARAMS 2 16afd2cae5SJames Raphael Tiovalen 172ffe016fSAndrew Jones #define SBI_SUSP_MAGIC_IDX 0 182ffe016fSAndrew Jones #define SBI_SUSP_CSRS_IDX 1 192ffe016fSAndrew Jones #define SBI_SUSP_HARTID_IDX 2 202ffe016fSAndrew Jones #define SBI_SUSP_TESTNUM_IDX 3 212ffe016fSAndrew Jones #define SBI_SUSP_RESULTS_IDX 4 222ffe016fSAndrew Jones 232ffe016fSAndrew Jones #define SBI_CSR_SSTATUS_IDX 0 242ffe016fSAndrew Jones #define SBI_CSR_SIE_IDX 1 252ffe016fSAndrew Jones #define SBI_CSR_STVEC_IDX 2 262ffe016fSAndrew Jones #define SBI_CSR_SSCRATCH_IDX 3 272ffe016fSAndrew Jones #define SBI_CSR_SATP_IDX 4 282ffe016fSAndrew Jones 292ffe016fSAndrew Jones #define SBI_SUSP_MAGIC 0x505b 302ffe016fSAndrew Jones 312ffe016fSAndrew Jones #define SBI_SUSP_TEST_SATP (1 << 0) 322ffe016fSAndrew Jones #define SBI_SUSP_TEST_SIE (1 << 1) 332ffe016fSAndrew Jones #define SBI_SUSP_TEST_HARTID (1 << 2) 342ffe016fSAndrew Jones #define SBI_SUSP_TEST_MASK 7 35661fe480SJames Raphael Tiovalen 36*f9a088b4SAndrew Jones #ifndef __ASSEMBLY__ 37*f9a088b4SAndrew Jones #include <asm/sbi.h> 38*f9a088b4SAndrew Jones 39*f9a088b4SAndrew Jones #define sbiret_report(ret, expected_error, expected_value, fmt, ...) ({ \ 40*f9a088b4SAndrew Jones long ex_err = expected_error; \ 41*f9a088b4SAndrew Jones long ex_val = expected_value; \ 42*f9a088b4SAndrew Jones bool ch_err = (ret)->error == ex_err; \ 43*f9a088b4SAndrew Jones bool ch_val = (ret)->value == ex_val; \ 44*f9a088b4SAndrew Jones bool pass = report(ch_err && ch_val, fmt, ##__VA_ARGS__); \ 45*f9a088b4SAndrew Jones \ 46*f9a088b4SAndrew Jones if (!pass) \ 47*f9a088b4SAndrew Jones report_info(fmt ": expected (error: %ld, value: %ld), received: (error: %ld, value %ld)", \ 48*f9a088b4SAndrew Jones ##__VA_ARGS__, ex_err, ex_val, (ret)->error, (ret)->value); \ 49*f9a088b4SAndrew Jones \ 50*f9a088b4SAndrew Jones pass; \ 51*f9a088b4SAndrew Jones }) 52*f9a088b4SAndrew Jones 53*f9a088b4SAndrew Jones #define sbiret_check(ret, expected_error, expected_value) \ 54*f9a088b4SAndrew Jones sbiret_report(ret, expected_error, expected_value, "check sbi.error and sbi.value") 55*f9a088b4SAndrew Jones 56*f9a088b4SAndrew Jones #endif /* __ASSEMBLY__ */ 57661fe480SJames Raphael Tiovalen #endif /* _RISCV_SBI_TESTS_H_ */ 58