diff options
author | alfred gedeon <alfred2g@hotmail.com> | 2020-12-22 22:39:33 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-22 22:39:33 -0800 |
commit | 1c99d9f200fee6a2fe708d2b9263cd48fbeddf9b (patch) | |
tree | 431c6124b55e8d520b8c4f5910327cd4354e214c | |
parent | 28548e06fea4295528f84eaf02a47d1eef8e9421 (diff) | |
download | freertos-git-1c99d9f200fee6a2fe708d2b9263cd48fbeddf9b.tar.gz |
Prevent optimization in reset handler for QEMU MPS2 (#484)
-rw-r--r-- | FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/init/startup.c | 5 | ||||
-rw-r--r-- | FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/init/startup.c | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/init/startup.c b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/init/startup.c index 7ae42769d..06ea98b50 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/init/startup.c +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/init/startup.c @@ -41,7 +41,10 @@ void __attribute__((weak)) EthernetISR (void); extern uint32_t _estack, _sidata, _sdata, _edata, _sbss, _ebss; -__attribute__((naked)) void Reset_Handler(void) +/* Prevent optimization so gcc does not replace code with memcpy */ +__attribute__((optimize("O0"))) +__attribute__((naked)) +void Reset_Handler(void) { // set stack pointer __asm volatile ("ldr r0, =_estack"); diff --git a/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/init/startup.c b/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/init/startup.c index 7ae42769d..1b09e8d9a 100644 --- a/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/init/startup.c +++ b/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/init/startup.c @@ -41,8 +41,11 @@ void __attribute__((weak)) EthernetISR (void); extern uint32_t _estack, _sidata, _sdata, _edata, _sbss, _ebss; -__attribute__((naked)) void Reset_Handler(void) - { +/* Prevent optimization so gcc does not replace code with memcpy */ +__attribute__((optimize("O0"))) +__attribute__((naked)) +void Reset_Handler(void) +{ // set stack pointer __asm volatile ("ldr r0, =_estack"); __asm volatile ("mov sp, r0"); |