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 7ae42769d0..06ea98b509 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 7ae42769d0..1b09e8d9a1 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");