• Max Filippov's avatar
    xtensa: provide custom CALLER_ADDR* implementations · 3ae908c9
    Max Filippov authored
    Definition of CALLER_ADDR* through __builtin_return_address makes
    compiler insert calls to __xtensa_libgcc_window_spill, which in turn
    makes fast_syscall_spill_registers syscall that clobbers registers when
    called from the kernel mode, leading to invalid opcode exceptions on
    return to userspace.
    
    Provide definition for CALLER_ADDR0 as MAKE_PC_FROM_RA(a0, a1) and in
    case CONFIG_FRAME_POINTER is enabled extract CALLER_ADDR{1-3} from
    stack.
    Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: default avatarChris Zankel <chris@zankel.net>
    3ae908c9
stacktrace.c 2.28 KB