| // See LICENSE for license details. |
| |
| #ifndef _ENV_VIRTUAL_SINGLE_CORE_H |
| #define _ENV_VIRTUAL_SINGLE_CORE_H |
| |
| #include "../p/riscv_test.h" |
| |
| //----------------------------------------------------------------------- |
| // Begin Macro |
| //----------------------------------------------------------------------- |
| |
| #undef RVTEST_FP_ENABLE |
| #define RVTEST_FP_ENABLE fssr x0 |
| |
| #undef RVTEST_CODE_BEGIN |
| #define RVTEST_CODE_BEGIN \ |
| .text; \ |
| .global userstart; \ |
| userstart: \ |
| init |
| |
| //----------------------------------------------------------------------- |
| // Pass/Fail Macro |
| //----------------------------------------------------------------------- |
| |
| #undef RVTEST_PASS |
| #define RVTEST_PASS li a0, 1; scall |
| |
| #undef RVTEST_FAIL |
| #define RVTEST_FAIL sll a0, TESTNUM, 1; 1:beqz a0, 1b; or a0, a0, 1; scall; |
| |
| //----------------------------------------------------------------------- |
| // Data Section Macro |
| //----------------------------------------------------------------------- |
| |
| #undef RVTEST_DATA_END |
| #define RVTEST_DATA_END |
| |
| //----------------------------------------------------------------------- |
| // Supervisor mode definitions and macros |
| //----------------------------------------------------------------------- |
| |
| #define MAX_TEST_PAGES 63 // this must be the period of the LFSR below |
| #define LFSR_NEXT(x) (((((x)^((x)>>1)) & 1) << 5) | ((x) >> 1)) |
| |
| #define PGSHIFT 12 |
| #define PGSIZE (1UL << PGSHIFT) |
| |
| #define SIZEOF_TRAPFRAME_T ((__riscv_xlen / 8) * 36) |
| |
| #ifndef __ASSEMBLER__ |
| |
| typedef unsigned long pte_t; |
| #define LEVELS (sizeof(pte_t) == sizeof(uint64_t) ? 3 : 2) |
| #define PTIDXBITS (PGSHIFT - (sizeof(pte_t) == 8 ? 3 : 2)) |
| #define VPN_BITS (PTIDXBITS * LEVELS) |
| #define VA_BITS (VPN_BITS + PGSHIFT) |
| #define PTES_PER_PT (1UL << RISCV_PGLEVEL_BITS) |
| #define MEGAPAGE_SIZE (PTES_PER_PT * PGSIZE) |
| |
| typedef struct |
| { |
| long gpr[32]; |
| long sr; |
| long epc; |
| long badvaddr; |
| long cause; |
| } trapframe_t; |
| #endif |
| |
| #endif |