ARM: entry: avoid clobbering R9 in IRQ handler
authorArd Biesheuvel <ardb@kernel.org>
Mon, 24 Jan 2022 18:36:03 +0000 (19:36 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Tue, 25 Jan 2022 08:53:52 +0000 (09:53 +0100)
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>
arch/arm/kernel/entry-armv.S

index b58bda5..038aabb 100644 (file)
 #ifdef CONFIG_UNWINDER_ARM
        mov     fpreg, sp               @ Preserve original SP
 #else
-       mov     r8, fp                  @ Preserve original FP
-       mov     r9, sp                  @ Preserve original SP
+       mov     r7, fp                  @ Preserve original FP
+       mov     r8, sp                  @ Preserve original SP
 #endif
        ldr_this_cpu sp, irq_stack_ptr, r2, r3
-
        .if     \from_user == 0
 UNWIND(        .setfp  fpreg, sp               )
        @
@@ -82,8 +81,8 @@ UNWIND(       .setfp  fpreg, sp               )
 #ifdef CONFIG_UNWINDER_ARM
        mov     sp, fpreg               @ Restore original SP
 #else
-       mov     fp, r8                  @ Restore original FP
-       mov     sp, r9                  @ Restore original SP
+       mov     fp, r7                  @ Restore original FP
+       mov     sp, r8                  @ Restore original SP
 #endif // CONFIG_UNWINDER_ARM
 #endif // CONFIG_IRQSTACKS
        .endm