From: Greg Kroah-Hartman Date: Fri, 28 Apr 2017 07:46:07 +0000 (+0200) Subject: 3.18-stable patches X-Git-Tag: v4.4.65~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cd1b0ce6806508270148bf41e3a92cd3335ef644;p=thirdparty%2Fkernel%2Fstable-queue.git 3.18-stable patches added patches: arm-8383-1-nommu-avoid-deprecated-source-register-on-mov.patch --- diff --git a/queue-3.18/arm-8383-1-nommu-avoid-deprecated-source-register-on-mov.patch b/queue-3.18/arm-8383-1-nommu-avoid-deprecated-source-register-on-mov.patch new file mode 100644 index 00000000000..b84a482c5de --- /dev/null +++ b/queue-3.18/arm-8383-1-nommu-avoid-deprecated-source-register-on-mov.patch @@ -0,0 +1,99 @@ +From 970d96f9a81b0dd83ddd8bce0e5e1ba31881c5f5 Mon Sep 17 00:00:00 2001 +From: Stefan Agner +Date: Tue, 2 Jun 2015 20:43:24 +0100 +Subject: ARM: 8383/1: nommu: avoid deprecated source register on mov + +From: Stefan Agner + +commit 970d96f9a81b0dd83ddd8bce0e5e1ba31881c5f5 upstream. + +In Thumb2 mode, the stack register r13 is deprecated if the +destination register is the program counter (r15). Similar to +head.S, head-nommu.S uses r13 to store the return address used +after configuring the CPU's CP15 register. However, since we do +not enable a MMU, there will be no address switch and it is +possible to use branch with link instruction to call +__after_proc_init. + +Avoid using r13 completely by using bl to call __after_proc_init +and get rid of __secondary_switched. + +Beside removing unnecessary complexity, this also fixes a +compiler warning when compiling a !MMU kernel: +Warning: Use of r13 as a source register is deprecated when r15 +is the destination register. + +Tested-by: Maxime Coquelin +Signed-off-by: Stefan Agner +Signed-off-by: Russell King +Signed-off-by: Arnd Bergmann +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/kernel/head-nommu.S | 20 +++++++------------- + 1 file changed, 7 insertions(+), 13 deletions(-) + +--- a/arch/arm/kernel/head-nommu.S ++++ b/arch/arm/kernel/head-nommu.S +@@ -77,13 +77,12 @@ ENTRY(stext) + orr r6, r6, #(1 << MPU_RSR_EN) @ Set region enabled bit + bl __setup_mpu + #endif +- ldr r13, =__mmap_switched @ address to jump to after +- @ initialising sctlr + adr lr, BSYM(1f) @ return (PIC) address + ARM( add pc, r10, #PROCINFO_INITFUNC ) + THUMB( add r12, r10, #PROCINFO_INITFUNC ) + THUMB( ret r12 ) +- 1: b __after_proc_init ++1: bl __after_proc_init ++ b __mmap_switched + ENDPROC(stext) + + #ifdef CONFIG_SMP +@@ -106,8 +105,7 @@ ENTRY(secondary_startup) + movs r10, r5 @ invalid processor? + beq __error_p @ yes, error 'p' + +- adr r4, __secondary_data +- ldmia r4, {r7, r12} ++ ldr r7, __secondary_data + + #ifdef CONFIG_ARM_MPU + /* Use MPU region info supplied by __cpu_up */ +@@ -115,23 +113,19 @@ ENTRY(secondary_startup) + bl __setup_mpu @ Initialize the MPU + #endif + +- adr lr, BSYM(__after_proc_init) @ return address +- mov r13, r12 @ __secondary_switched address ++ adr lr, BSYM(1f) @ return (PIC) address + ARM( add pc, r10, #PROCINFO_INITFUNC ) + THUMB( add r12, r10, #PROCINFO_INITFUNC ) + THUMB( ret r12 ) +-ENDPROC(secondary_startup) +- +-ENTRY(__secondary_switched) ++1: bl __after_proc_init + ldr sp, [r7, #8] @ set up the stack pointer + mov fp, #0 + b secondary_start_kernel +-ENDPROC(__secondary_switched) ++ENDPROC(secondary_startup) + + .type __secondary_data, %object + __secondary_data: + .long secondary_data +- .long __secondary_switched + #endif /* CONFIG_SMP */ + + /* +@@ -164,7 +158,7 @@ __after_proc_init: + #endif + mcr p15, 0, r0, c1, c0, 0 @ write control reg + #endif /* CONFIG_CPU_CP15 */ +- ret r13 ++ ret lr + ENDPROC(__after_proc_init) + .ltorg + diff --git a/queue-3.18/series b/queue-3.18/series index 2ad838370f6..69e4c87e866 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -41,3 +41,4 @@ arm-8296-1-cache-l2x0-clean-up-aurora-cache-handling.patch aic94xx-skip-reading-user-settings-if-flash-is-not-found.patch mips-ralink-cosmetic-change-to-prom_init.patch kconfig-tinyconfig-provide-whole-choice-blocks-to-avoid-warnings.patch +arm-8383-1-nommu-avoid-deprecated-source-register-on-mov.patch