mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 02:59:01 +01:00 
			
		
		
		
	modernize ARM assembler syntax (#1148)
modernize ARM assembler syntax Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
This commit is contained in:
		
							parent
							
								
									61440fc664
								
							
						
					
					
						commit
						9788e7e46a
					
				@ -228,8 +228,8 @@ static void prvTaskExitError( void )
 | 
			
		||||
void vPortSVCHandler( void )
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile (
 | 
			
		||||
        "   ldr r3, pxCurrentTCBConst2      \n" /* Restore the context. */
 | 
			
		||||
        "   ldr r1, [r3]                    \n" /* Use pxCurrentTCBConst to get the pxCurrentTCB address. */
 | 
			
		||||
        "   ldr r3, =pxCurrentTCB           \n" /* Restore the context. */
 | 
			
		||||
        "   ldr r1, [r3]                    \n" /* Get the pxCurrentTCB address. */
 | 
			
		||||
        "   ldr r0, [r1]                    \n" /* The first item in pxCurrentTCB is the task top of stack. */
 | 
			
		||||
        "   ldmia r0!, {r4-r11}             \n" /* Pop the registers that are not automatically saved on exception entry and the critical nesting count. */
 | 
			
		||||
        "   msr psp, r0                     \n" /* Restore the task stack pointer. */
 | 
			
		||||
@ -239,8 +239,7 @@ void vPortSVCHandler( void )
 | 
			
		||||
        "   orr r14, #0xd                   \n"
 | 
			
		||||
        "   bx r14                          \n"
 | 
			
		||||
        "                                   \n"
 | 
			
		||||
        "   .align 4                        \n"
 | 
			
		||||
        "pxCurrentTCBConst2: .word pxCurrentTCB             \n"
 | 
			
		||||
        "   .ltorg                          \n"
 | 
			
		||||
        );
 | 
			
		||||
}
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
@ -462,7 +461,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        "   mrs r0, psp                         \n"
 | 
			
		||||
        "   isb                                 \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   ldr r3, pxCurrentTCBConst           \n" /* Get the location of the current TCB. */
 | 
			
		||||
        "   ldr r3, =pxCurrentTCB               \n" /* Get the location of the current TCB. */
 | 
			
		||||
        "   ldr r2, [r3]                        \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   stmdb r0!, {r4-r11}                 \n" /* Save the remaining registers. */
 | 
			
		||||
@ -483,8 +482,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        "   isb                                 \n"
 | 
			
		||||
        "   bx r14                              \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   .align 4                            \n"
 | 
			
		||||
        "pxCurrentTCBConst: .word pxCurrentTCB  \n"
 | 
			
		||||
        "   .ltorg                              \n"
 | 
			
		||||
        ::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -695,7 +695,7 @@ static void prvRestoreContextOfFirstTask( void )
 | 
			
		||||
        " msr msp, r0                           \n" /* Set the msp back to the start of the stack. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*------------ Program MPU. ------------ */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst2            \n" /* r3 = pxCurrentTCBConst2. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " add r2, r2, #4                        \n" /* r2 = Second item in the TCB which is xMPUSettings. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -716,7 +716,7 @@ static void prvRestoreContextOfFirstTask( void )
 | 
			
		||||
        " dsb                                   \n" /* Force memory writes before continuing. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*---------- Restore Context. ---------- */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst2            \n" /* r3 = pxCurrentTCBConst2. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " ldr r1, [r2]                          \n" /* r1 = Location of saved context in TCB. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -732,8 +732,6 @@ static void prvRestoreContextOfFirstTask( void )
 | 
			
		||||
        " bx lr                                 \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        " .ltorg                                \n" /* Assemble current literal pool to avoid offset-out-of-bound errors with lto. */
 | 
			
		||||
        " .align 4                              \n"
 | 
			
		||||
        "pxCurrentTCBConst2: .word pxCurrentTCB \n"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
@ -988,7 +986,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst             \n" /* r3 = pxCurrentTCBConst. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " ldr r1, [r2]                          \n" /* r1 = Location where the context should be saved. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -1012,7 +1010,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        " msr basepri, r0                       \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*------------ Program MPU. ------------ */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst             \n" /* r3 = pxCurrentTCBConst. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " add r2, r2, #4                        \n" /* r2 = Second item in the TCB which is xMPUSettings. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -1033,7 +1031,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        " dsb                                   \n" /* Force memory writes before continuing. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*---------- Restore Context. ---------- */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst             \n" /* r3 = pxCurrentTCBConst. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " ldr r1, [r2]                          \n" /* r1 = Location of saved context in TCB. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -1047,8 +1045,6 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        " bx lr                                 \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        " .ltorg                                \n" /* Assemble current literal pool to avoid offset-out-of-bound errors with lto. */
 | 
			
		||||
        " .align 4                              \n"
 | 
			
		||||
        "pxCurrentTCBConst: .word pxCurrentTCB  \n"
 | 
			
		||||
        ::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
