* STG-to-C glue.
*
* To run an STG function from C land, call
*
* rv = StgRun(f,BaseReg);
*
* where "f" is the STG function to call, and BaseReg is the address of the
* RegTable for this run (we might have separate RegTables if we're running
* multiple threads on an SMP machine).
*
* In the end, "f" must JMP to StgReturn (defined below),
* passing the return-value "rv" in R1,
* to return to the caller of StgRun returning "rv" in
* the whatever way C returns a value.
*
* NOTE: StgRun/StgReturn do *NOT* load or store Hp or any
* other registers (other than saving the C callee-saves
* registers). Instead, the called function "f" must do that
* in STG land.
*
* GCC will have assumed that pushing/popping of C-stack frames is
* going on when it generated its code, and used stack space
* accordingly. However, we actually {\em post-process away} all
* such stack-framery (see \tr{ghc/driver/ghc-asm.lprl}). Things will
* be OK however, if we initially make sure there are
* @RESERVED_C_STACK_BYTES@ on the C-stack to begin with, for local
* variables.