This is the mail archive of the crossgcc@sourceware.cygnus.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more infromation.


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

Re: Problem with the stack on m68k


Noah Aklilu wrote:
> 
> Hi
>         I writing code for a 68306 board using m68k cross compiler,
> and I was getting bus and address errors from my code, not always
> in the same location.  It seems to be related to problems with the
> stack, I have noticed that the compiler allocates portions of the
> stack using "link" (e.g. link a6,#$FFEF) to create space for
> variables.  How does one control the maximum stack size?
> Some of the errors seem to be related to corrupt files being
> read back from the variable spaced allocated with "link".  I
> have tested my memory to make sure it is fine.
> Having written a few perl programs lately, my main function
> ended up being a little large (about 200 lines).  As a result it seems
> to allocate a large chunk of (about 0xffff) of the stack as variable
> space. I have another
> program that I tested and it is much smaller (about 20 lines)
> and it runs to finish without any problems.
> 
> 
> I want to check another thing. When calling assembly routines
> from c code, my routine assumes the first value it pops from the
> stack is the return address, and the next two values, its input
> parameters.  So I pop off the return address, save it in a0 (which I
> believe I can use as scratch space), and push it back onto the
> stack before returning using rts.

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

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


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