Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1c99d9f

Browse files
authored
Prevent optimization in reset handler for QEMU MPS2 (FreeRTOS#484)
1 parent 28548e0 commit 1c99d9f

File tree

2 files changed

+9
-3
lines changed
  • FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/init
  • FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/init

2 files changed

+9
-3
lines changed

FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/init/startup.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ void __attribute__((weak)) EthernetISR (void);
4141

4242
extern uint32_t _estack, _sidata, _sdata, _edata, _sbss, _ebss;
4343

44-
__attribute__((naked)) void Reset_Handler(void)
44+
/* Prevent optimization so gcc does not replace code with memcpy */
45+
__attribute__((optimize("O0")))
46+
__attribute__((naked))
47+
void Reset_Handler(void)
4548
{
4649
// set stack pointer
4750
__asm volatile ("ldr r0, =_estack");

FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/init/startup.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,11 @@ void __attribute__((weak)) EthernetISR (void);
4141

4242
extern uint32_t _estack, _sidata, _sdata, _edata, _sbss, _ebss;
4343

44-
__attribute__((naked)) void Reset_Handler(void)
45-
{
44+
/* Prevent optimization so gcc does not replace code with memcpy */
45+
__attribute__((optimize("O0")))
46+
__attribute__((naked))
47+
void Reset_Handler(void)
48+
{
4649
// set stack pointer
4750
__asm volatile ("ldr r0, =_estack");
4851
__asm volatile ("mov sp, r0");

0 commit comments

Comments
 (0)