Skip to content

Commit aae26dd

Browse files
author
Diego Ferrari
committed
[DEBUG] trace function
1 parent 69afb5a commit aae26dd

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

kernel/process/syscall.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,4 +397,16 @@ void sync_el0_handler_c(){
397397
syscall_depth--;
398398
save_syscall_return(result);
399399
process_restore();
400+
}
401+
402+
void trace(){
403+
uint64_t elr;
404+
asm volatile ("mrs %0, elr_el1" : "=r"(elr));
405+
uint64_t esr;
406+
asm volatile ("mrs %0, esr_el1" : "=r"(esr));
407+
uint64_t far;
408+
asm volatile ("mrs %0, far_el1" : "=r"(far));
409+
uint64_t sp;
410+
asm volatile ("mov %0, sp" : "=r"(sp));
411+
backtrace(sp, elr, (sizedptr){0,0}, (sizedptr){0,0});
400412
}

kernel/process/syscall.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
#include "types.h"
44

55
extern int syscall_depth;
6-
extern uintptr_t cpec;
6+
extern uintptr_t cpec;
7+
8+
void trace();

0 commit comments

Comments
 (0)