Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: entry: avoid clobbering R9 in IRQ handler

Avoid using R9 in the IRQ handler code, as the entry code uses it for
tsk, and expects it to remain untouched between the IRQ entry and exit
code.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

+4 -5
+4 -5
arch/arm/kernel/entry-armv.S
··· 38 38 #ifdef CONFIG_UNWINDER_ARM 39 39 mov fpreg, sp @ Preserve original SP 40 40 #else 41 - mov r8, fp @ Preserve original FP 42 - mov r9, sp @ Preserve original SP 41 + mov r7, fp @ Preserve original FP 42 + mov r8, sp @ Preserve original SP 43 43 #endif 44 44 ldr_this_cpu sp, irq_stack_ptr, r2, r3 45 - 46 45 .if \from_user == 0 47 46 UNWIND( .setfp fpreg, sp ) 48 47 @ ··· 81 82 #ifdef CONFIG_UNWINDER_ARM 82 83 mov sp, fpreg @ Restore original SP 83 84 #else 84 - mov fp, r8 @ Restore original FP 85 - mov sp, r9 @ Restore original SP 85 + mov fp, r7 @ Restore original FP 86 + mov sp, r8 @ Restore original SP 86 87 #endif // CONFIG_UNWINDER_ARM 87 88 #endif // CONFIG_IRQSTACKS 88 89 .endm