b632529b87432ff15e290e1127bcbbbd777236a2
[akaros.git] / kern / arch / riscv / ros / trapframe.h
1 #pragma once
2
3 #ifndef ROS_INC_TRAPFRAME_H
4 #error "Do not include include ros/arch/trapframe.h directly"
5 #endif
6
7 #include <ros/common.h>
8 #include <stdint.h>
9
10 struct hw_trapframe
11 {
12   uintptr_t gpr[32];
13   uintptr_t sr;
14   uintptr_t epc;
15   uintptr_t badvaddr;
16   long cause;
17 };
18
19 struct sw_trapframe {
20         /* TODO */
21 };
22
23 struct vm_trapframe {
24         /* TODO */
25 };
26
27 #define GPR_RA 1
28 #define GPR_SP 14
29 #define GPR_A0 18
30 #define GPR_A1 19
31
32 #error "fix this #define"
33 /* this is an error flag, reflected back in faults.  similar to flags that say
34  * if a PF was a write fault, read fault, or user fault. */
35 #define PF_VMR_BACKED (1 << 31)
36
37 typedef struct ancillary_state
38 {
39         uint64_t fpr[32];
40         uint32_t fsr;
41 } ancillary_state_t;