• James Morse's avatar
    arm64: reduce stack use in irq_handler · 971c67ce
    James Morse authored
    The code for switching to irq_stack stores three pieces of information on
    the stack, fp+lr, as a fake stack frame (that lets us walk back onto the
    interrupted tasks stack frame), and the address of the struct pt_regs that
    contains the register values from kernel entry. (which dump_backtrace()
    will print in any stack trace).
    
    To reduce this, we store fp, and the pointer to the struct pt_regs.
    unwind_frame() can recognise this as the irq_stack dummy frame, (as it only
    appears at the top of the irq_stack), and use the struct pt_regs values
    to find the missing interrupted link-register.
    Suggested-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    971c67ce
stacktrace.c 4.43 KB