Fix syscall_async's signature
[akaros.git] / kern / arch / x86 / kdebug.c
index 530ddd8..ec8795b 100644 (file)
@@ -312,11 +312,11 @@ size_t backtrace_list(uintptr_t pc, uintptr_t fp, uintptr_t *pcs,
                 * kernel addrs, but now we also bt user stacks. (dangerous!) */
                pcs[nr_pcs++] = pc;
                printd("PC %p FP %p\n", pc, fp);
                 * kernel addrs, but now we also bt user stacks. (dangerous!) */
                pcs[nr_pcs++] = pc;
                printd("PC %p FP %p\n", pc, fp);
-               /* PC becomes the retaddr - 1.  the -1 is to put our PC back inside the
-                * function that called us.  this was necessary in case we called as the
-                * last instruction in a function (would have to never return).  not
-                * sure how necessary this still is. */
-               pc = *(uintptr_t*)(fp + sizeof(uintptr_t)) - 1;
+               /* We used to set PC = retaddr - 1, where the -1 would put our PC back
+                * inside the function that called us.  This was for obscure cases where
+                * a no-return function calls another function and has no other code
+                * after the function call.  Or something. */
+               pc = *(uintptr_t*)(fp + sizeof(uintptr_t));
                fp = *(uintptr_t*)fp;
        }
        return nr_pcs;
                fp = *(uintptr_t*)fp;
        }
        return nr_pcs;