> 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:20:11  up   6:26,  2 users,  load average: 0.27, 0.25, 0.37
This commit is contained in:
tracer-ysyx 2024-03-20 19:20:11 +08:00 committed by xinyangli
parent f42498d96d
commit 5bae31990f

View file

@ -8,7 +8,7 @@
// Put this into another file // Put this into another file
#ifdef CONFIG_FTRACE #ifdef CONFIG_FTRACE
static vaddr_t ftrace_stack[CONFIG_FTRACE_STACK_SIZE] = {0}; static vaddr_t ftrace_stack[CONFIG_FTRACE_STACK_SIZE] = {0};
static vaddr_t ftrace_stack_pos = 0; static vaddr_t ftrace_stack_len = 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,16 +101,20 @@ failed_nosym:
} }
void ftrace_call(vaddr_t pc, vaddr_t addr) { void ftrace_call(vaddr_t pc, vaddr_t addr) {
Assert(ftrace_stack_pos < CONFIG_FTRACE_STACK_SIZE, "Ftrace stack exceed limit, consider turn off ftrace or increse FTRACE_STACK_SIZE."); Assert(ftrace_stack_len < CONFIG_FTRACE_STACK_SIZE,
ftrace_stack[ftrace_stack_pos++] = pc + 4; "Ftrace stack exceed size limit, consider turn off ftrace or increase "
Trace("%*s0x%x call [%s@0x%x]", ftrace_stack_pos, "", pc, get_func_name(addr), addr); "FTRACE_STACK_SIZE.");
ftrace_stack[ftrace_stack_len] = pc + 4;
Trace("%*s0x%x call [%s@0x%x]", ftrace_stack_len, "", pc, get_func_name(addr),
addr);
ftrace_stack_len++;
} }
void ftrace_return(vaddr_t pc, vaddr_t addr) { void ftrace_return(vaddr_t pc, vaddr_t addr) {
--ftrace_stack_len;
for (; addr != ftrace_stack[ftrace_stack_pos] && ftrace_stack_pos >= 0; for (; addr != ftrace_stack[ftrace_stack_len] && ftrace_stack_len >= 0;
ftrace_stack_pos--) { ftrace_stack_len--) {
Trace("%*s0x%x ret [%s@0x%x] ", ftrace_stack_pos, "", pc, get_func_name(addr), addr); Trace("%*s0x%x ret [%s@0x%x] ", ftrace_stack_len, "", pc, get_func_name(addr), addr);
} }
// Trace("%*s0x%x ret [%s@0x%x]", 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);
} }