mirror of
https://github.com/openhwgroup/cvw
synced 2025-01-30 16:34:28 +00:00
72 lines
2.1 KiB
C
72 lines
2.1 KiB
C
// 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
|