mirror of
				https://github.com/FreeRTOS/FreeRTOS.git
				synced 2025-11-04 17:05:57 +08:00 
			
		
		
		
	Remove clrex instruction from Cortex-M ports again as it is implicit in interrupt entry.
This commit is contained in:
		@ -123,9 +123,6 @@ xPortPendSVHandler: .asmfunc
 | 
				
			|||||||
	;/* Save the new top of stack into the first member of the TCB. */
 | 
						;/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	str r0, [r2]
 | 
						str r0, [r2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	;/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	clrex
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	stmdb sp!, {r3}
 | 
						stmdb sp!, {r3}
 | 
				
			||||||
	ldr r0, ulMaxSyscallInterruptPriorityConst
 | 
						ldr r0, ulMaxSyscallInterruptPriorityConst
 | 
				
			||||||
	ldr r1, [r0]
 | 
						ldr r1, [r0]
 | 
				
			||||||
 | 
				
			|||||||
@ -410,7 +410,6 @@ void xPortPendSVHandler( void )
 | 
				
			|||||||
	"										\n"
 | 
						"										\n"
 | 
				
			||||||
	"	stmdb r0!, {r4-r11}					\n" /* Save the remaining registers. */
 | 
						"	stmdb r0!, {r4-r11}					\n" /* Save the remaining registers. */
 | 
				
			||||||
	"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
						"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	"	clrex								\n" /* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	"										\n"
 | 
						"										\n"
 | 
				
			||||||
	"	stmdb sp!, {r3, r14}				\n"
 | 
						"	stmdb sp!, {r3, r14}				\n"
 | 
				
			||||||
	"	mov r0, %0							\n"
 | 
						"	mov r0, %0							\n"
 | 
				
			||||||
 | 
				
			|||||||
@ -450,7 +450,6 @@ void xPortPendSVHandler( void )
 | 
				
			|||||||
		"	mrs r1, control						\n"
 | 
							"	mrs r1, control						\n"
 | 
				
			||||||
		"	stmdb r0!, {r1, r4-r11}				\n" /* Save the remaining registers. */
 | 
							"	stmdb r0!, {r1, r4-r11}				\n" /* Save the remaining registers. */
 | 
				
			||||||
		"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
							"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
		"	clrex								\n" /* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
		"										\n"
 | 
							"										\n"
 | 
				
			||||||
		"	stmdb sp!, {r3, r14}				\n"
 | 
							"	stmdb sp!, {r3, r14}				\n"
 | 
				
			||||||
		"	mov r0, %0							\n"
 | 
							"	mov r0, %0							\n"
 | 
				
			||||||
 | 
				
			|||||||
@ -450,7 +450,6 @@ void xPortPendSVHandler( void )
 | 
				
			|||||||
	"										\n"
 | 
						"										\n"
 | 
				
			||||||
	"	stmdb r0!, {r4-r11, r14}			\n" /* Save the core registers. */
 | 
						"	stmdb r0!, {r4-r11, r14}			\n" /* Save the core registers. */
 | 
				
			||||||
	"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
						"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	"	clrex								\n" /* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	"										\n"
 | 
						"										\n"
 | 
				
			||||||
	"	stmdb sp!, {r3}						\n"
 | 
						"	stmdb sp!, {r3}						\n"
 | 
				
			||||||
	"	mov r0, %0 							\n"
 | 
						"	mov r0, %0 							\n"
 | 
				
			||||||
 | 
				
			|||||||
@ -477,7 +477,6 @@ void xPortPendSVHandler( void )
 | 
				
			|||||||
		"	mrs r1, control						\n"
 | 
							"	mrs r1, control						\n"
 | 
				
			||||||
		"	stmdb r0!, {r1, r4-r11, r14}		\n" /* Save the remaining registers. */
 | 
							"	stmdb r0!, {r1, r4-r11, r14}		\n" /* Save the remaining registers. */
 | 
				
			||||||
		"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
							"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
		"	clrex								\n" /* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
		"										\n"
 | 
							"										\n"
 | 
				
			||||||
		"	stmdb sp!, {r3}						\n"
 | 
							"	stmdb sp!, {r3}						\n"
 | 
				
			||||||
		"	mov r0, %0							\n"
 | 
							"	mov r0, %0							\n"
 | 
				
			||||||
 | 
				
			|||||||
@ -438,7 +438,6 @@ void xPortPendSVHandler( void )
 | 
				
			|||||||
	"										\n"
 | 
						"										\n"
 | 
				
			||||||
	"	stmdb r0!, {r4-r11, r14}			\n" /* Save the core registers. */
 | 
						"	stmdb r0!, {r4-r11, r14}			\n" /* Save the core registers. */
 | 
				
			||||||
	"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
						"	str r0, [r2]						\n" /* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	"	clrex								\n" /* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	"										\n"
 | 
						"										\n"
 | 
				
			||||||
	"	stmdb sp!, {r3}						\n"
 | 
						"	stmdb sp!, {r3}						\n"
 | 
				
			||||||
	"	mov r0, %0 							\n"
 | 
						"	mov r0, %0 							\n"
 | 
				
			||||||
 | 
				
			|||||||
@ -91,7 +91,6 @@ xPortPendSVHandler:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	stmdb r0!, {r4-r11}				/* Save the remaining registers. */
 | 
						stmdb r0!, {r4-r11}				/* Save the remaining registers. */
 | 
				
			||||||
	str r0, [r2]					/* Save the new top of stack into the first member of the TCB. */
 | 
						str r0, [r2]					/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	clrex							/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	stmdb sp!, {r3, r14}
 | 
						stmdb sp!, {r3, r14}
 | 
				
			||||||
	mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
						mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
				
			||||||
 | 
				
			|||||||
@ -101,9 +101,6 @@ xPortPendSVHandler:
 | 
				
			|||||||
	/* Save the new top of stack into the first member of the TCB. */
 | 
						/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	str r0, [r2]
 | 
						str r0, [r2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	clrex
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	stmdb sp!, {r3}
 | 
						stmdb sp!, {r3}
 | 
				
			||||||
	mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
						mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
				
			||||||
	msr basepri, r0
 | 
						msr basepri, r0
 | 
				
			||||||
 | 
				
			|||||||
@ -101,9 +101,6 @@ xPortPendSVHandler:
 | 
				
			|||||||
	/* Save the new top of stack into the first member of the TCB. */
 | 
						/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	str r0, [r2]
 | 
						str r0, [r2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	clrex
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	stmdb sp!, {r3}
 | 
						stmdb sp!, {r3}
 | 
				
			||||||
	mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
						mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
				
			||||||
	cpsid i
 | 
						cpsid i
 | 
				
			||||||
 | 
				
			|||||||
@ -458,8 +458,6 @@ void xPortPendSVHandler( void ) iv IVT_INT_PendSV ics ICS_OFF
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	str r0, [r2]			 /* Save the new top of stack into the first member of the TCB. */
 | 
						str r0, [r2]			 /* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	clrex					/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	stmdb sp!, (r3)
 | 
						stmdb sp!, (r3)
 | 
				
			||||||
	ldr r0, =_ucMaxSyscallInterruptPriority
 | 
						ldr r0, =_ucMaxSyscallInterruptPriority
 | 
				
			||||||
	ldr r1, [r0]
 | 
						ldr r1, [r0]
 | 
				
			||||||
 | 
				
			|||||||
@ -407,7 +407,6 @@ __asm void xPortPendSVHandler( void )
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	stmdb r0!, {r4-r11}			/* Save the remaining registers. */
 | 
						stmdb r0!, {r4-r11}			/* Save the remaining registers. */
 | 
				
			||||||
	str r0, [r2]				/* Save the new top of stack into the first member of the TCB. */
 | 
						str r0, [r2]				/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	clrex						/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	stmdb sp!, {r3, r14}
 | 
						stmdb sp!, {r3, r14}
 | 
				
			||||||
	mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
						mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
				
			||||||
 | 
				
			|||||||
@ -479,9 +479,6 @@ __asm void xPortPendSVHandler( void )
 | 
				
			|||||||
	/* Save the new top of stack into the first member of the TCB. */
 | 
						/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	str r0, [r2]
 | 
						str r0, [r2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	clrex
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	stmdb sp!, {r3}
 | 
						stmdb sp!, {r3}
 | 
				
			||||||
	mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
						mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
				
			||||||
	msr basepri, r0
 | 
						msr basepri, r0
 | 
				
			||||||
 | 
				
			|||||||
@ -492,7 +492,6 @@ __asm void xPortPendSVHandler( void )
 | 
				
			|||||||
	mrs r1, control
 | 
						mrs r1, control
 | 
				
			||||||
	stmdb r0!, {r1, r4-r11, r14}	/* Save the remaining registers. */
 | 
						stmdb r0!, {r1, r4-r11, r14}	/* Save the remaining registers. */
 | 
				
			||||||
	str r0, [r2]					/* Save the new top of stack into the first member of the TCB. */
 | 
						str r0, [r2]					/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	clrex							/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	stmdb sp!, {r3}
 | 
						stmdb sp!, {r3}
 | 
				
			||||||
	mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
						mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
				
			||||||
 | 
				
			|||||||
@ -463,9 +463,6 @@ __asm void xPortPendSVHandler( void )
 | 
				
			|||||||
	/* Save the new top of stack into the first member of the TCB. */
 | 
						/* Save the new top of stack into the first member of the TCB. */
 | 
				
			||||||
	str r0, [r2]
 | 
						str r0, [r2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Ensure thread safety of atomic operations. */
 | 
					 | 
				
			||||||
	clrex
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	stmdb sp!, {r3}
 | 
						stmdb sp!, {r3}
 | 
				
			||||||
	mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
						mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
 | 
				
			||||||
	cpsid i
 | 
						cpsid i
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user