@ -1207,8 +1203,6 @@ BaseType_t xIsPrivileged( void ) /* __attribute__ (( naked )) */
 | 
			
		||||
        "   movne r0, #0                            \n" /* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
 | 
			
		||||
        "   moveq r0, #1                            \n" /* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
 | 
			
		||||
        "   bx lr                                   \n" /* Return. */
 | 
			
		||||
        "                                           \n"
 | 
			
		||||
        "   .align 4                                \n"
 | 
			
		||||
        ::: "r0", "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -260,8 +260,8 @@ static void prvTaskExitError( void )
 | 
			
		||||
void vPortSVCHandler( void )
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile (
 | 
			
		||||
        "   ldr r3, pxCurrentTCBConst2      \n" /* Restore the context. */
 | 
			
		||||
        "   ldr r1, [r3]                    \n" /* Use pxCurrentTCBConst to get the pxCurrentTCB address. */
 | 
			
		||||
        "   ldr r3, =pxCurrentTCB           \n" /* Restore the context. */
 | 
			
		||||
        "   ldr r1, [r3]                    \n" /* Get the pxCurrentTCB address. */
 | 
			
		||||
        "   ldr r0, [r1]                    \n" /* The first item in pxCurrentTCB is the task top of stack. */
 | 
			
		||||
        "   ldmia r0!, {r4-r11, r14}        \n" /* Pop the registers that are not automatically saved on exception entry and the critical nesting count. */
 | 
			
		||||
        "   msr psp, r0                     \n" /* Restore the task stack pointer. */
 | 
			
		||||
@ -270,8 +270,7 @@ void vPortSVCHandler( void )
 | 
			
		||||
        "   msr basepri, r0                 \n"
 | 
			
		||||
        "   bx r14                          \n"
 | 
			
		||||
        "                                   \n"
 | 
			
		||||
        "   .align 4                        \n"
 | 
			
		||||
        "pxCurrentTCBConst2: .word pxCurrentTCB             \n"
 | 
			
		||||
        "   .ltorg                          \n"
 | 
			
		||||
        );
 | 
			
		||||
}
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
@ -511,7 +510,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        "   mrs r0, psp                         \n"
 | 
			
		||||
        "   isb                                 \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   ldr r3, pxCurrentTCBConst           \n" /* Get the location of the current TCB. */
 | 
			
		||||
        "   ldr r3, =pxCurrentTCB               \n" /* Get the location of the current TCB. */
 | 
			
		||||
        "   ldr r2, [r3]                        \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   tst r14, #0x10                      \n" /* Is the task using the FPU context?  If so, push high vfp registers. */
 | 
			
		||||
@ -552,8 +551,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   bx r14                              \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   .align 4                            \n"
 | 
			
		||||
        "pxCurrentTCBConst: .word pxCurrentTCB  \n"
 | 
			
		||||
        "   .ltorg                              \n"
 | 
			
		||||
        ::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -761,7 +761,7 @@ static void prvRestoreContextOfFirstTask( void )
 | 
			
		||||
        " msr msp, r0                           \n" /* Set the msp back to the start of the stack. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*------------ Program MPU. ------------ */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst2            \n" /* r3 = pxCurrentTCBConst2. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " add r2, r2, #4                        \n" /* r2 = Second item in the TCB which is xMPUSettings. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -789,7 +789,7 @@ static void prvRestoreContextOfFirstTask( void )
 | 
			
		||||
        " dsb                                   \n" /* Force memory writes before continuing. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*---------- Restore Context. ---------- */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst2            \n" /* r3 = pxCurrentTCBConst2. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " ldr r1, [r2]                          \n" /* r1 = Location of saved context in TCB. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -805,8 +805,6 @@ static void prvRestoreContextOfFirstTask( void )
 | 
			
		||||
        " bx lr                                 \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        " .ltorg                                \n" /* Assemble current literal pool to avoid offset-out-of-bound errors with lto. */
 | 
			
		||||
        " .align 4                              \n"
 | 
			
		||||
        " pxCurrentTCBConst2: .word pxCurrentTCB\n"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
@ -1084,7 +1082,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst             \n" /* r3 = pxCurrentTCBConst. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " ldr r1, [r2]                          \n" /* r1 = Location where the context should be saved. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -1122,7 +1120,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        " msr basepri, r0                       \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*------------ Program MPU. ------------ */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst             \n" /* r3 = pxCurrentTCBConst. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " add r2, r2, #4                        \n" /* r2 = Second item in the TCB which is xMPUSettings. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -1150,7 +1148,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        " dsb                                   \n" /* Force memory writes before continuing. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        /*---------- Restore Context. ---------- */
 | 
			
		||||
        " ldr r3, pxCurrentTCBConst             \n" /* r3 = pxCurrentTCBConst. */
 | 
			
		||||
        " ldr r3, =pxCurrentTCB                 \n" /* r3 = =pxCurrentTCB. */
 | 
			
		||||
        " ldr r2, [r3]                          \n" /* r2 = pxCurrentTCB. */
 | 
			
		||||
        " ldr r1, [r2]                          \n" /* r1 = Location of saved context in TCB. */
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
@ -1170,8 +1168,6 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        " bx lr                                 \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        " .ltorg                                \n" /* Assemble the current literal pool to avoid offset-out-of-bound errors with lto. */
 | 
			
		||||
        " .align 4                              \n"
 | 
			
		||||
        " pxCurrentTCBConst: .word pxCurrentTCB \n"
 | 
			
		||||
        ::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
@ -1349,8 +1345,6 @@ BaseType_t xIsPrivileged( void ) /* __attribute__ (( naked )) */
 | 
			
		||||
        "   movne r0, #0                            \n" /* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
 | 
			
		||||
        "   moveq r0, #1                            \n" /* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
 | 
			
		||||
        "   bx lr                                   \n" /* Return. */
 | 
			
		||||
        "                                           \n"
 | 
			
		||||
        "   .align 4                                \n"
 | 
			
		||||
        ::: "r0", "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -254,8 +254,8 @@ static void prvTaskExitError( void )
 | 
			
		||||
void vPortSVCHandler( void )
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile (
 | 
			
		||||
        "   ldr r3, pxCurrentTCBConst2      \n" /* Restore the context. */
 | 
			
		||||
        "   ldr r1, [r3]                    \n" /* Use pxCurrentTCBConst to get the pxCurrentTCB address. */
 | 
			
		||||
        "   ldr r3, =pxCurrentTCB           \n" /* Restore the context. */
 | 
			
		||||
        "   ldr r1, [r3]                    \n" /* Get the pxCurrentTCB address. */
 | 
			
		||||
        "   ldr r0, [r1]                    \n" /* The first item in pxCurrentTCB is the task top of stack. */
 | 
			
		||||
        "   ldmia r0!, {r4-r11, r14}        \n" /* Pop the registers that are not automatically saved on exception entry and the critical nesting count. */
 | 
			
		||||
        "   msr psp, r0                     \n" /* Restore the task stack pointer. */
 | 
			
		||||
@ -264,8 +264,7 @@ void vPortSVCHandler( void )
 | 
			
		||||
        "   msr basepri, r0                 \n"
 | 
			
		||||
        "   bx r14                          \n"
 | 
			
		||||
        "                                   \n"
 | 
			
		||||
        "   .align 4                        \n"
 | 
			
		||||
        "pxCurrentTCBConst2: .word pxCurrentTCB             \n"
 | 
			
		||||
        "   .ltorg                          \n"
 | 
			
		||||
        );
 | 
			
		||||
}
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
@ -499,7 +498,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        "   mrs r0, psp                         \n"
 | 
			
		||||
        "   isb                                 \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   ldr r3, pxCurrentTCBConst           \n" /* Get the location of the current TCB. */
 | 
			
		||||
        "   ldr r3, =pxCurrentTCB               \n" /* Get the location of the current TCB. */
 | 
			
		||||
        "   ldr r2, [r3]                        \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   tst r14, #0x10                      \n" /* Is the task using the FPU context?  If so, push high vfp registers. */
 | 
			
		||||
@ -542,8 +541,7 @@ void xPortPendSVHandler( void )
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   bx r14                              \n"
 | 
			
		||||
        "                                       \n"
 | 
			
		||||
        "   .align 4                            \n"
 | 
			
		||||
        "pxCurrentTCBConst: .word pxCurrentTCB  \n"
 | 
			
		||||
        "   .ltorg                              \n"
 | 
			
		||||
        ::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user