CLEANUP: Remove trailing whitespace throughout the kernel.
[akaros.git] / kern / arch / riscv / kdebug.c
index e5dbe01..2be24b5 100644 (file)
@@ -1,7 +1,3 @@
-#ifdef __SHARC__
-#pragma nosharc
-#endif
-
 #include <stab.h>
 #include <string.h>
 #include <assert.h>
 
 #include <ros/memlayout.h>
 
-int debuginfo_eip(uintptr_t eip, struct eipdebuginfo *info)
+/* Here's the old backtrace, remove it once gen_backtrace is done: */
+#if 0
+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;
        }
+}
+#endif
+
+void gen_backtrace(void (*pfunc)(void *, const char *), void *opaque)
+{
+       printk("\n\tTODO: %s on riscv\n\n", __func__);
+}
+
+/* can either implement these, or use the x86 ones globally and limit the
+ * arch-indep stuff. */
+size_t backtrace_list(uintptr_t pc, uintptr_t fp, uintptr_t *pcs,
+                      size_t nr_slots)
+{
+       printk("\n\tTODO: %s on riscv\n\n", __func__);
        return 0;
 }
 
-void
-backtrace(void)
+size_t backtrace_user_list(uintptr_t pc, uintptr_t fp, uintptr_t *pcs,
+                                                  size_t nr_slots)
 {
+       printk("\n\tTODO: %s on riscv\n\n", __func__);
+       return 0;
 }