diff --git a/bsp/stm32f20x/stm32_rom.icf b/bsp/stm32f20x/stm32_rom.icf index 293cd6ab0..95cc8d50c 100644 --- a/bsp/stm32f20x/stm32_rom.icf +++ b/bsp/stm32f20x/stm32_rom.icf @@ -28,8 +28,8 @@ do not initialize { section .noinit }; keep { section FSymTab }; keep { section VSymTab }; +keep { section .rti_fn* }; place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; place in ROM_region { readonly, block RTT_INIT_FUNC }; -place in RAM_region { readwrite, - block CSTACK, block HEAP }; \ No newline at end of file +place in RAM_region { readwrite, block CSTACK, last block HEAP}; diff --git a/libcpu/arm/cortex-m0/context_gcc.S b/libcpu/arm/cortex-m0/context_gcc.S index 3186a5ae9..c95582630 100644 --- a/libcpu/arm/cortex-m0/context_gcc.S +++ b/libcpu/arm/cortex-m0/context_gcc.S @@ -181,7 +181,9 @@ rt_hw_context_switch_to: NOP MSR MSP, R0 - CPSIE I /* enable interrupts at processor level */ + /* enable interrupts at processor level */ + CPSIE F + CPSIE I /* never reach here! */ diff --git a/libcpu/arm/cortex-m0/context_iar.S b/libcpu/arm/cortex-m0/context_iar.S index 67ea808d8..e7d680867 100644 --- a/libcpu/arm/cortex-m0/context_iar.S +++ b/libcpu/arm/cortex-m0/context_iar.S @@ -188,6 +188,7 @@ rt_hw_context_switch_to: MSR msp, r0 ; enable interrupts at processor level + CPSIE F CPSIE I ; never reach here! diff --git a/libcpu/arm/cortex-m0/context_rvds.S b/libcpu/arm/cortex-m0/context_rvds.S index bf68592e6..5411162e5 100644 --- a/libcpu/arm/cortex-m0/context_rvds.S +++ b/libcpu/arm/cortex-m0/context_rvds.S @@ -191,6 +191,7 @@ rt_hw_context_switch_to PROC MSR msp, r0 ; enable interrupts at processor level + CPSIE F CPSIE I ; never reach here! diff --git a/libcpu/arm/cortex-m3/context_gcc.S b/libcpu/arm/cortex-m3/context_gcc.S index ca961bbd8..5181cb271 100644 --- a/libcpu/arm/cortex-m3/context_gcc.S +++ b/libcpu/arm/cortex-m3/context_gcc.S @@ -162,7 +162,9 @@ rt_hw_context_switch_to: NOP MSR msp, r0 - CPSIE I /* enable interrupts at processor level */ + /* enable interrupts at processor level */ + CPSIE F + CPSIE I /* never reach here! */ diff --git a/libcpu/arm/cortex-m3/context_iar.S b/libcpu/arm/cortex-m3/context_iar.S index ad9fa0dd0..95dee8062 100644 --- a/libcpu/arm/cortex-m3/context_iar.S +++ b/libcpu/arm/cortex-m3/context_iar.S @@ -161,7 +161,9 @@ rt_hw_context_switch_to: NOP MSR msp, r0 - CPSIE I ; enable interrupts at processor level + ; enable interrupts at processor level + CPSIE F + CPSIE I ; never reach here! diff --git a/libcpu/arm/cortex-m3/context_rvds.S b/libcpu/arm/cortex-m3/context_rvds.S index ebfd5c8da..a4191203b 100644 --- a/libcpu/arm/cortex-m3/context_rvds.S +++ b/libcpu/arm/cortex-m3/context_rvds.S @@ -168,6 +168,7 @@ rt_hw_context_switch_to PROC MSR msp, r0 ; enable interrupts at processor level + CPSIE F CPSIE I ; never reach here! diff --git a/libcpu/arm/cortex-m4/context_gcc.S b/libcpu/arm/cortex-m4/context_gcc.S index 908a44f84..af6c9934d 100644 --- a/libcpu/arm/cortex-m4/context_gcc.S +++ b/libcpu/arm/cortex-m4/context_gcc.S @@ -203,7 +203,9 @@ rt_hw_context_switch_to: NOP MSR msp, r0 - CPSIE I /* enable interrupts at processor level */ + /* enable interrupts at processor level */ + CPSIE F + CPSIE I /* never reach here! */ diff --git a/libcpu/arm/cortex-m4/context_iar.S b/libcpu/arm/cortex-m4/context_iar.S index 8761a9705..4cc953911 100644 --- a/libcpu/arm/cortex-m4/context_iar.S +++ b/libcpu/arm/cortex-m4/context_iar.S @@ -207,7 +207,9 @@ rt_hw_context_switch_to: NOP MSR msp, r0 - CPSIE I ; enable interrupts at processor level + ; enable interrupts at processor level + CPSIE F + CPSIE I ; never reach here! diff --git a/libcpu/arm/cortex-m4/context_rvds.S b/libcpu/arm/cortex-m4/context_rvds.S index fa7a1c90f..ea894ed00 100644 --- a/libcpu/arm/cortex-m4/context_rvds.S +++ b/libcpu/arm/cortex-m4/context_rvds.S @@ -208,6 +208,7 @@ rt_hw_context_switch_to PROC MSR msp, r0 ; enable interrupts at processor level + CPSIE F CPSIE I ; never reach here! diff --git a/libcpu/arm/cortex-m7/context_gcc.S b/libcpu/arm/cortex-m7/context_gcc.S index 908a44f84..af6c9934d 100644 --- a/libcpu/arm/cortex-m7/context_gcc.S +++ b/libcpu/arm/cortex-m7/context_gcc.S @@ -203,7 +203,9 @@ rt_hw_context_switch_to: NOP MSR msp, r0 - CPSIE I /* enable interrupts at processor level */ + /* enable interrupts at processor level */ + CPSIE F + CPSIE I /* never reach here! */ diff --git a/libcpu/arm/cortex-m7/context_iar.S b/libcpu/arm/cortex-m7/context_iar.S index 8761a9705..4cc953911 100644 --- a/libcpu/arm/cortex-m7/context_iar.S +++ b/libcpu/arm/cortex-m7/context_iar.S @@ -207,7 +207,9 @@ rt_hw_context_switch_to: NOP MSR msp, r0 - CPSIE I ; enable interrupts at processor level + ; enable interrupts at processor level + CPSIE F + CPSIE I ; never reach here! diff --git a/libcpu/arm/cortex-m7/context_rvds.S b/libcpu/arm/cortex-m7/context_rvds.S index 53a375678..38410c8a3 100644 --- a/libcpu/arm/cortex-m7/context_rvds.S +++ b/libcpu/arm/cortex-m7/context_rvds.S @@ -208,6 +208,7 @@ rt_hw_context_switch_to PROC MSR msp, r0 ; enable interrupts at processor level + CPSIE F CPSIE I ; never reach here!