ARM and interrupts

Toralf Lund toralf@procaptura.com
Fri Mar 19 16:51:00 GMT 2004


Bill Gatliff wrote:

> Toralf:
>
>
> I've written ISRs in C, but you don't want to do that with GNU.  What 
> you want to do instead is provide a "stub" ISR in assembly language 
> (only two or three instructions), that calls the C "ISR".  That way, 
> you aren't dependent on gcc's intermittent support of the 
> __interrupt__ attribute.

Is what you are saying basically that __attribute__((interrupt)) doesn't 
work? I did find the doc on this after all (in gcc info page), and tried

__attribute__((interrupt("IRQ"))) void IRQ_Handler(void)

but got

mc9328irq.c:88: warning: `interrupt' attribute directive ignored

>
> See the Evaluator7T tutorial in the wiki or under 'articles' on my 
> website, I think I provide a few examples.
>
> Regards,
>
>
> b.g.
>
>
> Toralf Lund wrote:
>
>> [ ... ]
>>
>>>
>>>
>>> The book is good, but it isn't cheap.  But hey, lack of knowledge on 
>>> these details is even more expensive!
>>>
>>>> We also found some example code for a test board from Motorola 
>>>> (we're actually using a Motorola CPU with ARM core), and it turns 
>>>> out that they also have an "Interrupt Controler" application note 
>>>> that's quite helpful (unlike the CPU reference manual, I might add..) 
>>>
>>>
>>>
>>>
>>>
>>> Yes, I was going to mention something related to that.  With the 
>>> "advanced/vectored interrupt controllers" that are all the rage now, 
>>> there are some nifty tricks you can use to really boost interrupt 
>>> handling performance.  I have examples, but if there are some in 
>>> your manuals then go with them.
>>
>>
>>
>> BTW, have you written interrupt handlers in C? I'm unsure how to set 
>> the functions to make them return the correct way etc., or if that's 
>> even possible with gcc. The example code uses the __irq keyword (as 
>> in "void __irq FIQ_Handler(void)") to do it, but this doesn't work 
>> with gcc, I think.
>>
>>>
>>>
>>> b.g.
>>>
>>
>> - Toralf
>>
>> ------
>> Want more information?  See the CrossGCC FAQ, 
>> http://www.objsw.com/CrossGCC/
>> Want to unsubscribe? Send a note to 
>> crossgcc-unsubscribe@sources.redhat.com
>>
>


-- 
Toralf Lund <toralf@procaptura.com> +47 66 85 51 22
ProCaptura AS                       +47 66 85 51 00 (switchboard)
http://www.procaptura.com/~toralf   +47 66 85 51 01 (fax)


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list