| |||
| Home > The C and C++ libraries > __user_setup_stackheap() | |||
__user_setup_stackheap() sets up and
returns the locations of the initial stack and heap. If you define
this function, it is called by the C library during program start-up.
When __user_setup_stackheap() is called, sp has
the same value it had on entry to the application. If this was set
to a valid value before calling the C library initialization code,
it can be left at this value. If sp is not valid, __user_setup_stackheap() must
change this value before using any stack and before returning.
__user_setup_stackheap() returns the:
heap base in r0 (if
the program uses the heap)
stack base in sp
heap limit in r2 (if the program
uses the heap).
If this function is re-implemented, it must:
not corrupt registers other than r0 to r3, ip and sp
maintain eight-byte alignment of the heap by ensuring that the heap base is a multiple of eight.
To create a version of __user_setup_stackheap() that
inherits sp from the execution environment and
does not have a heap, set r0 and r2 to zero and
return.
There is no limit to the size of the stack. However, if the
heap region grows into the stack, malloc() attempts
to detect the overlapping memory and fails the new memory allocation request.
__user_setup_stackheap() must be reimplemented
in assembler.
Using ARM® C and C++ Libraries and Floating-Point Support: