aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandrine Bailleux <sandrine.bailleux@arm.com>2016-08-18 09:24:40 +0100
committerSandrine Bailleux <sandrine.bailleux@arm.com>2016-08-19 14:04:03 +0100
commit8c9e1af0b5df7ee1ff32e6192ee0252315900895 (patch)
tree1fa817bf424b2e234230ae48bd2bb09567fba91d
parent974603b554a71872d8e0a4aca02ba9cf73b1c3fe (diff)
downloadarm-trusted-firmware-8c9e1af0b5df7ee1ff32e6192ee0252315900895.tar.gz
Add WFI in platform's unexpected error handlers
This patch adds a WFI instruction in the default implementations of plat_error_handler() and plat_panic_handler(). This potentially reduces power consumption by allowing the hardware to enter a low-power state. The same change has been made to the FVP and Juno platform ports. Change-Id: Ia4e6e1e5bf1ed42efbba7d0ebbad7be8d5f9f173
-rw-r--r--plat/arm/board/fvp/fvp_err.c5
-rw-r--r--plat/arm/board/juno/juno_err.c5
-rw-r--r--plat/common/aarch64/platform_helpers.S2
3 files changed, 8 insertions, 4 deletions
diff --git a/plat/arm/board/fvp/fvp_err.c b/plat/arm/board/fvp/fvp_err.c
index 7867e49c..f8ea6a03 100644
--- a/plat/arm/board/fvp/fvp_err.c
+++ b/plat/arm/board/fvp/fvp_err.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -28,6 +28,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <arch_helpers.h>
#include <board_arm_def.h>
#include <debug.h>
#include <errno.h>
@@ -61,5 +62,5 @@ void plat_error_handler(int err)
/* Loop until the watchdog resets the system */
for (;;)
- ;
+ wfi();
}
diff --git a/plat/arm/board/juno/juno_err.c b/plat/arm/board/juno/juno_err.c
index 497cc7fa..fa19da76 100644
--- a/plat/arm/board/juno/juno_err.c
+++ b/plat/arm/board/juno/juno_err.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -28,6 +28,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <arch_helpers.h>
#include <errno.h>
#include <v2m_def.h>
@@ -45,5 +46,5 @@ void plat_error_handler(int err)
/* Loop until the watchdog resets the system */
for (;;)
- ;
+ wfi();
}
diff --git a/plat/common/aarch64/platform_helpers.S b/plat/common/aarch64/platform_helpers.S
index 08638303..a134ded0 100644
--- a/plat/common/aarch64/platform_helpers.S
+++ b/plat/common/aarch64/platform_helpers.S
@@ -130,6 +130,7 @@ endfunc bl1_plat_prepare_exit
* -----------------------------------------------------
*/
func plat_error_handler
+ wfi
b plat_error_handler
endfunc plat_error_handler
@@ -139,5 +140,6 @@ endfunc plat_error_handler
* -----------------------------------------------------
*/
func plat_panic_handler
+ wfi
b plat_panic_handler
endfunc plat_panic_handler