Interrupt Service Routine Defines for ARM

Discussions and support about ChibiOS/RT, the free embedded RTOS.
Stefan
Posts: 1
Joined: Mon Oct 05, 2015 8:21 am

Interrupt Service Routine Defines for ARM

Postby Stefan » Mon Oct 05, 2015 8:39 am

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?

User avatar
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

Postby Giovanni » Mon Oct 05, 2015 9:08 am

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


Return to “ChibiOS/RT”

Who is online

Users browsing this forum: No registered users and 10 guests