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

Loading…
Cancel
Save