Skip to content

Commit d80937d

Browse files
authored
Cortex M3 MPS2: modernize assembler syntax and also add .ltorg (FreeRTOS#1268)
Cortex M3 MPS2: modernize assembler syntax and also add .ltorg Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
1 parent 2067506 commit d80937d

File tree

3 files changed

+17
-11
lines changed
  • FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2
  • FreeRTOS/Demo

3 files changed

+17
-11
lines changed

FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/startup.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,14 @@ void Default_Handler( void )
111111
{
112112
__asm volatile
113113
(
114-
"Default_Handler: \n"
115-
" ldr r3, NVIC_INT_CTRL_CONST \n"
114+
"Default_Handler:\n"
115+
" ldr r3, =0xe000ed04\n"
116116
" ldr r2, [r3, #0]\n"
117117
" uxtb r2, r2\n"
118118
"Infinite_Loop:\n"
119119
" b Infinite_Loop\n"
120120
".size Default_Handler, .-Default_Handler\n"
121-
".align 4\n"
122-
"NVIC_INT_CTRL_CONST: .word 0xe000ed04\n"
121+
".ltorg\n"
123122
);
124123
}
125124

@@ -135,6 +134,7 @@ void Default_Handler2( void )
135134
" ldr r1, [r0, #24] \n"
136135
" ldr r2, =prvGetRegistersFromStack \n"
137136
" bx r2 \n"
137+
" .ltorg \n"
138138
);
139139
}
140140

@@ -219,6 +219,7 @@ __attribute__( ( naked ) ) void exit( int status )
219219
"movs r0, #0x18\n" /* SYS_EXIT */
220220
"bkpt 0xab\n"
221221
"end: b end\n"
222+
".ltorg"
222223
);
223224

224225
( void ) status;

FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC/build/gcc/startup_gcc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,12 @@ void Default_Handler( void )
122122
__asm volatile
123123
(
124124
".align 8 \n"
125-
" ldr r3, NVIC_INT_CTRL_CONST \n" /* Load the address of the interrupt control register into r3. */
125+
" ldr r3, =0xe000ed04 \n" /* Load the address of the interrupt control register into r3. */
126126
" ldr r2, [r3, #0] \n" /* Load the value of the interrupt control register into r2. */
127127
" uxtb r2, r2 \n" /* The interrupt number is in the least significant byte - clear all other bits. */
128128
"Infinite_Loop: \n" /* Sit in an infinite loop - the number of the executing interrupt is held in r2. */
129129
" b Infinite_Loop \n"
130-
".align 4 \n"
131-
"NVIC_INT_CTRL_CONST: .word 0xe000ed04 \n"
130+
" .ltorg \n"
132131
);
133132
}
134133

@@ -144,6 +143,7 @@ void HardFault_Handler( void )
144143
" ldr r1, [r0, #24] \n"
145144
" ldr r2, =prvGetRegistersFromStack \n"
146145
" bx r2 \n"
146+
" .ltorg \n"
147147
);
148148
}
149149

FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/init/startup.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,14 @@ void Default_Handler( void )
112112
{
113113
__asm volatile
114114
(
115-
"Default_Handler: \n"
116-
" ldr r3, NVIC_INT_CTRL_CONST \n"
115+
"Default_Handler:\n"
116+
" ldr r3, =0xe000ed04\n"
117117
" ldr r2, [r3, #0]\n"
118118
" uxtb r2, r2\n"
119119
"Infinite_Loop:\n"
120120
" b Infinite_Loop\n"
121121
".size Default_Handler, .-Default_Handler\n"
122-
".align 4\n"
123-
"NVIC_INT_CTRL_CONST: .word 0xe000ed04\n"
122+
".ltorg\n"
124123
);
125124
}
126125

@@ -136,6 +135,7 @@ void HardFault_Handler( void )
136135
" ldr r1, [r0, #24] \n"
137136
" ldr r2, =prvGetRegistersFromStack \n"
138137
" bx r2 \n"
138+
" .ltorg \n"
139139
);
140140
}
141141

@@ -150,6 +150,7 @@ void MemMang_Handler( void )
150150
" mrsne r0, psp \n"
151151
" ldr r1, =vHandleMemoryFault \n"
152152
" bx r1 \n"
153+
" .ltorg \n"
153154
);
154155
}
155156

@@ -163,6 +164,7 @@ void BusFault_Handler( void )
163164
" mrsne r0, psp \n"
164165
" ldr r1, =vHandleMemoryFault \n"
165166
" bx r1 \n"
167+
" .ltorg \n"
166168
);
167169
}
168170

@@ -176,6 +178,7 @@ void UsageFault_Handler( void )
176178
" mrsne r0, psp \n"
177179
" ldr r1, =vHandleMemoryFault \n"
178180
" bx r1 \n"
181+
" .ltorg \n"
179182
);
180183
}
181184

@@ -189,6 +192,7 @@ void Debug_Handler( void )
189192
" mrsne r0, psp \n"
190193
" ldr r1, =vHandleMemoryFault \n"
191194
" bx r1 \n"
195+
" .ltorg \n"
192196
);
193197
}
194198

@@ -246,6 +250,7 @@ void exit( int status )
246250
"movs r0, #0x18\n" /* SYS_EXIT */
247251
"bkpt 0xab\n"
248252
"end: b end\n"
253+
".ltorg\n"
249254
);
250255

251256
( void ) status;

0 commit comments

Comments
 (0)