m68k & Interrupts
Mon Sep 14 03:23:00 GMT 1998
On 13-Sep-98 Guido Pohl wrote:
> What is the best way to handle the interrupt service routines? I really
> do not mean assembler for the interrupt routines itself ;-)!
> One possible solution. that I can think of, is to use somekind of a
> wrapper function written in assembler, which one and only function is to
> call the actual c-function.
This is the method I have used. You also need to push all the 68k registers onto
the stack before calling the C function. The code I have also pushes the current
stack pointer to make the saved registers and the 68k exception data available
as an argument to the C function. This is useful for BusError etc. but it is
an additional overhead which you may not want.
I can send you the code if it helps.
> Another way would be to write a header and trailer for the c-function
> that clean up the stack. The header would fake the stack, i.e. it would
> put the status register on the stack. The trailer would then have an rte
> after it cleaned up the stack frame of the c-function.
I don't know of a way of doing this with gcc, but if anyone does it would save
one level of call/return.
Mark Powell, Senior Software Engineer, Primagraphics Limited
New Cambridge House, Litlington, nr.Royston, Herts, SG8 0SS, UK
Tel. +44 1763 852222, Fax. 853324, firstname.lastname@example.org, http://www.primag.co.uk
More information about the crossgcc