mipsel.r3000-linux.elf-entry.S syscall clobbers t8
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -139,6 +139,7 @@ lxlzma_sv_sp = 10*4
|
|||||||
lxlzma_dst = 9*4
|
lxlzma_dst = 9*4
|
||||||
lxlzma_dstdone = 8*4
|
lxlzma_dstdone = 8*4
|
||||||
lxlzma_srcdone = 7*4
|
lxlzma_srcdone = 7*4
|
||||||
|
lxlzma_retval = lxlzma_srcdone
|
||||||
|
|
||||||
#define a4 t0
|
#define a4 t0
|
||||||
#define a5 t1
|
#define a5 t1
|
||||||
@@ -178,13 +179,16 @@ lxlzma_srcdone = 7*4
|
|||||||
anyway, because the probability history array (typically ushort[7990] or
|
anyway, because the probability history array (typically ushort[7990] or
|
||||||
ushort[14134]) gets initialized.
|
ushort[14134]) gets initialized.
|
||||||
*/
|
*/
|
||||||
move t8,v0 # return value from decompression
|
sw v0,lxlzma_retval(sp) # return value from decompression
|
||||||
|
|
||||||
lw a0,lxlzma_dst(sp)
|
lw a0,lxlzma_dst(sp)
|
||||||
lw a1,lxlzma_dstdone(sp)
|
lw a1,lxlzma_dstdone(sp)
|
||||||
li a2,ICACHE|DCACHE
|
li a2,ICACHE|DCACHE
|
||||||
li v0,__NR_cacheflush
|
li v0,__NR_cacheflush
|
||||||
syscall
|
syscall
|
||||||
|
|
||||||
|
lw v0,lxlzma_retval(sp) # return value from decompression
|
||||||
|
|
||||||
lw tmp,lxlzma_sv_sp(sp)
|
lw tmp,lxlzma_sv_sp(sp)
|
||||||
lw ra,lxlzma_sv_pc(sp)
|
lw ra,lxlzma_sv_pc(sp)
|
||||||
/* Workaround suspected glibc bug: elf/rtld.c assumes uninit local is zero.
|
/* Workaround suspected glibc bug: elf/rtld.c assumes uninit local is zero.
|
||||||
@@ -197,7 +201,7 @@ lxlzma_srcdone = 7*4
|
|||||||
sw $0,-4(sp)
|
sw $0,-4(sp)
|
||||||
|
|
||||||
jr ra
|
jr ra
|
||||||
move v0,t8 # return value from decompression
|
nop
|
||||||
|
|
||||||
|
|
||||||
lzma_decode:
|
lzma_decode:
|
||||||
@@ -220,6 +224,8 @@ lzma_decode:
|
|||||||
eof:
|
eof:
|
||||||
lw v1,(lxdstlen) // original lxdst
|
lw v1,(lxdstlen) // original lxdst
|
||||||
subu t8,lxsrc,lxsrclen // new_src - src_EOF; // return 0: good; else: bad
|
subu t8,lxsrc,lxsrclen // new_src - src_EOF; // return 0: good; else: bad
|
||||||
|
addiu sp,-4
|
||||||
|
sw t8,0(sp)
|
||||||
|
|
||||||
move a0,v1 // original lxdst
|
move a0,v1 // original lxdst
|
||||||
subu a1,lxdst,v1 // actual length generated
|
subu a1,lxdst,v1 // actual length generated
|
||||||
@@ -228,8 +234,9 @@ eof:
|
|||||||
li v0,__NR_cacheflush
|
li v0,__NR_cacheflush
|
||||||
syscall
|
syscall
|
||||||
|
|
||||||
|
lw v0,0(sp)
|
||||||
jr ra
|
jr ra
|
||||||
move v0,t8 # return value from decompression
|
addiu sp,4
|
||||||
|
|
||||||
|
|
||||||
section ELFMAINY
|
section ELFMAINY
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
1 NRV2E 00000218 00000000 00000000 00000054 2**0 CONTENTS, RELOC, READONLY
|
1 NRV2E 00000218 00000000 00000000 00000054 2**0 CONTENTS, RELOC, READONLY
|
||||||
2 NRV2D 000001f0 00000000 00000000 0000026c 2**0 CONTENTS, RELOC, READONLY
|
2 NRV2D 000001f0 00000000 00000000 0000026c 2**0 CONTENTS, RELOC, READONLY
|
||||||
3 NRV2B 000001b4 00000000 00000000 0000045c 2**0 CONTENTS, RELOC, READONLY
|
3 NRV2B 000001b4 00000000 00000000 0000045c 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 LZMA_ELF00 00000098 00000000 00000000 00000610 2**0 CONTENTS, READONLY
|
4 LZMA_ELF00 0000009c 00000000 00000000 00000610 2**0 CONTENTS, READONLY
|
||||||
5 LZMA_DEC20 00000ad8 00000000 00000000 000006a8 2**0 CONTENTS, READONLY
|
5 LZMA_DEC20 00000ad8 00000000 00000000 000006ac 2**0 CONTENTS, READONLY
|
||||||
6 LZMA_DEC10 00000ad8 00000000 00000000 00001180 2**0 CONTENTS, READONLY
|
6 LZMA_DEC10 00000ad8 00000000 00000000 00001184 2**0 CONTENTS, READONLY
|
||||||
7 LZMA_DEC30 00000004 00000000 00000000 00001c58 2**0 CONTENTS, READONLY
|
7 LZMA_DEC30 00000004 00000000 00000000 00001c5c 2**0 CONTENTS, READONLY
|
||||||
8 NRV_HEAD 00000008 00000000 00000000 00001c5c 2**0 CONTENTS, READONLY
|
8 NRV_HEAD 00000008 00000000 00000000 00001c60 2**0 CONTENTS, READONLY
|
||||||
9 NRV_TAIL 00000028 00000000 00000000 00001c64 2**0 CONTENTS, READONLY
|
9 NRV_TAIL 00000034 00000000 00000000 00001c68 2**0 CONTENTS, READONLY
|
||||||
10 ELFMAINY 0000002a 00000000 00000000 00001c8c 2**0 CONTENTS, RELOC, READONLY
|
10 ELFMAINY 0000002a 00000000 00000000 00001c9c 2**0 CONTENTS, RELOC, READONLY
|
||||||
11 ELFMAINZ 000000bc 00000000 00000000 00001cb6 2**0 CONTENTS, READONLY
|
11 ELFMAINZ 000000bc 00000000 00000000 00001cc6 2**0 CONTENTS, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||||
|
|||||||
Reference in New Issue
Block a user