Problem with the stack on m68k
Aklilu Noah
naklilu@gpu.srv.ualberta.ca
Wed May 17 11:55:00 GMT 2000
On Wed, 17 May 2000, Art Berggreen wrote:
>
> Is your called function popping the passed arguments off the stack?
> In the standard C calling interface, it is the caller's responsibility
> to clean arguments off the stack. If your subroutine doesn't return the
> stack pointer where the calling function expects, things will break.
>
> Art
>
Probably best explained if I past in my assembly routine
#include "asm.h"
.title "rotate.S for gizmo"
/* Function specifer */
.global SYM(rotateright)
SYM(rotateright):
/* Load input variables from stack */
move.l (sp)+,a0
move.l (sp)+,d0
move.l (sp)+,d1
/* Rotate value and save in d0 */
ror.l d1,d0
/* Return to call function */
move.l a0,-(sp)
rts
The calling convention I am assuming is the one described in the gnupro
manual (on cygnus's site). The one that I was used to was pushing
the result onto the stack and then the return address. If I am
wrong in assuming this.
Noah Aklilu
aklilu@nyquist.ee.ualberta.ca
http://www.ee.ualberta.ca/~aklilu/
"Integrity is something you do when no one is looking"
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
More information about the crossgcc
mailing list