Skip to content

Handle interrupt acknowledge register in Cortex-A53 SRE port #392

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions portable/GCC/ARM_CA53_64_BIT_SRE/portASM.S
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,13 @@ FreeRTOS_IRQ_Handler:
/* Maintain the interrupt nesting information across the function call. */
STP X1, X5, [SP, #-0x10]!

/* Read value from the interrupt acknowledge register, which is stored in W0
for future parameter and interrupt clearing use. */
MRS X0, S3_0_C12_C12_0 /* read ICC_IAR1_EL1 and store ICCIAR in X0 as parameter */

/* Maintain the ICCIAR value across the function call. */
STP X0, X1, [SP, #-0x10]!

/* Call the C handler. */
BL vApplicationIRQHandler

Expand All @@ -311,6 +318,12 @@ FreeRTOS_IRQ_Handler:
DSB SY
ISB SY

/* Restore the ICCIAR value. */
LDP X0, X1, [SP], #0x10

/* End IRQ processing by writing ICCIAR to the EOI register. */
MSR S3_0_C12_C12_1, X0 /* ICC_EOIR1_EL1 */

/* Restore the critical nesting count. */
LDP X1, X5, [SP], #0x10
STR X1, [X5]
Expand Down