Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: Interrupt Question

2004-06-16 by jpmarm2004

--- In lpc2000@yahoogroups.com, Jens Hildebrandt
<jens.hildebrandt@e...> wrote:
> Karl Olsen wrote:
> > The interrupt entry and exit code in gcc 3.2.x and older doesn't 
> > work.  Either upgrade to gcc 3.3.x, where it works, or write the 
> > entry/exit code yourself.
> > 
> > Regards,
> > Karl Olsen
> >  
> 
> Hi Karl,
> 
> thanks for the clear answer. I just wanted to be sure that an
upgrade of gcc 
> wouldn't be in vain (at least with respect to my problem).
> 
> Regards,
> Jens
Hi:
I checked a code with GCC 3.4.0 and the code generated seems to be
logically correct:

The following C code for testing GCC 3.4 Interrupt handling capability
created the ARM assembler code shown below the C code:
                                                                     
                
C code:
-------------------------------------------------
void isr_IRQ()  __attribute__((interrupt("IRQ")));
extern void dummy();
void isr_IRQ()
{
        dummy();
}
------------------------------------------------
Assembler Code:
--------------------------------
        .file   "testInt.c"
        .text
        .align  2
        .global isr_IRQ
        .type   isr_IRQ, %function
isr_IRQ:
        @ Interrupt Service Routine.
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 1, uses_anonymous_args = 0
        str     ip, [sp, #-4]!  
        mov     ip, sp          
        stmfd   sp!, {r0, r1, r2, r3, fp, ip, lr, pc} 
        sub     fp, ip, #4      
        bl      dummy           
        ldmfd   sp, {r0, r1, r2, r3, fp, sp, lr} 
        ldmfd   sp!, {ip}       
        subs    pc, lr, #4      // load pc with next instruction from
interrupted program and restore CPSR (note the s bit)
        .size   isr_IRQ, .-isr_IRQ
        .ident  "GCC: (GNU) 3.4.0"
----------------------------------------                             
        
I don't have a system to check it out. Could anyone confirm if this is
OK? 
Regards
Mathew

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.