vmap: Use {map,unmap}_segment() helpers
[akaros.git] / kern / arch / riscv / arch.h
index 3d257ab..9e6a18a 100644 (file)
@@ -1,5 +1,4 @@
-#ifndef ROS_INC_ARCH_H
-#define ROS_INC_ARCH_H
+#pragma once
 
 #include <ros/arch/arch.h>
 #include <arch/mmu.h>
@@ -12,7 +11,7 @@
 #define ARCH_CL_SIZE 64
 
 void print_cpuinfo(void);
-void show_mapping(uintptr_t start, size_t size);
+void show_mapping(pgdir_t pgdir, uintptr_t start, size_t size);
 void backtrace(void);
 
 static __inline void breakpoint(void)
@@ -26,7 +25,7 @@ static __inline void tlbflush(void)
 }
 
 static __inline void invlpg(void *addr)
-{ 
+{
        tlbflush();
 }
 
@@ -102,7 +101,7 @@ static __inline void disable_irqsave(int8_t* state)
 {
        if ((*state == 0) && irq_is_enabled())
                disable_irq();
-       else 
+       else
                (*state)--;
 }
 
@@ -142,6 +141,11 @@ static __inline int core_id(void)
        return get_os_coreid(hw_core_id());
 }
 
+static __inline int core_id_early(void)
+{
+       return core_id();
+}
+
 static __inline void cache_flush(void)
 {
 }
@@ -154,4 +158,17 @@ static __inline void reboot(void)
 
 extern void cpu_halt(void);
 
-#endif /* !ROS_INC_ARCH_H */
+static inline void prefetch(void *addr)
+{
+}
+
+static inline void prefetchw(void *addr)
+{
+}
+
+/* Resets a stack pointer to sp, then calls f(arg) */
+static inline void __attribute__((noreturn))
+__reset_stack_pointer(void *arg, uintptr_t sp, void (*f)(void *))
+{
+       #error "implement me"
+}