> compile NEMU

ysyx_22040000 李心杨
Linux calcite 6.6.19 #1-NixOS SMP PREEMPT_DYNAMIC Fri Mar  1 12:35:11 UTC 2024 x86_64 GNU/Linux
 19:11:56  up   6:17,  2 users,  load average: 0.47, 0.60, 0.53
This commit is contained in:
tracer-ysyx 2024-03-20 19:11:56 +08:00 committed by xinyangli
parent 4293898e4b
commit 0eeabef770

View file

@ -7,8 +7,8 @@
// Put this into another file // Put this into another file
#ifdef CONFIG_FTRACE #ifdef CONFIG_FTRACE
// static vaddr_t g_function_stack[CONFIG_FTRACE_STACK_SIZE] = {0}; static vaddr_t ftrace_stack[CONFIG_FTRACE_STACK_SIZE] = {0};
// static vaddr_t *g_function_start = NULL; static vaddr_t ftrace_stack_pos = 0;
func_t *func_table = NULL; func_t *func_table = NULL;
int func_table_len = 0, func_table_size = 8; int func_table_len = 0, func_table_size = 8;
#endif #endif
@ -101,10 +101,15 @@ failed_nosym:
} }
void ftrace_call(vaddr_t pc, vaddr_t addr) { void ftrace_call(vaddr_t pc, vaddr_t addr) {
Trace("0x%x(%s) call [%s@0x%x]", pc, get_func_name(pc), get_func_name(addr), addr); Assert(ftrace_stack_pos < CONFIG_FTRACE_STACK_SIZE, "Ftrace stack exceed limit, consider turn off ftrace or increse FTRACE_STACK_SIZE.");
ftrace_stack[ftrace_stack_pos++] = pc + 4;
Trace("%*s0x%x call [%s@0x%x]", ftrace_stack_pos, "", pc, get_func_name(addr), addr);
} }
void ftrace_return(vaddr_t pc, vaddr_t addr) { void ftrace_return(vaddr_t pc, vaddr_t addr) {
Trace("0x%x(%s) ret [%s@0x%x]", pc, get_func_name(pc), get_func_name(addr), addr); for (; addr != ftrace_stack[ftrace_stack_pos] && ftrace_stack_pos >= 0;
ftrace_stack_pos--) {
Trace("%*s0x%x [%s@0x%x] <Tail call>", ftrace_stack_pos, "", pc, get_func_name(addr), addr);
}
Trace("%*s0x%x ret [%s@0x%x]", ftrace_stack_pos, "", pc, get_func_name(addr), addr);
} }