ramips: lzma-loader: fix O32 ABI conformance
According to the calling convention of the o32 ABI the caller function must reserve stack space for $a0-$a3 registers in case the callee needs to save its arguments. The assembly startup code does not reserve stack space for these registers thus when the main C function needs to save its arguments, that will cause a stack overflow. Fix the assembly code to reserve stack space for the registers to avoid that. Untested. It seems that the lzma-loader is not used at all? Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 49062
This commit is contained in:
parent
4d0681d865
commit
fc5c19f45b
1 changed files with 3 additions and 0 deletions
|
@ -109,6 +109,9 @@ __bss_check:
|
||||||
/* Setup new "C" stack */
|
/* Setup new "C" stack */
|
||||||
la sp, _stack
|
la sp, _stack
|
||||||
|
|
||||||
|
/* reserve stack space for a0-a3 registers */
|
||||||
|
subu sp, 16
|
||||||
|
|
||||||
/* jump to the decompressor routine */
|
/* jump to the decompressor routine */
|
||||||
la t0, loader_main
|
la t0, loader_main
|
||||||
jr t0
|
jr t0
|
||||||
|
|
Loading…
Reference in a new issue