ARM: 6502/1: Thumb-2: Fix CONFIG_THUMB2_KERNEL breakage in compressed/head.S

Some instruction operand combinations are used here which are nor
permitted in Thumb-2.

In particular, most uses of pc as an operand are disallowed in
Thumb-2, and deprecated in ARM from ARMv7 onwards.

The modified code introduced by this patch should be compatible
with all architecture versions >= v3, with or without
CONFIG_THUMB2_KERNEL.

Reviewed-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Dave Martin <dave.martin@linaro.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by Dave Martin and committed by Russell King bfa64c4a 6323875d

+4 -2
+4 -2
arch/arm/boot/compressed/head.S
··· 174 174 ldr sp, [r0, #28] 175 175 #ifdef CONFIG_AUTO_ZRELADDR 176 176 @ determine final kernel image address 177 - and r4, pc, #0xf8000000 177 + mov r4, pc 178 + and r4, r4, #0xf8000000 178 179 add r4, r4, #TEXT_OFFSET 179 180 #else 180 181 ldr r4, =zreladdr ··· 446 445 */ 447 446 mov r1, #0x1e 448 447 orr r1, r1, #3 << 10 449 - mov r2, pc, lsr #20 448 + mov r2, pc 449 + mov r2, r2, lsr #20 450 450 orr r1, r1, r2, lsl #20 451 451 add r0, r3, r2, lsl #2 452 452 str r1, [r0], #4