Return from Interrupts for ARM-ELF
David Mc Kenna
mckennad@esatclear.ie
Thu Aug 14 11:17:00 GMT 2003
Hi Richard,
Thanks for the reply.
>This disassembly cannot possibly come from the example code you cite above.
>
>1) It calls a pointer to a function
>2) It tries to return a value (interrupt functions must be void).
The pointer is acceptable as it is defined to be a valid function. The return
was a mistake, I had it there to see if it would work but forgot to recompile
my code.
>Yes, use gcc-3.3.1. There have been a large number of problems with
>generating code that returns from interrupts. Hopefully these are now all
>fixed.
>
>Putting your *source* code into gcc 3.3.1 gives:
>
> str ip, [sp, #-4]!
> mov ip, sp
> stmfd sp!, {r0, r1, r2, r3, fp, ip, lr, pc}
> sub fp, ip, #4
> bl IRQ
> ldmea fp, {r0, r1, r2, r3, fp, sp, lr}
> ldmfd sp!, {ip}
> subs pc, lr, #4
>
I have being trying to compile a newer version of gcc (3.3.1 and 3.3-20030811),
I am using 3.2.3 at present, but I am bombing out with the following error:
chmod: changing permissions of `/cygdrive/c/arm/lib/gcc-lib/arm-elf/3.3.2/install-tools/_inst.1700_':
No such file or directory
if [ xstmp-fixproto != x ] ; then \
/bin/sh /usr/local/src/gnu/gcc-3.3-20030811/install-sh -c /usr/local/src/gnu/gcc-3.3-20030811/gcc/mkinstalldirs
\
/cygdrive/c/arm/lib/gcc-lib/arm-elf/3.3.2/install-tools/mkinstalldirs ; \
/bin/sh /usr/local/src/gnu/gcc-3.3-20030811/install-sh -c /usr/local/src/gnu/gcc-3.3-20030811/gcc/fixproto
/cygdrive/c/arm/lib/gcc-lib/arm-elf/3.3.2/install-tools/fixproto ; \
/bin/sh /usr/local/src/gnu/gcc-3.3-20030811/install-sh -c fix-header.exe
\
/cygdrive/c/arm/lib/gcc-lib/arm-elf/3.3.2/install-tools/fix-header.exe ; \
else :; fi
/bin/sh /usr/local/src/gnu/gcc-3.3-20030811/install-sh -c mkheaders /cygdrive/c/arm/lib/gcc-lib/arm-elf/3.3.2/install-tools/mkheaders
cp: cannot create regular file `/cygdrive/c/arm/lib/gcc-lib/arm-elf/3.3.2/install-tools/_inst.1700_':
No such file or directory
make[1]: *** [install-mkheaders] Error 1
make[1]: Leaving directory `/usr/local/src/gnu/BUILD/gcc/gcc'
make: *** [install-gcc] Error 2
make: Leaving directory `/usr/local/src/gnu/BUILD/gcc'
Any ideas? If not is it possible to copy gcc/config/arm/arm.c from 3.3.X to
3.2.3 and use it to implement to fixes?
Thanks,
Dave
--
http://www.iol.ie
------
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