aboutsummaryrefslogtreecommitdiff
path: root/include/bl31
diff options
context:
space:
mode:
authorJeenu Viswambharan <jeenu.viswambharan@arm.com>2018-01-10 15:00:20 +0000
committerJeenu Viswambharan <jeenu.viswambharan@arm.com>2018-02-06 07:58:55 +0000
commit26ea390891154aaa3c0236f3c206342cc5d3fdc0 (patch)
tree1626ebb743c860435bf95e97781c4027888b77ee /include/bl31
parentc8b55b8f8be3f6a388d95a7be9af4bf94e47cf86 (diff)
downloadtrusted-firmware-a-26ea390891154aaa3c0236f3c206342cc5d3fdc0.tar.gz
Deprecate one EL3 interrupt routing model with EL3 exception handling
When ARM Trusted Firmware is built with EL3_EXCEPTION_HANDLING=1, EL3 interrupts (INTR_TYPE_EL3) will always preempt both Non-secure and secure execution. The interrupt management framework currently treats EL3 interrupt routing as valid. For the above reason, this patch makes them invalid when EL3_EXCEPTION_HANDLING is in effect. Change-Id: I95bca8f5dc8df8eb0ff6f305cfba098611522a39 Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
Diffstat (limited to 'include/bl31')
-rw-r--r--include/bl31/interrupt_mgmt.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/include/bl31/interrupt_mgmt.h b/include/bl31/interrupt_mgmt.h
index cccad3add1..d41edd0991 100644
--- a/include/bl31/interrupt_mgmt.h
+++ b/include/bl31/interrupt_mgmt.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -80,9 +80,19 @@
((x) == INTR_NS_VALID_RM1 ? 0 :\
-EINVAL))
+#if EL3_EXCEPTION_HANDLING
+/*
+ * With EL3 exception handling, EL3 interrupts are always routed to EL3 from
+ * both Secure and Non-secure, and therefore INTR_EL3_VALID_RM1 is the only
+ * valid routing model.
+ */
+#define validate_el3_interrupt_rm(x) ((x) == INTR_EL3_VALID_RM1 ? 0 : \
+ -EINVAL)
+#else
#define validate_el3_interrupt_rm(x) ((x) == INTR_EL3_VALID_RM0 ? 0 : \
((x) == INTR_EL3_VALID_RM1 ? 0 :\
-EINVAL))
+#endif
/*******************************************************************************
* Macros to set the 'flags' parameter passed to an interrupt type handler. Only