When comparing the file chcore.h from ChibiOS_3.0.2\ChibiOS_3.0.2\os\rt\ports\ARM with older versions of this file (e. g. http://chibios.sourceforge.net/html/por ... tml#l00279) I'm wondering why some definitions have been changed significantly, in particular the macros PORT_IRQ_PROLOGUE, PORT_IRQ_EPILOGUE and PORT_IRQ_HANDLER. Where is the assembler code from the prologue and epilogue gone? Why does PORT_IRQ_HANDLER suddenly return a boolean?
@Giovanni: Have you ever thought of using the function attribute interrupt("IRQ") there just like you did in PORT_FAST_IRQ_HANDLER?
Interrupt Service Routine Defines for ARM
- Giovanni
- Site Admin
- Posts: 14455
- Joined: Wed May 27, 2009 8:48 am
- Location: Salerno, Italy
- Has thanked: 1076 times
- Been thanked: 922 times
- Contact:
Re: Interrupt Service Routine Defines for ARM
Hi,
The IRQ handler is written in asm, it calls the C handlers but the low level stuff is done in the asm part, handlers are normal C functions. The boolean is used in order to communicate to the asm part if a reschedule is required.
interrup("IRQ") does not perform the necessary registers work done in the asm handler.
See chcoreasm.s at line 138 and following.
Giovanni
The IRQ handler is written in asm, it calls the C handlers but the low level stuff is done in the asm part, handlers are normal C functions. The boolean is used in order to communicate to the asm part if a reschedule is required.
interrup("IRQ") does not perform the necessary registers work done in the asm handler.
See chcoreasm.s at line 138 and following.
Giovanni
Who is online
Users browsing this forum: No registered users and 10 guests