kconfig: use pkg-config for ncurses detection
[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;
42
43 static inline uintptr_t get_hwtf_pc(struct hw_trapframe *hw_tf)
44 {
45         #warning "fix me"
46         return 0;
47         //return hw_tf->tf_rip;
48 }
49
50 static inline uintptr_t get_hwtf_fp(struct hw_trapframe *hw_tf)
51 {
52         /* do you even have frame pointers?  this is used for backtrace, but if
53          * you don't use FPs, we'll need to change up our parameters or
54          * something. */
55         #warning "fix me"
56         return 0;
57         //return hw_tf->tf_rbp;
58 }
59
60 static inline uintptr_t get_hwtf_sp(struct hw_trapframe *hw_tf)
61 {
62         /* do you even have frame pointers?  this is used for backtrace, but if
63          * you don't use FPs, we'll need to change up our parameters or
64          * something. */
65         #warning "fix me"
66         return 0;
67         //return hw_tf->tf_rsp;
68 }
69
70 static inline uintptr_t get_swtf_pc(struct sw_trapframe *sw_tf)
71 {
72         #warning "fix me"
73         return 0;
74         //return sw_tf->tf_rip;
75 }
76
77 static inline uintptr_t get_swtf_fp(struct sw_trapframe *sw_tf)
78 {
79         #warning "fix me"
80         return 0;
81         //return sw_tf->tf_rbp;
82 }
83
84 static inline uintptr_t get_swtf_sp(struct sw_trapframe *sw_tf)
85 {
86         #warning "fix me"
87         return 0;
88         //return sw_tf->tf_rsp;
89 }
90
91 static inline uintptr_t get_vmtf_pc(struct vm_trapframe *vm_tf)
92 {
93         #warning "fix me"
94         return 0;
95 }
96
97 static inline uintptr_t get_vmtf_fp(struct vm_trapframe *vm_tf)
98 {
99         #warning "fix me"
100         return 0;
101 }
102
103 static inline uintptr_t get_vmtf_sp(struct vm_trapframe *vm_tf)
104 {
105         #warning "fix me"
106         return 0;
107 }