[GSoC - x86_64 - automake] Limit CFLAGS to specific source for librtemsbsp.a

Joel Sherrill joel at rtems.org
Tue Jul 31 19:58:57 UTC 2018


On Tue, Jul 31, 2018 at 2:52 PM, Amaan Cheval <amaan.cheval at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20180731/83eecdb2/attachment-0002.html>


More information about the devel mailing list