IRQ routing
[akaros.git] / kern / arch / riscv / kdebug.c
index 99fd293..de1453a 100644 (file)
 
 #include <ros/memlayout.h>
 
-int debuginfo_eip(uintptr_t eip, struct eipdebuginfo *info)
+void backtrace(void)
 {
-       // DWARF-2 works for RISC-V, so in principle this is implementable.
-       
-       static bool once = TRUE;
-       if (once) {
-               warn("Not implemented for RISC-V");
-               once = FALSE;
+       void **fp;
+       asm volatile ("move %0, s0" : "=r"(fp));
+
+       for (int i = 0; ; i++) {
+               void *pc = fp[-1], *sp = fp[-2];
+               printk("[%d] pc %p sp %p\n", i, pc, sp);
+               if (pc == 0 || (void**)sp < fp)
+                       break;
+               fp = (void**)sp;
        }
-       return 0;
 }
 
-void
-backtrace(void)
+void backtrace_frame(uintptr_t pc, uintptr_t fp)
 {
-       static bool once = TRUE;
-       if (once) {
-               warn("Not implemented for RISC-V");
-               once = FALSE;
-       }
+       printk("\n\tTODO: backtrace frame on riscv\n\n");
 }