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

Amaan Cheval amaan.cheval at gmail.com
Tue Jul 31 20:05:52 UTC 2018


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 <joel at rtems.org> wrote:

>
>
> 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/20180801/353b6eb0/attachment-0002.html>


More information about the devel mailing list