Merge branch 'main' into main

This commit is contained in:
Gaurav-Aggarwal-AWS 2024-08-19 11:10:25 +05:30 committed by GitHub
commit 87b7629380
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -26,106 +26,103 @@
*
*/
.extern ulTopOfSystemStack
.extern ulTopOfSystemStack
.extern ulInterruptNesting
/*-----------------------------------------------------------*/
.macro portFREERTOS_INTERRUPT_ENTRY
.macro portFREERTOS_INTERRUPT_ENTRY
/* Save general purpose registers. */
pusha
/* Save general purpose registers. */
pusha
/* If ulInterruptNesting is zero the rest of the task context will need
* saving and a stack switch might be required. */
movl ulInterruptNesting, % eax
test % eax, % eax
jne 2f
/* If ulInterruptNesting is zero the rest of the task context will need
saving and a stack switch might be required. */
movl ulInterruptNesting, %eax
test %eax, %eax
jne 2f
/* Interrupts are not nested, so save the rest of the task context. */
.
/* Interrupts are not nested, so save the rest of the task context. */
.if configSUPPORT_FPU == 1
if configSUPPORT_FPU == 1
/* If the task has a buffer allocated to save the FPU context then
save the FPU context now. */
movl pucPortTaskFPUContextBuffer, %eax
test %eax, %eax
je 1f
fnsave ( %eax ) /* Save FLOP context into ucTempFPUBuffer array. */
fwait
/* If the task has a buffer allocated to save the FPU context then
* save the FPU context now. */
movl pucPortTaskFPUContextBuffer, % eax
test % eax, % eax
je 1f
fnsave( % eax ) /* Save FLOP context into ucTempFPUBuffer array. */
fwait
1 :
/* Save the address of the FPU context, if any. */
push pucPortTaskFPUContextBuffer
1:
/* Save the address of the FPU context, if any. */
push pucPortTaskFPUContextBuffer
.endif /* configSUPPORT_FPU */
/* Find the TCB. */
movl pxCurrentTCB, % eax
/* Find the TCB. */
movl pxCurrentTCB, %eax
/* Stack location is first item in the TCB. */
movl % esp, ( % eax )
/* Stack location is first item in the TCB. */
movl %esp, (%eax)
/* Switch stacks. */
movl ulTopOfSystemStack, % esp
movl % esp, % ebp
/* Switch stacks. */
movl ulTopOfSystemStack, %esp
movl %esp, %ebp
2 :
/* Increment nesting count. */
add $1, ulInterruptNesting
2:
/* Increment nesting count. */
add $1, ulInterruptNesting
.endm
.endm
/*-----------------------------------------------------------*/
.macro portINTERRUPT_EPILOGUE
.macro portINTERRUPT_EPILOGUE
cli
sub $1, ulInterruptNesting
cli
sub $1, ulInterruptNesting
/* If the nesting has unwound to zero. */
movl ulInterruptNesting, % eax
test % eax, % eax
/* If the nesting has unwound to zero. */
movl ulInterruptNesting, %eax
test %eax, %eax
jne 2f
/* If a yield was requested then select a new TCB now. */
movl ulPortYieldPending, % eax
test % eax, % eax
/* If a yield was requested then select a new TCB now. */
movl ulPortYieldPending, %eax
test %eax, %eax
je 1f
movl $0, ulPortYieldPending
call vTaskSwitchContext
movl $0, ulPortYieldPending
call vTaskSwitchContext
1 :
/* Stack location is first item in the TCB. */
movl pxCurrentTCB, % eax movl( % eax ), % esp
1:
/* Stack location is first item in the TCB. */
movl pxCurrentTCB, %eax
movl (%eax), %esp
.
.if configSUPPORT_FPU == 1
if configSUPPORT_FPU == 1
/* Restore address of task's FPU context buffer. */
pop pucPortTaskFPUContextBuffer
/* Restore address of task's FPU context buffer. */
pop pucPortTaskFPUContextBuffer
/* If the task has a buffer allocated in which its FPU context is saved,
then restore it now. */
movl pucPortTaskFPUContextBuffer, %eax
test %eax, %eax
je 1f
frstor ( %eax )
1:
.endif
/* If the task has a buffer allocated in which its FPU context is saved,
* then restore it now. */
movl pucPortTaskFPUContextBuffer, % eax
test % eax, % eax
je 1f
frstor( % eax )
1 :
.endif
2:
popa
2 :
popa
.endm
.endm
/*-----------------------------------------------------------*/
.macro portFREERTOS_INTERRUPT_EXIT
.macro portFREERTOS_INTERRUPT_EXIT
portINTERRUPT_EPILOGUE
/* EOI. */
movl $0x00, ( 0xFEE000B0 )
iret
portINTERRUPT_EPILOGUE
/* EOI. */
movl $0x00, (0xFEE000B0)
iret
.endm
.endm