diff options
author | Sandrine Bailleux <sandrine.bailleux@arm.com> | 2016-08-18 09:24:40 +0100 |
---|---|---|
committer | Sandrine Bailleux <sandrine.bailleux@arm.com> | 2016-08-19 14:04:03 +0100 |
commit | 8c9e1af0b5df7ee1ff32e6192ee0252315900895 (patch) | |
tree | 1fa817bf424b2e234230ae48bd2bb09567fba91d | |
parent | 974603b554a71872d8e0a4aca02ba9cf73b1c3fe (diff) | |
download | arm-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.c | 5 | ||||
-rw-r--r-- | plat/arm/board/juno/juno_err.c | 5 | ||||
-rw-r--r-- | plat/common/aarch64/platform_helpers.S | 2 |
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 |