aboutsummaryrefslogtreecommitdiff
path: root/include/hw/intc/armv7m_nvic.h
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2017-09-12 19:13:50 +0100
committerPeter Maydell <peter.maydell@linaro.org>2017-09-21 16:29:23 +0100
commite93bc2ac11cd37796fd48e11eaeacec3aff20f9c (patch)
treecab4b58e036475b4181edf17adb14686397d634c /include/hw/intc/armv7m_nvic.h
parent17906a162a1febef92e1d3eddc090e967a351757 (diff)
nvic: Add cached vectpending_is_s_banked state
With banked exceptions, just the exception number in s->vectpending is no longer sufficient to uniquely identify the pending exception. Add a vectpending_is_s_banked bool which is true if the exception is using the sec_vectors[] array. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1505240046-11454-4-git-send-email-peter.maydell@linaro.org
Diffstat (limited to 'include/hw/intc/armv7m_nvic.h')
-rw-r--r--include/hw/intc/armv7m_nvic.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/include/hw/intc/armv7m_nvic.h b/include/hw/intc/armv7m_nvic.h
index 317601e7ec..87c78b3c26 100644
--- a/include/hw/intc/armv7m_nvic.h
+++ b/include/hw/intc/armv7m_nvic.h
@@ -57,10 +57,17 @@ typedef struct NVICState {
VecInfo sec_vectors[NVIC_INTERNAL_VECTORS];
uint32_t prigroup;
- /* vectpending and exception_prio are both cached state that can
- * be recalculated from the vectors[] array and the prigroup field.
+ /* The following fields are all cached state that can be recalculated
+ * from the vectors[] and sec_vectors[] arrays and the prigroup field:
+ * - vectpending
+ * - vectpending_is_secure
+ * - exception_prio
*/
unsigned int vectpending; /* highest prio pending enabled exception */
+ /* true if vectpending is a banked secure exception, ie it is in
+ * sec_vectors[] rather than vectors[]
+ */
+ bool vectpending_is_s_banked;
int exception_prio; /* group prio of the highest prio active exception */
MemoryRegion sysregmem;