/** @file | |
RISC-V Exception Handler library definition file. | |
Copyright (c) 2019-2022, Hewlett Packard Enterprise Development LP. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef RISCV_CPU_EXECPTION_HANDLER_LIB_H_ | |
#define RISCV_CPU_EXECPTION_HANDLER_LIB_H_ | |
#include <Register/RiscV64/RiscVImpl.h> | |
/** | |
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 |