Changes to RISC-V supervisor mode
[akaros.git] / kern / arch / riscv / pcr.h
index 5eb5b43..f2ebaab 100644 (file)
 #define PCR_COUNT    4
 #define PCR_COMPARE  5
 #define PCR_CAUSE    6
-#define PCR_IPI      7
-#define PCR_MEMSIZE  8
-#define PCR_PTBR     9
+#define PCR_PTBR     7
+#define PCR_SEND_IPI 8
+#define PCR_CLR_IPI  9
+#define PCR_COREID   10
+#define PCR_K0       12
+#define PCR_K1       13
 #define PCR_TOHOST   16
 #define PCR_FROMHOST 17
 #define PCR_CONSOLE  18
-#define PCR_K0       24
-#define PCR_K1       25
-
-#define CR_FSR       0
-#define CR_TID       29
-
-#define MEMSIZE_SHIFT 12
-
-#define TIMER_PERIOD 0x1000
 
 #define IPI_IRQ   5
 #define TIMER_IRQ 7
-#define NIRQ 8
-
-#define CAUSE_EXCCODE 0x000000FF
-#define CAUSE_IP      0x0000FF00
-#define CAUSE_EXCCODE_SHIFT 0
-#define CAUSE_IP_SHIFT      8
 
 #define CAUSE_MISALIGNED_FETCH 0
 #define CAUSE_FAULT_FETCH 1
 #define CAUSE_ILLEGAL_INSTRUCTION 2
 #define CAUSE_PRIVILEGED_INSTRUCTION 3
 #define CAUSE_FP_DISABLED 4
-#define CAUSE_INTERRUPT 5
 #define CAUSE_SYSCALL 6
 #define CAUSE_BREAKPOINT 7
 #define CAUSE_MISALIGNED_LOAD 8
 #define CAUSE_FAULT_LOAD 10
 #define CAUSE_FAULT_STORE 11
 #define CAUSE_VECTOR_DISABLED 12
-#define NUM_CAUSES 13
+#define CAUSE_IRQ0 16
+#define CAUSE_IRQ1 17
+#define CAUSE_IRQ2 18
+#define CAUSE_IRQ3 19
+#define CAUSE_IRQ4 20
+#define CAUSE_IRQ5 21
+#define CAUSE_IRQ6 22
+#define CAUSE_IRQ7 23
+#define NUM_CAUSES 24
 
 #define ASM_CR(r)   _ASM_CR(r)
-#define _ASM_CR(r)  $cr##r
+#define _ASM_CR(r)  cr##r
 
 #ifndef __ASSEMBLER__
 
 #define mtpcr(reg,val) ({ long __tmp = (long)(val); \
-          asm volatile ("mtpcr %0,$cr%1"::"r"(__tmp),"i"(reg)); })
+          asm volatile ("mtpcr %0,cr%1"::"r"(__tmp),"i"(reg)); })
 
 #define mfpcr(reg) ({ long __tmp; \
-          asm volatile ("mfpcr %0,$cr%1" : "=r"(__tmp) : "i"(reg)); \
-          __tmp; })
-
-#define mtcr(reg,val) ({ long __tmp = (long)(val); \
-          asm volatile ("mtcr %0,$cr%1"::"r"(__tmp),"i"(reg)); })
-
-#define mfcr(reg) ({ long __tmp; \
-          asm volatile ("mfcr %0,$cr%1" : "=r"(__tmp) : "i"(reg)); \
+          asm volatile ("mfpcr %0,cr%1" : "=r"(__tmp) : "i"(reg)); \
           __tmp; })
 
 #define irq_disable() asm volatile("di")