Skip to content

Commit c13719d

Browse files
Atomar25Amit-Raduralfred2gn9wxu
authored
fix alignment exception for ullPortInterruptNesting. (#317)
* fix alignment exception for ullPortInterruptNesting. While loading (LDR X5, ullPortInterruptNestingConst) the ullPortInterruptNesting variable, the program control seems to be stuck and there is no abort or stack trace observed (as there is no exception handler is installed to catch unaligned access exception). Program control moves forward, if one just declares this varible to be 2 bytes aligned but then varible is not updated properly. One of my colleague, pointed out that issue is due to the fact that ullPortInterruptNesting must be at 8 bytes aligned address but since "vApplicationIRQHandler" (that has 4 bytes of address) is sitting between two 8 bytes aligned addresses that forces ullPortInterruptNesting to be at 4 byte aligned address, causing all sort of mess. It works on QEMU (on ARM64) as it is, since there is no such check for unaligned access but on real hardware it is prohibited. Workaround to this problem is, either we skip 4 byets (using .align 4) after vApplicationIRQHandler declaration or declare it the end of all declarations. This commit does the latter one. Signed-off-by: Amit Singh Tomar <atomar25opensource@gmail.com> * Update portASM.S Remove 1 tab = 4 spaces Co-authored-by: Amit Singh Tomar <atomar25opensource@gmail.com> Co-authored-by: alfred gedeon <28123637+alfred2g@users.noreply.github.com> Co-authored-by: Joseph Julicher <jjulicher@mac.com>
1 parent 7b95420 commit c13719d

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

portable/GCC/ARM_CA53_64_BIT/portASM.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,11 +416,11 @@ ullPortTaskHasFPUContextConst: .dword ullPortTaskHasFPUContext
416416

417417
ullICCPMRConst: .dword ullICCPMR
418418
ullMaxAPIPriorityMaskConst: .dword ullMaxAPIPriorityMask
419-
vApplicationIRQHandlerConst: .word vApplicationIRQHandler
420419
ullPortInterruptNestingConst: .dword ullPortInterruptNesting
421420
ullPortYieldRequiredConst: .dword ullPortYieldRequired
422421
ullICCIARConst: .dword ullICCIAR
423422
ullICCEOIRConst: .dword ullICCEOIR
423+
vApplicationIRQHandlerConst: .word vApplicationIRQHandler
424424

425425

426426

0 commit comments

Comments
 (0)