/** @file RISC-V Exception Handler library definition file. Copyright (c) 2019-2022, Hewlett Packard Enterprise Development LP. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef RISCV_CPU_EXECPTION_HANDLER_LIB_H_ #define RISCV_CPU_EXECPTION_HANDLER_LIB_H_ #include /** Trap Handler for S-mode **/ VOID SupervisorModeTrap ( VOID ); // // Index of SMode trap register // #define SMODE_TRAP_REGS_zero 0 #define SMODE_TRAP_REGS_ra 1 #define SMODE_TRAP_REGS_sp 2 #define SMODE_TRAP_REGS_gp 3 #define SMODE_TRAP_REGS_tp 4 #define SMODE_TRAP_REGS_t0 5 #define SMODE_TRAP_REGS_t1 6 #define SMODE_TRAP_REGS_t2 7 #define SMODE_TRAP_REGS_s0 8 #define SMODE_TRAP_REGS_s1 9 #define SMODE_TRAP_REGS_a0 10 #define SMODE_TRAP_REGS_a1 11 #define SMODE_TRAP_REGS_a2 12 #define SMODE_TRAP_REGS_a3 13 #define SMODE_TRAP_REGS_a4 14 #define SMODE_TRAP_REGS_a5 15 #define SMODE_TRAP_REGS_a6 16 #define SMODE_TRAP_REGS_a7 17 #define SMODE_TRAP_REGS_s2 18 #define SMODE_TRAP_REGS_s3 19 #define SMODE_TRAP_REGS_s4 20 #define SMODE_TRAP_REGS_s5 21 #define SMODE_TRAP_REGS_s6 22 #define SMODE_TRAP_REGS_s7 23 #define SMODE_TRAP_REGS_s8 24 #define SMODE_TRAP_REGS_s9 25 #define SMODE_TRAP_REGS_s10 26 #define SMODE_TRAP_REGS_s11 27 #define SMODE_TRAP_REGS_t3 28 #define SMODE_TRAP_REGS_t4 29 #define SMODE_TRAP_REGS_t5 30 #define SMODE_TRAP_REGS_t6 31 #define SMODE_TRAP_REGS_sepc 32 #define SMODE_TRAP_REGS_sstatus 33 #define SMODE_TRAP_REGS_stval 34 #define SMODE_TRAP_REGS_last 35 #define SMODE_TRAP_REGS_OFFSET(x) ((SMODE_TRAP_REGS_##x) * __SIZEOF_POINTER__) #define SMODE_TRAP_REGS_SIZE SMODE_TRAP_REGS_OFFSET(last) #pragma pack(1) typedef struct { // // Below follow the format of EFI_SYSTEM_CONTEXT. // UINT64 zero; UINT64 ra; UINT64 sp; UINT64 gp; UINT64 tp; UINT64 t0; UINT64 t1; UINT64 t2; UINT64 s0; UINT64 s1; UINT64 a0; UINT64 a1; UINT64 a2; UINT64 a3; UINT64 a4; UINT64 a5; UINT64 a6; UINT64 a7; UINT64 s2; UINT64 s3; UINT64 s4; UINT64 s5; UINT64 s6; UINT64 s7; UINT64 s8; UINT64 s9; UINT64 s10; UINT64 s11; UINT64 t3; UINT64 t4; UINT64 t5; UINT64 t6; UINT64 sepc; UINT64 sstatus; UINT64 stval; } SMODE_TRAP_REGISTERS; #pragma pack() #endif