This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
The following commit(s) were added to refs/heads/master by this push:
new 2b4918882 kernel/os/arch: Fix Cortex-M irq priority setting
2b4918882 is described below
commit 2b49188820c77beef1589ee90481faa1bbfdc41d
Author: Jerzy Kasenberg <[email protected]>
AuthorDate: Mon May 19 14:21:48 2025 +0200
kernel/os/arch: Fix Cortex-M irq priority setting
For Cortex-M0:
os_arch_os_init() initialized interrupt priority level
for all interrupts using incorrect array limit taken
from sizeof instead of ARRAY_SIZE.
For Cortex-M0 field IP is array of uint32_t unlike all
other version where this array consist of uint8_t.
Now array is iterated using ARRAY_SIZE(NVIC->IP) to limit
instead of sizeof(NVIC->IP) and for Cortex-M33
ARRAY_SIZE(NVIC->IPR).
Signed-off-by: Jerzy Kasenberg <[email protected]>
---
hw/mcu/dialog/cmac/src/arch/cortex_m0_cmac/os_arch_arm.c | 2 +-
kernel/os/src/arch/cortex_m0/os_arch_arm.c | 2 +-
kernel/os/src/arch/cortex_m3/os_arch_arm.c | 2 +-
kernel/os/src/arch/cortex_m33/os_arch_arm.c | 2 +-
kernel/os/src/arch/cortex_m4/os_arch_arm.c | 2 +-
kernel/os/src/arch/cortex_m7/os_arch_arm.c | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/hw/mcu/dialog/cmac/src/arch/cortex_m0_cmac/os_arch_arm.c
b/hw/mcu/dialog/cmac/src/arch/cortex_m0_cmac/os_arch_arm.c
index 174571673..5cbc39d4b 100644
--- a/hw/mcu/dialog/cmac/src/arch/cortex_m0_cmac/os_arch_arm.c
+++ b/hw/mcu/dialog/cmac/src/arch/cortex_m0_cmac/os_arch_arm.c
@@ -128,7 +128,7 @@ os_arch_os_init(void)
}
/* Drop priority for all interrupts */
- for (i = 0; i < sizeof(NVIC->IP) / 4; i++) {
+ for (i = 0; i < ARRAY_SIZE(NVIC->IP); i++) {
NVIC->IP[i] = -1;
}
diff --git a/kernel/os/src/arch/cortex_m0/os_arch_arm.c
b/kernel/os/src/arch/cortex_m0/os_arch_arm.c
index b41f95b21..7411c4280 100644
--- a/kernel/os/src/arch/cortex_m0/os_arch_arm.c
+++ b/kernel/os/src/arch/cortex_m0/os_arch_arm.c
@@ -209,7 +209,7 @@ os_arch_os_init(void)
err = OS_OK;
/* Drop priority for all interrupts */
- for (i = 0; i < sizeof(NVIC->IP); i++) {
+ for (i = 0; i < ARRAY_SIZE(NVIC->IP); i++) {
NVIC->IP[i] = -1;
}
diff --git a/kernel/os/src/arch/cortex_m3/os_arch_arm.c
b/kernel/os/src/arch/cortex_m3/os_arch_arm.c
index 40be88b76..4df5308c4 100644
--- a/kernel/os/src/arch/cortex_m3/os_arch_arm.c
+++ b/kernel/os/src/arch/cortex_m3/os_arch_arm.c
@@ -233,7 +233,7 @@ os_arch_os_init(void)
err = OS_OK;
/* Drop priority for all interrupts */
- for (i = 0; i < sizeof(NVIC->IP); i++) {
+ for (i = 0; i < ARRAY_SIZE(NVIC->IP); i++) {
NVIC->IP[i] = -1;
}
diff --git a/kernel/os/src/arch/cortex_m33/os_arch_arm.c
b/kernel/os/src/arch/cortex_m33/os_arch_arm.c
index b0d83ed30..aff50be48 100644
--- a/kernel/os/src/arch/cortex_m33/os_arch_arm.c
+++ b/kernel/os/src/arch/cortex_m33/os_arch_arm.c
@@ -237,7 +237,7 @@ os_arch_os_init(void)
err = OS_OK;
/* Drop priority for all interrupts */
- for (i = 0; i < sizeof(NVIC->IPR); i++) {
+ for (i = 0; i < ARRAY_SIZE(NVIC->IPR); i++) {
NVIC->IPR[i] = -1;
}
diff --git a/kernel/os/src/arch/cortex_m4/os_arch_arm.c
b/kernel/os/src/arch/cortex_m4/os_arch_arm.c
index 48111e5bd..177dadcd3 100644
--- a/kernel/os/src/arch/cortex_m4/os_arch_arm.c
+++ b/kernel/os/src/arch/cortex_m4/os_arch_arm.c
@@ -237,7 +237,7 @@ os_arch_os_init(void)
err = OS_OK;
/* Drop priority for all interrupts */
- for (i = 0; i < sizeof(NVIC->IP); i++) {
+ for (i = 0; i < ARRAY_SIZE(NVIC->IP); i++) {
NVIC->IP[i] = -1;
}
diff --git a/kernel/os/src/arch/cortex_m7/os_arch_arm.c
b/kernel/os/src/arch/cortex_m7/os_arch_arm.c
index 48111e5bd..177dadcd3 100644
--- a/kernel/os/src/arch/cortex_m7/os_arch_arm.c
+++ b/kernel/os/src/arch/cortex_m7/os_arch_arm.c
@@ -237,7 +237,7 @@ os_arch_os_init(void)
err = OS_OK;
/* Drop priority for all interrupts */
- for (i = 0; i < sizeof(NVIC->IP); i++) {
+ for (i = 0; i < ARRAY_SIZE(NVIC->IP); i++) {
NVIC->IP[i] = -1;
}