summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Castillo <juan.castillo@arm.com>2014-07-11 10:23:18 +0100
committerJuan Castillo <juan.castillo@arm.com>2014-07-16 17:11:16 +0100
commit08783e4326bdbc86e52f575001c35de260a93f78 (patch)
tree5edfcdea5f69e38c0faef917b1e99bd5d2291059
parenta1a441775f64da2cbbd42c4f2c6f818f93278fca (diff)
FVP: Ensure system reset wake-up results in cold boot
platform_get_entrypoint() did not consider that a wakeup due to System Reset Pin (by reading the power controller's PSYSR) requires a cold boot. As a result, the code would execute the warm boot path and eventually panic because entrypoint mailboxes are empty. This patch ensures that the following wake-up reasons result in cold boot: - Cold Power-on - System Reset Pin (includes reset by software) Fixes ARM-software/tf-issues#217 Change-Id: I65ae0a0f7a46548b575900a5aac107d352b0e2cd
-rw-r--r--plat/fvp/aarch64/fvp_helpers.S7
1 files changed, 5 insertions, 2 deletions
diff --git a/plat/fvp/aarch64/fvp_helpers.S b/plat/fvp/aarch64/fvp_helpers.S
index f856f460..3cd0b465 100644
--- a/plat/fvp/aarch64/fvp_helpers.S
+++ b/plat/fvp/aarch64/fvp_helpers.S
@@ -122,8 +122,11 @@ func platform_get_entrypoint
str w2, [x1, #PSYSR_OFF]
ldr w2, [x1, #PSYSR_OFF]
ubfx w2, w2, #PSYSR_WK_SHIFT, #PSYSR_WK_MASK
- cbnz w2, warm_reset
- mov x0, x2
+ cmp w2, #WKUP_PPONR
+ beq warm_reset
+ cmp w2, #WKUP_GICREQ
+ beq warm_reset
+ mov x0, #0
b exit
warm_reset:
/* ---------------------------------------------