diff --git a/Kernel/KSyms.cpp b/Kernel/KSyms.cpp index 0c3cb45f5a..6b9a8c0099 100644 --- a/Kernel/KSyms.cpp +++ b/Kernel/KSyms.cpp @@ -168,14 +168,8 @@ void dump_backtrace(PrintToScreen print_to_screen) return; TemporaryChange change(in_dump_backtrace, true); TemporaryChange disable_kmalloc_stacks(g_dump_kmalloc_stacks, false); - FlatPtr base_pointer; -#if ARCH(I386) - asm volatile("movl %%ebp, %%eax" - : "=a"(base_pointer)); -#else - asm volatile("movq %%rbp, %%rax" - : "=a"(base_pointer)); -#endif + + FlatPtr base_pointer = (FlatPtr)__builtin_frame_address(0); dump_backtrace_impl(base_pointer, g_kernel_symbols_available, print_to_screen); } diff --git a/Kernel/PerformanceEventBuffer.cpp b/Kernel/PerformanceEventBuffer.cpp index 8f930cda6b..2f9f6f8e42 100644 --- a/Kernel/PerformanceEventBuffer.cpp +++ b/Kernel/PerformanceEventBuffer.cpp @@ -24,14 +24,7 @@ PerformanceEventBuffer::PerformanceEventBuffer(NonnullOwnPtr buffer) NEVER_INLINE ErrorOr PerformanceEventBuffer::append(int type, FlatPtr arg1, FlatPtr arg2, StringView arg3, Thread* current_thread, FlatPtr arg4, u64 arg5, ErrorOr arg6) { - FlatPtr base_pointer; -#if ARCH(I386) - asm volatile("movl %%ebp, %%eax" - : "=a"(base_pointer)); -#else - asm volatile("movq %%rbp, %%rax" - : "=a"(base_pointer)); -#endif + FlatPtr base_pointer = (FlatPtr)__builtin_frame_address(0); return append_with_ip_and_bp(current_thread->pid(), current_thread->tid(), 0, base_pointer, type, 0, arg1, arg2, arg3, arg4, arg5, arg6); }