aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtienne Carriere <etienne.carriere@linaro.org>2020-02-14 17:16:52 +0100
committerJérôme Forissier <jerome@forissier.org>2020-02-17 09:18:37 +0100
commit52ae776eaddaedde1dfede231cf02cae32aa0f42 (patch)
tree6236c3a8ee298ea4297ff9f26232bd4a292c6b9e
parent7c1d10cede85fa325eeb345e429dfa26b4e8a3c5 (diff)
core: aslr: fix cached_mem_end update
Fix update of cache_mem_end that corrupts CPU register R4 used to store a boot argument in Aarch32. Fixes: 487fd6828322 ("core: aslr: apply load offset to cached_mem_end") Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
-rw-r--r--core/arch/arm/kernel/generic_entry_a32.S7
1 files changed, 4 insertions, 3 deletions
diff --git a/core/arch/arm/kernel/generic_entry_a32.S b/core/arch/arm/kernel/generic_entry_a32.S
index c4fa7652..008bfb2e 100644
--- a/core/arch/arm/kernel/generic_entry_a32.S
+++ b/core/arch/arm/kernel/generic_entry_a32.S
@@ -505,9 +505,10 @@ shadow_stack_access_ok:
* Update cached_mem_end address with load offset since it was
* calculated before relocation.
*/
- ldr r4, cached_mem_end
- add r4, r4, r0
- str r4, cached_mem_end
+ ldr r2, cached_mem_end
+ add r2, r2, r0
+ str r2, cached_mem_end
+
bl relocate
#endif