[coldfire-gnu-discuss] Interrupts failing in 4.2-8 but had working in 4.1-32

Carlos O'Donell carlos at codesourcery.com
Mon Jun 25 20:19:06 UTC 2007

On Sun, Jun 24, 2007 at 12:26:23AM +0200, Mark Butcher wrote:
>    There are some uTasker users who's projects are based on CodeSourcery GNU.
>    Some registers users have 4.2.15 and found that the project would no
>    longer run but immediately crashes due to an address error.
>    Therefore I have just downloaded the 4.2-8 Lite (which is probably 4.2.15
>    like) to see what happens and it is the same on my M52235 board - the
>    reference project doesn't run.
>    The reason that I see is that the interrupt routines are trying to return
>    using RTS (rather than RTI) which result in instant death.

How are the interrupt routines written? 

>    Can anyone explain why the __attribute__((interrupt_handler)) is no longer
>    recognised and how to get around the problem?

I can use __attribute__((interrupt_handler)) with our 4.2-8 Lite tools
without a problem:

cat >> test.c <<EOF
int __attribute__((interrupt_handler)) foo () {
  return 0;
m68k-elf-gcc -c test.c

test.o:     file format elf32-m68k
Disassembly of section .text:
00000000 <foo>:
   0:   4e56 0000       linkw %fp,#0
   4:   2f00            movel %d0,%sp at -
   6:   4280            clrl %d0
   8:   201f            movel %sp at +,%d0
   a:   4e5e            unlk %fp
   c:   4e73            rte

What problem are you seeing?

Carlos O'Donell
carlos at codesourcery.com
(650) 331-3385 x716

More information about the coldfire-gnu-discuss mailing list