I think VIC_GCCFIX_IRQ_EPILOGUE should be:
#define VIC_GCCFIX_IRQ_EPILOGUE() \
__asm__ __volatile__( " ldmia sp!, {r0-r12,pc}^
\n");
The "^" tells the arm to copy SPSR to CPSR.
Richard.
Sten wrote:
> frankcallaghan9 wrote:
> >
> > Hi Guys,
> > I've just hit this problem in my UART handler, I'm new to the ARM
> > and haven't used it's asm yet! could one of you ASM gurus
> > please post the required inline entry/exit code for us dummys
> > thanks,
>
> Hello Frank,
>
> if you want to use "manually" written prologue/epilogue instead of a
> stub try this:
>
> #define
> VIC_GCCFIX_IRQ_PROLOGUE() \
> __asm__ __volatile__( " sub lr, lr,
> #4 \n" \
> " stmdb sp!,
> {r0-r12,lr} \n");
> #define VIC_GCCFIX_IRQ_EPILOGUE() \
> __asm__ __volatile__( " ldmia sp!,
> {r0-r12,pc} \n");
>
> void myIRQ(void) __attribute__((interrupt("IRQ"), naked));
>
> void myIRQ(void) {
> VIC_GCCFIX_IRQ_PROLOGUE();
> /* ... */
> VIC_GCCFIX_IRQ_EPILOGUE();
> }
>
> Sten
>Message
Re: [lpc2000] Re: {To TomW} GCC-Bug in IRQs
2006-03-27 by Richard Duits
Attachments
- No local attachments were found for this message.