You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2023/08/05 19:40:42 UTC
[nuttx] 02/03: armv8m: fix up_secure_irq failed for NVIC_IRQ_BUSFAULT
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit b445029cf2df3c94dae30afdedf2feb48dd0a563
Author: ligd <li...@xiaomi.com>
AuthorDate: Thu May 18 23:25:23 2023 +0800
armv8m: fix up_secure_irq failed for NVIC_IRQ_BUSFAULT
Signed-off-by: ligd <li...@xiaomi.com>
---
arch/arm/src/armv8-m/arm_secure_irq.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/src/armv8-m/arm_secure_irq.c b/arch/arm/src/armv8-m/arm_secure_irq.c
index bc88a3928c..376ec71f34 100644
--- a/arch/arm/src/armv8-m/arm_secure_irq.c
+++ b/arch/arm/src/armv8-m/arm_secure_irq.c
@@ -49,6 +49,8 @@
void up_secure_irq(int irq, bool secure)
{
+ uint32_t keymask = 0;
+ uint32_t keyval = 0;
uint32_t regaddr;
uint32_t regval;
uint32_t regbit;
@@ -60,6 +62,8 @@ void up_secure_irq(int irq, bool secure)
case NVIC_IRQ_BUSFAULT:
regaddr = NVIC_AIRCR;
regbit = NVIC_AIRCR_BFHFNMINS;
+ keymask = NVIC_AIRCR_VECTKEY_MASK;
+ keyval = NVIC_AIRCR_VECTKEY;
break;
case NVIC_IRQ_DBGMONITOR:
@@ -85,6 +89,7 @@ void up_secure_irq(int irq, bool secure)
regval |= regbit;
}
+ regval = (regval & ~keymask) | keyval;
putreg32(regval, regaddr);
}