Fix compilation issue of IA32_flat port (#1122)

* Fix compilation issue of IAR32 port

* Add new line at EOF

* Fix header check

---------

Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
pull/1112/head^2
Rahul Kar 6 months ago committed by GitHub
parent 294569e495
commit 49e88310be
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -26,106 +26,103 @@
*
*/
.extern ulTopOfSystemStack
.extern ulInterruptNesting
.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 */
.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
cli
sub $1, ulInterruptNesting
.macro portINTERRUPT_EPILOGUE
/* If the nesting has unwound to zero. */
movl ulInterruptNesting, % eax
test % eax, % eax
jne 2f
cli
sub $1, ulInterruptNesting
/* If a yield was requested then select a new TCB now. */
movl ulPortYieldPending, % eax
test % eax, % eax
je 1f
movl $0, ulPortYieldPending
call vTaskSwitchContext
/* If the nesting has unwound to zero. */
movl ulInterruptNesting, %eax
test %eax, %eax
jne 2f
1 :
/* Stack location is first item in the TCB. */
movl pxCurrentTCB, % eax movl( % eax ), % esp
/* If a yield was requested then select a new TCB now. */
movl ulPortYieldPending, %eax
test %eax, %eax
je 1f
movl $0, ulPortYieldPending
call vTaskSwitchContext
.
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

Loading…
Cancel
Save