Remove the BUILD_INFO_FILE variable
[akaros.git] / kern / arch / riscv / riscv.h
1 #pragma once
2
3 #include <arch/pcr.h>
4
5 static __inline void
6 lcr3(uintptr_t val)
7 {
8         mtpcr(PCR_PTBR, val);
9 }
10
11 static __inline uintptr_t
12 rcr3(void)
13 {
14         return mfpcr(PCR_PTBR);
15 }
16
17 static __inline uintptr_t
18 read_pc(void)
19 {
20         uintptr_t pc;
21         asm ("rdpc %0" : "=r"(pc));
22         return pc;
23 }
24
25 static inline uintptr_t
26 read_bp(void)
27 {
28         /* frame pointer.  yes, read_bp is a shitty name.  i'll change all of them
29          * to read_fp when you read this and implement the function.  =) */
30         return 0;
31 }
32
33 static __inline void
34 send_ipi(uint32_t who, uint8_t vector)
35 {
36         mtpcr(PCR_SEND_IPI, who);
37 }
38
39 static __inline void
40 send_broadcast_ipi(uint8_t vector)
41 {
42 #warning "broadcast ipi?"
43         /* num_cores might not be visible here */
44         for (int i = 0; i < num_cores; i++)
45                 send_ipi(i, vector);
46 }
47
48 static __inline void
49 clear_ipi()
50 {
51         mtpcr(PCR_CLR_IPI, 0);
52 }