vmap: Use {map,unmap}_segment() helpers
[akaros.git] / kern / arch / riscv / riscv.h
index d534909..c1819c9 100644 (file)
@@ -1,5 +1,4 @@
-#ifndef ROS_INC_RISCV_H
-#define ROS_INC_RISCV_H
+#pragma once
 
 #include <arch/pcr.h>
 
@@ -23,30 +22,31 @@ read_pc(void)
        return pc;
 }
 
-static __inline void
-send_ipi(uint32_t who, uint8_t vector)
+static inline uintptr_t
+read_bp(void)
 {
-       mtpcr(PCR_SEND_IPI, who);
+       /* frame pointer.  yes, read_bp is a shitty name.  i'll change all of them
+        * to read_fp when you read this and implement the function.  =) */
+       return 0;
 }
 
 static __inline void
-clear_ipi()
+send_ipi(uint32_t who, uint8_t vector)
 {
-       mtpcr(PCR_CLR_IPI, 0);
+       mtpcr(PCR_SEND_IPI, who);
 }
 
-static __inline uint32_t
-read_fsr(void)
+static __inline void
+send_broadcast_ipi(uint8_t vector)
 {
-       uint32_t fsr;
-       asm volatile ("mffsr %0" : "=r"(fsr));
-       return fsr;
+#warning "broadcast ipi?"
+       /* num_cores might not be visible here */
+       for (int i = 0; i < num_cores; i++)
+               send_ipi(i, vector);
 }
 
 static __inline void
-write_fsr(uint32_t fsr)
+clear_ipi()
 {
-       asm volatile ("mtfsr %0" :: "r"(fsr));
+       mtpcr(PCR_CLR_IPI, 0);
 }
-
-#endif