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;
         }
 

Reply via email to