@ -267,6 +267,14 @@ vPortRestoreTaskContext:
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* FreeRTOS_ I R Q _ H a n d l e r h a n d l e s I R Q e n t r y a n d e x i t .
* This h a n d l e r i s s u p p o s e d t o b e u s e d o n l y f o r I R Q s a n d n e v e r f o r F I Q s . P e r A R M
* GIC d o c u m e n t a t i o n [ 1 ] , G r o u p 0 i n t e r r u p t s a r e a l w a y s s i g n a l e d a s F I Q s . S i n c e
* this h a n d l e r i s o n l y f o r I R Q s , W e c a n s a f e l y a s s u m e G r o u p 1 w h i l e a c c e s s i n g
* Interrupt A c k n o w l e d g e a n d E n d O f I n t e r r u p t r e g i s t e r s a n d t h e r e f o r e , u s e
* ICC_ I A R 1 _ E L 1 a n d I C C _ E O I R 1 _ E L 1 .
*
* [ 1 ] https : / / developer. a r m . c o m / d o c u m e n t a t i o n / 1 9 8 1 2 3 / 0 3 0 0 / A r m - C o r e L i n k - G I C - f u n d a m e n t a l s
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
.align 8
.type FreeRTOS_ I R Q _ H a n d l e r , % f u n c t i o n
@ -303,11 +311,11 @@ FreeRTOS_IRQ_Handler:
/* Maintain the interrupt nesting information across the function call. */
STP X 1 , X 5 , [ S P , #- 0x10 ] !
/ * Read va l u e f r o m t h e i n t e r r u p t a c k n o w l e d g e r e g i s t e r , w h i c h i s s t o r e d i n W 0
for f u t u r e p a r a m e t e r a n d i n t e r r u p t c l e a r i n g u s e . * /
MRS X 0 , S 3 _ 0 _ C 1 2 _ C 1 2 _ 0 / * r e a d I C C _ I A R 1 _ E L 1 a n d s t o r e I C C I A R i n X 0 a s p a r a m e t e r * /
/ * Read in t e r r u p t I D f r o m t h e i n t e r r u p t a c k n o w l e d g e r e g i s t e r a n d s t o r e i t
in X 0 f o r f u t u r e p a r a m e t e r a n d i n t e r r u p t c l e a r i n g u s e . * /
MRS X 0 , S 3 _ 0 _ C 1 2 _ C 1 2 _ 0 / * S 3 _ 0 _ C 1 2 _ C 1 2 _ 0 i s I C C _ I A R 1 _ E L 1 . * /
/* Maintain the ICCIAR value across the function call. */
/* Maintain the interrupt ID value across the function call. */
STP X 0 , X 1 , [ S P , #- 0x10 ] !
/* Call the C handler. */
@ -318,11 +326,11 @@ FreeRTOS_IRQ_Handler:
DSB S Y
ISB S Y
/* Restore the ICCIAR value. */
/* Restore the interrupt ID value. */
LDP X 0 , X 1 , [ S P ] , #0x10
/* End IRQ processing by writing ICCIAR to the EOI register. */
MSR S 3 _ 0 _ C 1 2 _ C 1 2 _ 1 , X 0 / * IC C _ E O I R 1 _ E L 1 * /
/* End IRQ processing by writing interrupt ID value to the EOI register. */
MSR S 3 _ 0 _ C 1 2 _ C 1 2 _ 1 , X 0 / * S3 _ 0 _ C 1 2 _ C 1 2 _ 1 i s IC C _ E O I R 1 _ E L 1 . * /
/* Restore the critical nesting count. */
LDP X 1 , X 5 , [ S P ] , #0x10