This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Return from Interrupts for ARM-ELF


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]