Hm, I'm not sure what to look for in the other ports specifically, really. The BSP porting documentation doesn't have a section on interrupts, so I'm doing this on more of an "as it comes up" basis.
What I've got right now (the interrupt handlers in C) are what I need for calibrating the APIC timer (through the PIT) - so simply hooking IRQ0 (for the timer) and IRQ7 (spurious vector), since those are needed for the timer work to continue. What constitutes as a requirement for basic interrupt support? On Wed, Aug 1, 2018, 1:29 AM Joel Sherrill <j...@rtems.org> wrote: > > > On Tue, Jul 31, 2018 at 2:52 PM, Amaan Cheval <amaan.che...@gmail.com> > wrote: > >> Hi Chris! >> >> I currently have code like this in >> c/src/lib/libbsp/x86_64/amd64/Makefile.am: >> >> librtemsbsp_a_SOURCES += >> ../../../../../../bsps/x86_64/amd64/interrupts/handlers.c >> # XXX: Needed to use GCC "interrupt" attribute directives - can we >> pass these >> # flags only for the handlers.c source file (compile to an object >> file first and >> # then link with the rest for librtemsbsp.a?) >> librtemsbsp_a_CFLAGS = -mgeneral-regs-only >> >> The CFLAGS arg is required to allow us to use >> "__attribute__((interrupt))" to setup interrupt handlers in C. (See >> [1] and ctrl+f "interrupt" for more.) >> >> Is there a way to not force the CFLAGS for _all_ of librtemsbsp, but >> to limit it only to handlers.c? >> >> If not, is the above code something that would be acceptable to have >> upstream? >> >> [1] >> https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html#x86-Function-Attributes > > > Are we basically talking about the outermost layer of your interrupt > dispatching? > > > Have you looked at the basic approach taken by the other ports? They end > up switching the stack pointer to a dedicated stack on the outermost > interrupt > and, if a context switch/dispatch is needed, arrange for the interrupted > task to call _Thread_Dispatch.But tinker with its stack so some registers > are saved and it looks like it made the call itself. > > If you can do it in C, I am ok with an attribute. I just don't think you > can pull off all the stack and return to dispatch magic that way. > > --joel > >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel