| From foo@baz Sun Jun 17 12:07:34 CEST 2018 |
| From: "Łukasz Stelmach" <l.stelmach@samsung.com> |
| Date: Wed, 4 Apr 2018 08:46:58 +0100 |
| Subject: ARM: 8758/1: decompressor: restore r1 and r2 just before jumping to the kernel |
| |
| From: "Łukasz Stelmach" <l.stelmach@samsung.com> |
| |
| [ Upstream commit f2ae9de019e4e2807d812ec4fe1df7c34788a0a0 ] |
| |
| The hypervisor setup before __enter_kernel destroys the value |
| sotred in r1. The value needs to be restored just before the jump. |
| |
| Fixes: 6b52f7bdb888 ("ARM: hyp-stub: Use r1 for the soft-restart address") |
| Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com> |
| Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/arm/boot/compressed/head.S | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/arm/boot/compressed/head.S |
| +++ b/arch/arm/boot/compressed/head.S |
| @@ -561,8 +561,6 @@ not_relocated: mov r0, #0 |
| bl decompress_kernel |
| bl cache_clean_flush |
| bl cache_off |
| - mov r1, r7 @ restore architecture number |
| - mov r2, r8 @ restore atags pointer |
| |
| #ifdef CONFIG_ARM_VIRT_EXT |
| mrs r0, spsr @ Get saved CPU boot mode |
| @@ -1365,6 +1363,8 @@ __hyp_reentry_vectors: |
| |
| __enter_kernel: |
| mov r0, #0 @ must be 0 |
| + mov r1, r7 @ restore architecture number |
| + mov r2, r8 @ restore atags pointer |
| ARM( mov pc, r4 ) @ call kernel |
| M_CLASS( add r4, r4, #1 ) @ enter in Thumb mode for M class |
| THUMB( bx r4 ) @ entry point is always ARM for A/R classes |