arm/pe: lzma works for v4t too

minor changes in v4a code
This commit is contained in:
László Molnár
2006-07-23 16:13:10 +02:00
parent 1dcee2ffa2
commit 3bcc06ed09
11 changed files with 4771 additions and 2519 deletions
+8 -6
View File
@@ -183,14 +183,16 @@ PackArmPe::~PackArmPe()
const int *PackArmPe::getCompressionMethods(int method, int level) const const int *PackArmPe::getCompressionMethods(int method, int level) const
{ {
static const int m_nrv2b[] = { M_NRV2B_8, M_NRV2E_8, M_END }; static const int m_nrv2b[] = { M_NRV2B_8, M_NRV2E_8, M_LZMA, M_END };
static const int m_nrv2e[] = { M_NRV2E_8, M_NRV2B_8, M_END }; static const int m_nrv2e[] = { M_NRV2E_8, M_NRV2B_8, M_LZMA, M_END };
static const int m_nrv2d_v4[] = { M_NRV2D_8, M_NRV2E_8, M_LZMA, M_END }; static const int m_nrv2d_v4[] = { M_NRV2D_8, M_NRV2E_8, M_LZMA, M_END };
static const int m_nrv2e_v4[] = { M_NRV2E_8, M_NRV2D_8, M_LZMA, M_END }; static const int m_nrv2e_v4[] = { M_NRV2E_8, M_NRV2D_8, M_LZMA, M_END };
static const int m_lzma_v4[] = { M_LZMA, M_END }; static const int m_lzma[] = { M_LZMA, M_END };
UNUSED(level); UNUSED(level);
if (M_IS_LZMA(method))
return m_lzma;
// FIXME this when we have v4 mode nrv2b // FIXME this when we have v4 mode nrv2b
if (!use_thumb_stub) if (!use_thumb_stub)
{ {
@@ -198,8 +200,6 @@ const int *PackArmPe::getCompressionMethods(int method, int level) const
return m_nrv2e_v4 ; return m_nrv2e_v4 ;
if (M_IS_NRV2D(method)) if (M_IS_NRV2D(method))
return m_nrv2d_v4; return m_nrv2d_v4;
if (M_IS_LZMA(method))
return m_lzma_v4;
return m_nrv2e_v4; return m_nrv2e_v4;
} }
@@ -1672,7 +1672,7 @@ int PackArmPe::buildLoader(const Filter *ft)
else if (ph.method == M_NRV2D_8) else if (ph.method == M_NRV2D_8)
addLoader("Call2D", NULL); addLoader("Call2D", NULL);
else if (M_IS_LZMA(ph.method)) else if (M_IS_LZMA(ph.method))
addLoader("LZMA_0", NULL); addLoader("+40C,CallLZMA", NULL);
if (ft->id == 0x50) if (ft->id == 0x50)
@@ -1699,6 +1699,8 @@ int PackArmPe::buildLoader(const Filter *ft)
addLoader(".ucl_nrv2e_decompress_8", NULL); addLoader(".ucl_nrv2e_decompress_8", NULL);
else if (ph.method == M_NRV2B_8) else if (ph.method == M_NRV2B_8)
addLoader(".ucl_nrv2b_decompress_8", NULL); addLoader(".ucl_nrv2b_decompress_8", NULL);
else if (M_IS_LZMA(ph.method))
addLoader("+40C,LZMA_DECODE,.text.LzmaDecode", NULL);
} }
addLoader("IDENTSTR,UPX1HEAD", NULL); addLoader("IDENTSTR,UPX1HEAD", NULL);
+1213 -1213
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -27,7 +27,7 @@ lzma_d_c%.S : tc_list = arm-lzma arm-linux.elf default
lzma_d_c%.S : tc_bfdname = elf32-littlearm lzma_d_c%.S : tc_bfdname = elf32-littlearm
tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc) tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc)
tc.arm-lzma.gcc += -march=armv4 -fPIC tc.arm-lzma.gcc += -march=armv4
tc.arm-lzma.gcc += -Os tc.arm-lzma.gcc += -Os
tc.arm-lzma.gcc += -ffunction-sections tc.arm-lzma.gcc += -ffunction-sections
tc.arm-lzma.gcc += -I$(UPX_LZMADIR) tc.arm-lzma.gcc += -I$(UPX_LZMADIR)
+198 -208
View File
@@ -52,22 +52,22 @@ LzmaDecodeProperties:
.global LzmaDecode .global LzmaDecode
.type LzmaDecode, %function .type LzmaDecode, %function
LzmaDecode: LzmaDecode:
@ args = 12, pretend = 0, frame = 64 @ args = 12, pretend = 0, frame = 52
@ frame_needed = 0, uses_anonymous_args = 0 @ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr} stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
sub sp, sp, #64 sub sp, sp, #52
str r3, [sp, #56] str r3, [sp, #44]
mov r3, #0 mov r3, #0
str r3, [sp, #48] str r3, [sp, #36]
ldrb ip, [r0, #0] @ zero_extendqisi2 ldrb ip, [r0, #0] @ zero_extendqisi2
ldrb r4, [r0, #1] @ zero_extendqisi2 ldrb r4, [r0, #1] @ zero_extendqisi2
ldrb lr, [r0, #2] @ zero_extendqisi2 ldrb lr, [r0, #2] @ zero_extendqisi2
str ip, [sp, #36] str ip, [sp, #24]
ldr ip, [sp, #56] ldr ip, [sp, #44]
str r3, [ip, #0] str r3, [ip, #0]
ldr ip, [sp, #104] ldr ip, [sp, #96]
str r3, [ip, #0] str r3, [ip, #0]
ldr r3, [sp, #36] ldr r3, [sp, #24]
ldrb ip, [r0, #1] @ zero_extendqisi2 ldrb ip, [r0, #1] @ zero_extendqisi2
add ip, r3, ip add ip, r3, ip
mov r3, #768 mov r3, #768
@@ -76,42 +76,42 @@ LzmaDecode:
mov r3, #1 mov r3, #1
mov lr, r3, asl lr mov lr, r3, asl lr
sub lr, lr, #1 sub lr, lr, #1
str r3, [sp, #28] str r3, [sp, #16]
mov r3, r3, asl r4 mov r3, r3, asl r4
str lr, [sp, #44] str lr, [sp, #32]
mov r4, #0 mov r4, #0
mov lr, #1 mov lr, #1
sub r3, r3, #1 sub r3, r3, #1
add r0, r0, #4 add r0, r0, #4
add ip, ip, #6 add ip, ip, #6
str r3, [sp, #40] str r3, [sp, #28]
str r0, [sp, #52] str r0, [sp, #40]
str r4, [sp, #32] str r4, [sp, #20]
str lr, [sp, #24] str lr, [sp, #12]
str lr, [sp, #20] str lr, [sp, #8]
str lr, [sp, #16] str lr, [sp, #4]
str r1, [sp, #60] str r1, [sp, #48]
cmp r4, ip cmp r4, ip
mov r1, r4 mov r1, r4
.L157: .L157:
bcs .L132 bcs .L132
mov r3, r1, asl #1 mov r3, r1, asl #1
ldr r0, [sp, #52] ldr r0, [sp, #40]
add r1, r1, #1 add r1, r1, #1
mov lr, #1024 @ movhi mov lr, #1024 @ movhi
cmp r1, ip cmp r1, ip
strh lr, [r3, r0] @ movhi strh lr, [r3, r0] @ movhi
b .L157 b .L157
.L132: .L132:
ldr r0, [sp, #60] ldr r0, [sp, #48]
mov r8, #0 mov r8, #0
add r2, r0, r2 add r2, r0, r2
str r2, [sp, #12] str r2, [sp, #0]
mov r7, r0 mov r7, r0
mvn lr, #0 mvn lr, #0
mov r2, r8 mov r2, r8
.L28: .L28:
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
add r2, r2, #1 add r2, r2, #1
beq .L155 beq .L155
@@ -119,28 +119,28 @@ LzmaDecode:
cmp r2, #4 cmp r2, #4
orr r8, r3, r8, asl #8 orr r8, r3, r8, asl #8
ble .L28 ble .L28
ldr r2, [sp, #48] ldr r2, [sp, #36]
ldr r3, [sp, #100] ldr r3, [sp, #92]
cmp r2, r3 cmp r2, r3
.L158: .L158:
bcs .L30 bcs .L30
add r0, sp, #44 add r0, sp, #32
ldmia r0, {r0, ip} @ phole ldm ldmia r0, {r0, ip} @ phole ldm
ldr r1, [sp, #32] ldr r1, [sp, #20]
and fp, ip, r0 and r9, ip, r0
mvn r9, #-16777216 mvn sl, #-16777216
add r3, fp, r1, asl #4 add r3, r9, r1, asl #4
cmp lr, r9 cmp lr, sl
mov r5, r3, asl #1 mov r5, r3, asl #1
bhi .L31 bhi .L31
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8 mov lr, lr, asl #8
orr r8, r3, r8, asl #8 orr r8, r3, r8, asl #8
.L31: .L31:
ldr r3, [sp, #52] ldr r3, [sp, #40]
ldrh r1, [r5, r3] ldrh r1, [r5, r3]
mov r2, r1, asl #16 mov r2, r1, asl #16
mov r3, lr, lsr #11 mov r3, lr, lsr #11
@@ -148,18 +148,18 @@ LzmaDecode:
mul ip, r0, r3 mul ip, r0, r3
cmp r8, ip cmp r8, ip
bcs .L33 bcs .L33
ldr lr, [sp, #36] ldr lr, [sp, #24]
rsb r3, lr, #8 rsb r3, lr, #8
mov r3, r4, asr r3 mov r3, r4, asr r3
ldr lr, [sp, #40] ldr lr, [sp, #28]
ldr r4, [sp, #48]
and r2, r4, lr
ldr r4, [sp, #36] ldr r4, [sp, #36]
ldr lr, [sp, #52] and r2, r4, lr
ldr r4, [sp, #24]
ldr lr, [sp, #40]
add r3, r3, r2, asl r4 add r3, r3, r2, asl r4
add r3, r3, r3, asl #1 add r3, r3, r3, asl #1
rsb r2, r0, #2048 rsb r2, r0, #2048
ldr r0, [sp, #32] ldr r0, [sp, #20]
add r3, lr, r3, asl #9 add r3, lr, r3, asl #9
add r2, r1, r2, asr #5 add r2, r1, r2, asr #5
add r4, r3, #3680 add r4, r3, #3680
@@ -167,27 +167,24 @@ LzmaDecode:
strh r2, [r5, lr] @ movhi strh r2, [r5, lr] @ movhi
add r4, r4, #12 add r4, r4, #12
mov lr, ip mov lr, ip
mov fp, #1 mov r9, #1
ble .L50 ble .L50
ldr r1, [sp, #48] ldr r1, [sp, #36]
ldr r2, [sp, #28] ldr r2, [sp, #16]
ldr ip, [sp, #96] ldr ip, [sp, #88]
rsb r3, r2, r1 rsb r3, r2, r1
ldrb r3, [ip, r3] @ zero_extendqisi2 ldrb fp, [ip, r3] @ zero_extendqisi2
str r3, [sp, #8]
.L35: .L35:
ldr r0, [sp, #8] mov fp, fp, asl #1
mov r0, r0, asl #1 and r6, fp, #256
and r6, r0, #256 mov sl, r9, asl #1
mov r9, fp, asl #1
add r3, r4, r6, asl #1 add r3, r4, r6, asl #1
add r3, r3, r9 add r3, r3, sl
cmp lr, #16777216 cmp lr, #16777216
str r0, [sp, #8]
add r5, r3, #512 add r5, r3, #512
bcs .L38 bcs .L38
ldr r1, [sp, #12] ldr r0, [sp, #0]
cmp r7, r1 cmp r7, r0
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -201,7 +198,7 @@ LzmaDecode:
rsb r3, r3, #2048 rsb r3, r3, #2048
cmp r8, ip cmp r8, ip
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
mov fp, r9 mov r9, sl
sub r2, r2, r1, lsr #21 sub r2, r2, r1, lsr #21
bcs .L40 bcs .L40
cmp r6, #0 cmp r6, #0
@@ -213,23 +210,23 @@ LzmaDecode:
cmp r6, #0 cmp r6, #0
strh r2, [r5, #0] @ movhi strh r2, [r5, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add fp, r9, #1 add r9, sl, #1
rsb lr, ip, lr rsb lr, ip, lr
beq .L34 beq .L34
.L37: .L37:
cmp fp, #255 cmp r9, #255
ble .L35 ble .L35
b .L137 b .L137
.L34: .L34:
cmp fp, #255 cmp r9, #255
bgt .L137 bgt .L137
.L50: .L50:
mov r5, fp, asl #1 mov r5, r9, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov fp, r5 mov r9, r5
bcs .L46 bcs .L46
ldr r2, [sp, #12] ldr r1, [sp, #0]
cmp r7, r2 cmp r7, r1
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -247,42 +244,42 @@ LzmaDecode:
sub r2, r2, r0, lsr #21 sub r2, r2, r0, lsr #21
movcc lr, ip movcc lr, ip
rsbcs r8, ip, r8 rsbcs r8, ip, r8
addcs fp, r5, #1 addcs r9, r5, #1
strcch r3, [r4, r5] @ movhi strcch r3, [r4, r5] @ movhi
strcsh r2, [r4, r5] @ movhi strcsh r2, [r4, r5] @ movhi
b .L34 b .L34
.L137: .L137:
ldr r3, [sp, #32] ldr r2, [sp, #20]
ldr ip, [sp, #48] ldr r3, [sp, #36]
ldr r0, [sp, #96] ldr ip, [sp, #88]
cmp r3, #3 cmp r2, #3
and r4, fp, #255 and r4, r9, #255
strb r4, [ip, r0] strb r4, [r3, ip]
movle r1, #0 movle r0, #0
add ip, ip, #1 add r3, r3, #1
str ip, [sp, #48] str r3, [sp, #36]
strle r1, [sp, #32] strle r0, [sp, #20]
ble .L29 ble .L29
ldr r2, [sp, #32] ldr r1, [sp, #20]
cmp r2, #9 cmp r1, #9
ldrgt r3, [sp, #32] ldrgt r2, [sp, #20]
suble r2, r2, #3 suble r1, r1, #3
subgt r3, r3, #6 subgt r2, r2, #6
strle r2, [sp, #32] strle r1, [sp, #20]
strgt r3, [sp, #32] strgt r2, [sp, #20]
b .L29 b .L29
.L33: .L33:
ldr r4, [sp, #52] ldr r4, [sp, #40]
ldr r0, [sp, #32] ldr r0, [sp, #20]
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r1, r2, lsr #21 sub r3, r1, r2, lsr #21
add r6, r4, r0, asl #1 add r6, r4, r0, asl #1
cmp lr, r9 cmp lr, sl
strh r3, [r5, r4] @ movhi strh r3, [r5, r4] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #384 add r4, r6, #384
bhi .L56 bhi .L56
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -299,31 +296,31 @@ LzmaDecode:
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
ldr r2, [sp, #52] ldr r2, [sp, #40]
ldr r3, [sp, #32] ldr r3, [sp, #20]
ldr lr, [sp, #20] ldr lr, [sp, #8]
cmp r3, #6 cmp r3, #6
ldr r0, [sp, #24] ldr r0, [sp, #12]
add r4, r2, #1632 add r4, r2, #1632
ldr r1, [sp, #28] ldr r1, [sp, #16]
movgt r3, #3 movgt r3, #3
movle r3, #0 movle r3, #0
str lr, [sp, #16] str lr, [sp, #4]
add r4, r4, #4 add r4, r4, #4
mov lr, ip mov lr, ip
str r3, [sp, #32] str r3, [sp, #20]
str r0, [sp, #20] str r0, [sp, #8]
str r1, [sp, #24] str r1, [sp, #12]
b .L61 b .L61
.L58: .L58:
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r2, r0, lsr #21 sub r3, r2, r0, lsr #21
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #408 add r4, r6, #408
bhi .L62 bhi .L62
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -338,17 +335,17 @@ LzmaDecode:
cmp r8, ip cmp r8, ip
bcs .L64 bcs .L64
mov lr, ip mov lr, ip
ldr r0, [sp, #32] ldr r0, [sp, #20]
ldr ip, [sp, #52] ldr ip, [sp, #40]
rsb r3, r2, #2048 rsb r3, r2, #2048
add r2, ip, r0, asl #5 add r2, ip, r0, asl #5
add r3, r1, r3, asr #5 add r3, r1, r3, asr #5
add r2, r2, fp, asl #1 add r2, r2, r9, asl #1
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
add r4, r2, #480 add r4, r2, #480
bhi .L65 bhi .L65
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -368,33 +365,33 @@ LzmaDecode:
bcs .L72 bcs .L72
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
ldr r2, [sp, #48] ldr r2, [sp, #36]
cmp r2, #0 cmp r2, #0
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
mov lr, ip mov lr, ip
beq .L155 beq .L155
ldr r4, [sp, #28] ldr r4, [sp, #16]
ldr r0, [sp, #32] ldr r0, [sp, #20]
ldr ip, [sp, #96] ldr ip, [sp, #88]
rsb r3, r4, r2 rsb r3, r4, r2
ldrb r4, [ip, r3] @ zero_extendqisi2 ldrb r4, [ip, r3] @ zero_extendqisi2
cmp r0, #6 cmp r0, #6
movgt r0, #11 movgt r0, #11
movle r0, #9 movle r0, #9
str r0, [sp, #32] str r0, [sp, #20]
strb r4, [r2, ip] strb r4, [r2, ip]
add r2, r2, #1 add r2, r2, #1
str r2, [sp, #48] str r2, [sp, #36]
b .L29 b .L29
.L64: .L64:
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r1, r0, lsr #21 sub r3, r1, r0, lsr #21
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #432 add r4, r6, #432
bhi .L73 bhi .L73
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -410,19 +407,19 @@ LzmaDecode:
bcs .L75 bcs .L75
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
ldr r2, [sp, #24] ldr r2, [sp, #12]
mov lr, ip mov lr, ip
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
b .L76 b .L76
.L75: .L75:
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r2, r0, lsr #21 sub r3, r2, r0, lsr #21
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #456 add r4, r6, #456
bhi .L77 bhi .L77
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -438,39 +435,38 @@ LzmaDecode:
bcs .L79 bcs .L79
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
ldr r2, [sp, #20] ldr r2, [sp, #8]
mov lr, ip mov lr, ip
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
b .L80 b .L80
.L79: .L79:
sub r3, r2, r0, lsr #21 sub r3, r2, r0, lsr #21
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
add r2, sp, #16 ldmib sp, {r2, r3} @ phole ldm
ldmia r2, {r2, r3} @ phole ldm str r3, [sp, #4]
str r3, [sp, #16]
rsb r8, ip, r8 rsb r8, ip, r8
rsb lr, ip, lr rsb lr, ip, lr
.L80: .L80:
ldr r4, [sp, #24] ldr r4, [sp, #12]
str r4, [sp, #20] str r4, [sp, #8]
.L76: .L76:
ldr ip, [sp, #28] ldr ip, [sp, #16]
str r2, [sp, #28] str r2, [sp, #16]
str ip, [sp, #24] str ip, [sp, #12]
.L72: .L72:
ldr r1, [sp, #32] ldr r1, [sp, #20]
ldr r0, [sp, #52] ldr r0, [sp, #40]
cmp r1, #6 cmp r1, #6
movgt r1, #11 movgt r1, #11
movle r1, #8 movle r1, #8
add r4, r0, #2656 add r4, r0, #2656
str r1, [sp, #32] str r1, [sp, #20]
add r4, r4, #8 add r4, r4, #8
.L61: .L61:
mvn r5, #-16777216 mvn r5, #-16777216
cmp lr, r5 cmp lr, r5
bhi .L83 bhi .L83
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -484,14 +480,13 @@ LzmaDecode:
mul ip, r0, r3 mul ip, r0, r3
cmp r8, ip cmp r8, ip
bcs .L85 bcs .L85
add r2, r4, fp, asl #4 add r2, r4, r9, asl #4
rsb r3, r0, #2048 rsb r3, r0, #2048
add r3, r1, r3, asr #5 add r3, r1, r3, asr #5
mov lr, ip mov lr, ip
add r5, r2, #4 add r5, r2, #4
mov ip, #3 mov sl, #0
mov r9, #0 mov fp, #3
str ip, [sp, #4]
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
b .L86 b .L86
.L85: .L85:
@@ -501,8 +496,8 @@ LzmaDecode:
rsb r8, ip, r8 rsb r8, ip, r8
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
bhi .L87 bhi .L87
ldr r0, [sp, #12] ldr r3, [sp, #0]
cmp r7, r0 cmp r7, r3
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8 mov lr, lr, asl #8
@@ -515,35 +510,33 @@ LzmaDecode:
mul ip, r0, r3 mul ip, r0, r3
cmp r8, ip cmp r8, ip
bcs .L89 bcs .L89
add r2, r4, fp, asl #4 add r2, r4, r9, asl #4
rsb r3, r0, #2048 rsb r3, r0, #2048
add r3, r1, r3, asr #5 add r3, r1, r3, asr #5
mov lr, ip mov lr, ip
mov r1, #3
add r5, r2, #260 add r5, r2, #260
mov r9, #8 mov sl, #8
str r1, [sp, #4] mov fp, #3
strh r3, [r4, #2] @ movhi strh r3, [r4, #2] @ movhi
b .L86 b .L86
.L89: .L89:
sub r3, r1, r2, lsr #21 sub r3, r1, r2, lsr #21
mov r2, #8
strh r3, [r4, #2] @ movhi strh r3, [r4, #2] @ movhi
str r2, [sp, #4]
rsb r8, ip, r8 rsb r8, ip, r8
rsb lr, ip, lr rsb lr, ip, lr
add r5, r4, #516 add r5, r4, #516
mov r9, #16 mov sl, #16
mov fp, #8
.L86: .L86:
ldr r6, [sp, #4] mov r6, fp
mov fp, #1 mov r9, #1
.L91: .L91:
mov r4, fp, asl #1 mov r4, r9, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov fp, r4 mov r9, r4
bcs .L94 bcs .L94
ldr r3, [sp, #12] ldr ip, [sp, #0]
cmp r7, r3 cmp r7, ip
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -562,34 +555,33 @@ LzmaDecode:
strcch r3, [r5, r4] @ movhi strcch r3, [r5, r4] @ movhi
movcc lr, ip movcc lr, ip
rsbcs r8, ip, r8 rsbcs r8, ip, r8
addcs fp, r4, #1 addcs r9, r4, #1
strcsh r2, [r5, r4] @ movhi strcsh r2, [r5, r4] @ movhi
subs r6, r6, #1 subs r6, r6, #1
bne .L91 bne .L91
ldr r4, [sp, #4] ldr r0, [sp, #20]
ldr ip, [sp, #32]
mov r2, #1 mov r2, #1
sub fp, fp, r2, asl r4 sub r9, r9, r2, asl fp
cmp ip, #3 cmp r0, #3
add fp, fp, r9 add r9, r9, sl
bgt .L98 bgt .L98
ldr r0, [sp, #52] ldr r1, [sp, #40]
cmp fp, #3 cmp r9, #3
movlt r3, fp movlt r3, r9
movge r3, #3 movge r3, #3
add ip, ip, #7 add r0, r0, #7
add r3, r0, r3, asl #7 add r3, r1, r3, asl #7
str ip, [sp, #32] str r0, [sp, #20]
add r4, r3, #864 add r4, r3, #864
mov r6, r2 mov r6, r2
mov r9, #6 mov sl, #6
.L99: .L99:
mov r5, r6, asl #1 mov r5, r6, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov r6, r5 mov r6, r5
bcs .L102 bcs .L102
ldr r1, [sp, #12] ldr r2, [sp, #0]
cmp r7, r1 cmp r7, r2
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -610,24 +602,24 @@ LzmaDecode:
rsbcs r8, ip, r8 rsbcs r8, ip, r8
addcs r6, r5, #1 addcs r6, r5, #1
strcsh r2, [r4, r5] @ movhi strcsh r2, [r4, r5] @ movhi
subs r9, r9, #1 subs sl, sl, #1
bne .L99 bne .L99
sub r6, r6, #64 sub r6, r6, #64
cmp r6, #3 cmp r6, #3
strle r6, [sp, #28] strle r6, [sp, #16]
ble .L122 ble .L122
and r3, r6, #1 and r3, r6, #1
mov r2, r6, asr #1 mov r2, r6, asr #1
cmp r6, #13 cmp r6, #13
orr r3, r3, #2 orr r3, r3, #2
sub r5, r2, #1 sub r5, r2, #1
str r3, [sp, #28] str r3, [sp, #16]
subgt r5, r2, #5 subgt r5, r2, #5
bgt .L109 bgt .L109
ldr r2, [sp, #52] ldr r4, [sp, #40]
mov r3, r3, asl r5 mov r3, r3, asl r5
str r3, [sp, #28] str r3, [sp, #16]
add r3, r2, r3, asl #1 add r3, r4, r3, asl #1
sub r3, r3, r6, asl #1 sub r3, r3, r6, asl #1
add r4, r3, #1360 add r4, r3, #1360
add r4, r4, #14 add r4, r4, #14
@@ -635,41 +627,40 @@ LzmaDecode:
.L109: .L109:
cmp lr, #16777216 cmp lr, #16777216
bcs .L112 bcs .L112
ldr r3, [sp, #12] ldr ip, [sp, #0]
cmp r7, r3 cmp r7, ip
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8 mov lr, lr, asl #8
orr r8, r3, r8, asl #8 orr r8, r3, r8, asl #8
.L112: .L112:
ldr r4, [sp, #28] ldr r0, [sp, #16]
mov lr, lr, lsr #1 mov lr, lr, lsr #1
cmp r8, lr cmp r8, lr
mov r4, r4, asl #1 mov r0, r0, asl #1
str r4, [sp, #28] str r0, [sp, #16]
orrcs r4, r4, #1 orrcs r0, r0, #1
rsbcs r8, lr, r8 rsbcs r8, lr, r8
strcs r4, [sp, #28] strcs r0, [sp, #16]
subs r5, r5, #1 subs r5, r5, #1
bne .L109 bne .L109
ldr r0, [sp, #28] ldr r2, [sp, #16]
ldr ip, [sp, #52] ldr r1, [sp, #40]
mov r0, r0, asl #4 mov r2, r2, asl #4
add r4, ip, #1600 add r4, r1, #1600
str r0, [sp, #28] str r2, [sp, #16]
add r4, r4, #4 add r4, r4, #4
mov r5, #4 mov r5, #4
.L108: .L108:
mov r9, #1 mov sl, #1
str r9, [sp, #0] mov fp, sl
.L115: .L115:
ldr r1, [sp, #0] mov r6, fp, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov r6, r1, asl #1 mov fp, r6
str r6, [sp, #0]
bcs .L118 bcs .L118
ldr r2, [sp, #12] ldr r3, [sp, #0]
cmp r7, r2 cmp r7, r3
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -683,41 +674,40 @@ LzmaDecode:
cmp r8, ip cmp r8, ip
rsb lr, ip, lr rsb lr, ip, lr
rsbcs r8, ip, r8 rsbcs r8, ip, r8
ldrcs ip, [sp, #28] ldrcs ip, [sp, #16]
rsb r3, r3, #2048 rsb r3, r3, #2048
orrcs ip, ip, sl
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
orrcs ip, ip, r9
addcs r3, r6, #1
sub r2, r2, r0, lsr #21 sub r2, r2, r0, lsr #21
movcc lr, ip movcc lr, ip
strcch r3, [r4, r6] @ movhi strcch r3, [r4, r6] @ movhi
strcs r3, [sp, #0] addcs fp, r6, #1
strcsh r2, [r4, r6] @ movhi strcsh r2, [r4, r6] @ movhi
strcs ip, [sp, #28] strcs ip, [sp, #16]
subs r5, r5, #1 subs r5, r5, #1
mov r9, r9, asl #1 mov sl, sl, asl #1
bne .L115 bne .L115
.L122: .L122:
ldr r0, [sp, #28] ldr r0, [sp, #16]
adds r0, r0, #1 adds r0, r0, #1
str r0, [sp, #28] str r0, [sp, #16]
beq .L30 beq .L30
.L98: .L98:
ldr r1, [sp, #28] ldr r1, [sp, #16]
ldr r2, [sp, #48] ldr r2, [sp, #36]
cmp r1, r2 cmp r1, r2
add fp, fp, #2 add r9, r9, #2
bhi .L155 bhi .L155
.L125: .L125:
ldr r4, [sp, #48] ldr r4, [sp, #36]
ldr ip, [sp, #28] ldr ip, [sp, #16]
ldr r0, [sp, #96] ldr r0, [sp, #88]
rsb r3, ip, r4 rsb r3, ip, r4
ldrb r4, [r0, r3] @ zero_extendqisi2 ldrb r4, [r0, r3] @ zero_extendqisi2
ldr r1, [sp, #48] ldr r1, [sp, #36]
strb r4, [r1, r0] strb r4, [r1, r0]
subs fp, fp, #1 subs r9, r9, #1
ldr r2, [sp, #100] ldr r2, [sp, #92]
moveq r3, #0 moveq r3, #0
movne r3, #1 movne r3, #1
add r1, r1, #1 add r1, r1, #1
@@ -725,17 +715,17 @@ LzmaDecode:
movcs r3, #0 movcs r3, #0
andcc r3, r3, #1 andcc r3, r3, #1
cmp r3, #0 cmp r3, #0
str r1, [sp, #48] str r1, [sp, #36]
bne .L125 bne .L125
.L29: .L29:
ldr r3, [sp, #48] ldr r3, [sp, #36]
ldr ip, [sp, #100] ldr ip, [sp, #92]
cmp r3, ip cmp r3, ip
b .L158 b .L158
.L30: .L30:
cmp lr, #16777216 cmp lr, #16777216
bcs .L129 bcs .L129
ldr lr, [sp, #12] ldr lr, [sp, #0]
cmp r7, lr cmp r7, lr
addne r7, r7, #1 addne r7, r7, #1
bne .L129 bne .L129
@@ -743,16 +733,16 @@ LzmaDecode:
mov r0, #1 mov r0, #1
b .L19 b .L19
.L129: .L129:
ldr r0, [sp, #60] ldr r0, [sp, #48]
ldr r1, [sp, #56] ldr r1, [sp, #44]
rsb r3, r0, r7 rsb r3, r0, r7
str r3, [r1, #0] str r3, [r1, #0]
ldr r2, [sp, #104] ldr r2, [sp, #96]
ldr r3, [sp, #48] ldr r3, [sp, #36]
str r3, [r2, #0] str r3, [r2, #0]
mov r0, #0 mov r0, #0
.L19: .L19:
add sp, sp, #64 add sp, sp, #52
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc} ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
.size LzmaDecode, .-LzmaDecode .size LzmaDecode, .-LzmaDecode
.ident "GCC: (GNU) 3.4.5" .ident "GCC: (GNU) 3.4.5"
+198 -208
View File
@@ -52,22 +52,22 @@ LzmaDecodeProperties:
.global LzmaDecode .global LzmaDecode
.type LzmaDecode, %function .type LzmaDecode, %function
LzmaDecode: LzmaDecode:
@ args = 12, pretend = 0, frame = 64 @ args = 12, pretend = 0, frame = 52
@ frame_needed = 0, uses_anonymous_args = 0 @ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr} stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
sub sp, sp, #64 sub sp, sp, #52
str r3, [sp, #56] str r3, [sp, #44]
mov r3, #0 mov r3, #0
str r3, [sp, #48] str r3, [sp, #36]
ldrb ip, [r0, #0] @ zero_extendqisi2 ldrb ip, [r0, #0] @ zero_extendqisi2
ldrb r4, [r0, #1] @ zero_extendqisi2 ldrb r4, [r0, #1] @ zero_extendqisi2
ldrb lr, [r0, #2] @ zero_extendqisi2 ldrb lr, [r0, #2] @ zero_extendqisi2
str ip, [sp, #36] str ip, [sp, #24]
ldr ip, [sp, #56] ldr ip, [sp, #44]
str r3, [ip, #0] str r3, [ip, #0]
ldr ip, [sp, #104] ldr ip, [sp, #96]
str r3, [ip, #0] str r3, [ip, #0]
ldr r3, [sp, #36] ldr r3, [sp, #24]
ldrb ip, [r0, #1] @ zero_extendqisi2 ldrb ip, [r0, #1] @ zero_extendqisi2
add ip, r3, ip add ip, r3, ip
mov r3, #768 mov r3, #768
@@ -76,42 +76,42 @@ LzmaDecode:
mov r3, #1 mov r3, #1
mov lr, r3, asl lr mov lr, r3, asl lr
sub lr, lr, #1 sub lr, lr, #1
str r3, [sp, #28] str r3, [sp, #16]
mov r3, r3, asl r4 mov r3, r3, asl r4
str lr, [sp, #44] str lr, [sp, #32]
mov r4, #0 mov r4, #0
mov lr, #1 mov lr, #1
sub r3, r3, #1 sub r3, r3, #1
add r0, r0, #4 add r0, r0, #4
add ip, ip, #6 add ip, ip, #6
str r3, [sp, #40] str r3, [sp, #28]
str r0, [sp, #52] str r0, [sp, #40]
str r4, [sp, #32] str r4, [sp, #20]
str lr, [sp, #24] str lr, [sp, #12]
str lr, [sp, #20] str lr, [sp, #8]
str lr, [sp, #16] str lr, [sp, #4]
str r1, [sp, #60] str r1, [sp, #48]
cmp r4, ip cmp r4, ip
mov r1, r4 mov r1, r4
.L157: .L157:
bcs .L132 bcs .L132
mov r3, r1, asl #1 mov r3, r1, asl #1
ldr r0, [sp, #52] ldr r0, [sp, #40]
add r1, r1, #1 add r1, r1, #1
mov lr, #1024 @ movhi mov lr, #1024 @ movhi
cmp r1, ip cmp r1, ip
strh lr, [r3, r0] @ movhi strh lr, [r3, r0] @ movhi
b .L157 b .L157
.L132: .L132:
ldr r0, [sp, #60] ldr r0, [sp, #48]
mov r8, #0 mov r8, #0
add r2, r0, r2 add r2, r0, r2
str r2, [sp, #12] str r2, [sp, #0]
mov r7, r0 mov r7, r0
mvn lr, #0 mvn lr, #0
mov r2, r8 mov r2, r8
.L28: .L28:
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
add r2, r2, #1 add r2, r2, #1
beq .L155 beq .L155
@@ -119,28 +119,28 @@ LzmaDecode:
cmp r2, #4 cmp r2, #4
orr r8, r3, r8, asl #8 orr r8, r3, r8, asl #8
ble .L28 ble .L28
ldr r2, [sp, #48] ldr r2, [sp, #36]
ldr r3, [sp, #100] ldr r3, [sp, #92]
cmp r2, r3 cmp r2, r3
.L158: .L158:
bcs .L30 bcs .L30
add r0, sp, #44 add r0, sp, #32
ldmia r0, {r0, ip} @ phole ldm ldmia r0, {r0, ip} @ phole ldm
ldr r1, [sp, #32] ldr r1, [sp, #20]
and fp, ip, r0 and r9, ip, r0
mvn r9, #-16777216 mvn sl, #-16777216
add r3, fp, r1, asl #4 add r3, r9, r1, asl #4
cmp lr, r9 cmp lr, sl
mov r5, r3, asl #1 mov r5, r3, asl #1
bhi .L31 bhi .L31
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8 mov lr, lr, asl #8
orr r8, r3, r8, asl #8 orr r8, r3, r8, asl #8
.L31: .L31:
ldr r3, [sp, #52] ldr r3, [sp, #40]
ldrh r1, [r5, r3] ldrh r1, [r5, r3]
mov r2, r1, asl #16 mov r2, r1, asl #16
mov r3, lr, lsr #11 mov r3, lr, lsr #11
@@ -148,18 +148,18 @@ LzmaDecode:
mul ip, r0, r3 mul ip, r0, r3
cmp r8, ip cmp r8, ip
bcs .L33 bcs .L33
ldr lr, [sp, #36] ldr lr, [sp, #24]
rsb r3, lr, #8 rsb r3, lr, #8
mov r3, r4, asr r3 mov r3, r4, asr r3
ldr lr, [sp, #40] ldr lr, [sp, #28]
ldr r4, [sp, #48]
and r2, r4, lr
ldr r4, [sp, #36] ldr r4, [sp, #36]
ldr lr, [sp, #52] and r2, r4, lr
ldr r4, [sp, #24]
ldr lr, [sp, #40]
add r3, r3, r2, asl r4 add r3, r3, r2, asl r4
add r3, r3, r3, asl #1 add r3, r3, r3, asl #1
rsb r2, r0, #2048 rsb r2, r0, #2048
ldr r0, [sp, #32] ldr r0, [sp, #20]
add r3, lr, r3, asl #9 add r3, lr, r3, asl #9
add r2, r1, r2, asr #5 add r2, r1, r2, asr #5
add r4, r3, #3680 add r4, r3, #3680
@@ -167,27 +167,24 @@ LzmaDecode:
strh r2, [r5, lr] @ movhi strh r2, [r5, lr] @ movhi
add r4, r4, #12 add r4, r4, #12
mov lr, ip mov lr, ip
mov fp, #1 mov r9, #1
ble .L50 ble .L50
ldr r1, [sp, #48] ldr r1, [sp, #36]
ldr r2, [sp, #28] ldr r2, [sp, #16]
ldr ip, [sp, #96] ldr ip, [sp, #88]
rsb r3, r2, r1 rsb r3, r2, r1
ldrb r3, [ip, r3] @ zero_extendqisi2 ldrb fp, [ip, r3] @ zero_extendqisi2
str r3, [sp, #8]
.L35: .L35:
ldr r0, [sp, #8] mov fp, fp, asl #1
mov r0, r0, asl #1 and r6, fp, #256
and r6, r0, #256 mov sl, r9, asl #1
mov r9, fp, asl #1
add r3, r4, r6, asl #1 add r3, r4, r6, asl #1
add r3, r3, r9 add r3, r3, sl
cmp lr, #16777216 cmp lr, #16777216
str r0, [sp, #8]
add r5, r3, #512 add r5, r3, #512
bcs .L38 bcs .L38
ldr r1, [sp, #12] ldr r0, [sp, #0]
cmp r7, r1 cmp r7, r0
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -201,7 +198,7 @@ LzmaDecode:
rsb r3, r3, #2048 rsb r3, r3, #2048
cmp r8, ip cmp r8, ip
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
mov fp, r9 mov r9, sl
sub r2, r2, r1, lsr #21 sub r2, r2, r1, lsr #21
bcs .L40 bcs .L40
cmp r6, #0 cmp r6, #0
@@ -213,23 +210,23 @@ LzmaDecode:
cmp r6, #0 cmp r6, #0
strh r2, [r5, #0] @ movhi strh r2, [r5, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add fp, r9, #1 add r9, sl, #1
rsb lr, ip, lr rsb lr, ip, lr
beq .L34 beq .L34
.L37: .L37:
cmp fp, #255 cmp r9, #255
ble .L35 ble .L35
b .L137 b .L137
.L34: .L34:
cmp fp, #255 cmp r9, #255
bgt .L137 bgt .L137
.L50: .L50:
mov r5, fp, asl #1 mov r5, r9, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov fp, r5 mov r9, r5
bcs .L46 bcs .L46
ldr r2, [sp, #12] ldr r1, [sp, #0]
cmp r7, r2 cmp r7, r1
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -247,42 +244,42 @@ LzmaDecode:
sub r2, r2, r0, lsr #21 sub r2, r2, r0, lsr #21
movcc lr, ip movcc lr, ip
rsbcs r8, ip, r8 rsbcs r8, ip, r8
addcs fp, r5, #1 addcs r9, r5, #1
strcch r3, [r4, r5] @ movhi strcch r3, [r4, r5] @ movhi
strcsh r2, [r4, r5] @ movhi strcsh r2, [r4, r5] @ movhi
b .L34 b .L34
.L137: .L137:
ldr r3, [sp, #32] ldr r2, [sp, #20]
ldr ip, [sp, #48] ldr r3, [sp, #36]
ldr r0, [sp, #96] ldr ip, [sp, #88]
cmp r3, #3 cmp r2, #3
and r4, fp, #255 and r4, r9, #255
strb r4, [ip, r0] strb r4, [r3, ip]
movle r1, #0 movle r0, #0
add ip, ip, #1 add r3, r3, #1
str ip, [sp, #48] str r3, [sp, #36]
strle r1, [sp, #32] strle r0, [sp, #20]
ble .L29 ble .L29
ldr r2, [sp, #32] ldr r1, [sp, #20]
cmp r2, #9 cmp r1, #9
ldrgt r3, [sp, #32] ldrgt r2, [sp, #20]
suble r2, r2, #3 suble r1, r1, #3
subgt r3, r3, #6 subgt r2, r2, #6
strle r2, [sp, #32] strle r1, [sp, #20]
strgt r3, [sp, #32] strgt r2, [sp, #20]
b .L29 b .L29
.L33: .L33:
ldr r4, [sp, #52] ldr r4, [sp, #40]
ldr r0, [sp, #32] ldr r0, [sp, #20]
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r1, r2, lsr #21 sub r3, r1, r2, lsr #21
add r6, r4, r0, asl #1 add r6, r4, r0, asl #1
cmp lr, r9 cmp lr, sl
strh r3, [r5, r4] @ movhi strh r3, [r5, r4] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #384 add r4, r6, #384
bhi .L56 bhi .L56
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -299,31 +296,31 @@ LzmaDecode:
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
ldr r2, [sp, #52] ldr r2, [sp, #40]
ldr r3, [sp, #32] ldr r3, [sp, #20]
ldr lr, [sp, #20] ldr lr, [sp, #8]
cmp r3, #6 cmp r3, #6
ldr r0, [sp, #24] ldr r0, [sp, #12]
add r4, r2, #1632 add r4, r2, #1632
ldr r1, [sp, #28] ldr r1, [sp, #16]
movgt r3, #3 movgt r3, #3
movle r3, #0 movle r3, #0
str lr, [sp, #16] str lr, [sp, #4]
add r4, r4, #4 add r4, r4, #4
mov lr, ip mov lr, ip
str r3, [sp, #32] str r3, [sp, #20]
str r0, [sp, #20] str r0, [sp, #8]
str r1, [sp, #24] str r1, [sp, #12]
b .L61 b .L61
.L58: .L58:
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r2, r0, lsr #21 sub r3, r2, r0, lsr #21
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #408 add r4, r6, #408
bhi .L62 bhi .L62
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -338,17 +335,17 @@ LzmaDecode:
cmp r8, ip cmp r8, ip
bcs .L64 bcs .L64
mov lr, ip mov lr, ip
ldr r0, [sp, #32] ldr r0, [sp, #20]
ldr ip, [sp, #52] ldr ip, [sp, #40]
rsb r3, r2, #2048 rsb r3, r2, #2048
add r2, ip, r0, asl #5 add r2, ip, r0, asl #5
add r3, r1, r3, asr #5 add r3, r1, r3, asr #5
add r2, r2, fp, asl #1 add r2, r2, r9, asl #1
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
add r4, r2, #480 add r4, r2, #480
bhi .L65 bhi .L65
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -368,33 +365,33 @@ LzmaDecode:
bcs .L72 bcs .L72
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
ldr r2, [sp, #48] ldr r2, [sp, #36]
cmp r2, #0 cmp r2, #0
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
mov lr, ip mov lr, ip
beq .L155 beq .L155
ldr r4, [sp, #28] ldr r4, [sp, #16]
ldr r0, [sp, #32] ldr r0, [sp, #20]
ldr ip, [sp, #96] ldr ip, [sp, #88]
rsb r3, r4, r2 rsb r3, r4, r2
ldrb r4, [ip, r3] @ zero_extendqisi2 ldrb r4, [ip, r3] @ zero_extendqisi2
cmp r0, #6 cmp r0, #6
movgt r0, #11 movgt r0, #11
movle r0, #9 movle r0, #9
str r0, [sp, #32] str r0, [sp, #20]
strb r4, [r2, ip] strb r4, [r2, ip]
add r2, r2, #1 add r2, r2, #1
str r2, [sp, #48] str r2, [sp, #36]
b .L29 b .L29
.L64: .L64:
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r1, r0, lsr #21 sub r3, r1, r0, lsr #21
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #432 add r4, r6, #432
bhi .L73 bhi .L73
ldr r1, [sp, #12] ldr r1, [sp, #0]
cmp r7, r1 cmp r7, r1
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -410,19 +407,19 @@ LzmaDecode:
bcs .L75 bcs .L75
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
ldr r2, [sp, #24] ldr r2, [sp, #12]
mov lr, ip mov lr, ip
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
b .L76 b .L76
.L75: .L75:
rsb lr, ip, lr rsb lr, ip, lr
sub r3, r2, r0, lsr #21 sub r3, r2, r0, lsr #21
cmp lr, r9 cmp lr, sl
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
rsb r8, ip, r8 rsb r8, ip, r8
add r4, r6, #456 add r4, r6, #456
bhi .L77 bhi .L77
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -438,39 +435,38 @@ LzmaDecode:
bcs .L79 bcs .L79
rsb r3, r1, #2048 rsb r3, r1, #2048
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
ldr r2, [sp, #20] ldr r2, [sp, #8]
mov lr, ip mov lr, ip
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
b .L80 b .L80
.L79: .L79:
sub r3, r2, r0, lsr #21 sub r3, r2, r0, lsr #21
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
add r2, sp, #16 ldmib sp, {r2, r3} @ phole ldm
ldmia r2, {r2, r3} @ phole ldm str r3, [sp, #4]
str r3, [sp, #16]
rsb r8, ip, r8 rsb r8, ip, r8
rsb lr, ip, lr rsb lr, ip, lr
.L80: .L80:
ldr r4, [sp, #24] ldr r4, [sp, #12]
str r4, [sp, #20] str r4, [sp, #8]
.L76: .L76:
ldr ip, [sp, #28] ldr ip, [sp, #16]
str r2, [sp, #28] str r2, [sp, #16]
str ip, [sp, #24] str ip, [sp, #12]
.L72: .L72:
ldr r1, [sp, #32] ldr r1, [sp, #20]
ldr r0, [sp, #52] ldr r0, [sp, #40]
cmp r1, #6 cmp r1, #6
movgt r1, #11 movgt r1, #11
movle r1, #8 movle r1, #8
add r4, r0, #2656 add r4, r0, #2656
str r1, [sp, #32] str r1, [sp, #20]
add r4, r4, #8 add r4, r4, #8
.L61: .L61:
mvn r5, #-16777216 mvn r5, #-16777216
cmp lr, r5 cmp lr, r5
bhi .L83 bhi .L83
ldr r2, [sp, #12] ldr r2, [sp, #0]
cmp r7, r2 cmp r7, r2
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -484,14 +480,13 @@ LzmaDecode:
mul ip, r0, r3 mul ip, r0, r3
cmp r8, ip cmp r8, ip
bcs .L85 bcs .L85
add r2, r4, fp, asl #4 add r2, r4, r9, asl #4
rsb r3, r0, #2048 rsb r3, r0, #2048
add r3, r1, r3, asr #5 add r3, r1, r3, asr #5
mov lr, ip mov lr, ip
add r5, r2, #4 add r5, r2, #4
mov ip, #3 mov sl, #0
mov r9, #0 mov fp, #3
str ip, [sp, #4]
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
b .L86 b .L86
.L85: .L85:
@@ -501,8 +496,8 @@ LzmaDecode:
rsb r8, ip, r8 rsb r8, ip, r8
strh r3, [r4, #0] @ movhi strh r3, [r4, #0] @ movhi
bhi .L87 bhi .L87
ldr r0, [sp, #12] ldr r3, [sp, #0]
cmp r7, r0 cmp r7, r3
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8 mov lr, lr, asl #8
@@ -515,35 +510,33 @@ LzmaDecode:
mul ip, r0, r3 mul ip, r0, r3
cmp r8, ip cmp r8, ip
bcs .L89 bcs .L89
add r2, r4, fp, asl #4 add r2, r4, r9, asl #4
rsb r3, r0, #2048 rsb r3, r0, #2048
add r3, r1, r3, asr #5 add r3, r1, r3, asr #5
mov lr, ip mov lr, ip
mov r1, #3
add r5, r2, #260 add r5, r2, #260
mov r9, #8 mov sl, #8
str r1, [sp, #4] mov fp, #3
strh r3, [r4, #2] @ movhi strh r3, [r4, #2] @ movhi
b .L86 b .L86
.L89: .L89:
sub r3, r1, r2, lsr #21 sub r3, r1, r2, lsr #21
mov r2, #8
strh r3, [r4, #2] @ movhi strh r3, [r4, #2] @ movhi
str r2, [sp, #4]
rsb r8, ip, r8 rsb r8, ip, r8
rsb lr, ip, lr rsb lr, ip, lr
add r5, r4, #516 add r5, r4, #516
mov r9, #16 mov sl, #16
mov fp, #8
.L86: .L86:
ldr r6, [sp, #4] mov r6, fp
mov fp, #1 mov r9, #1
.L91: .L91:
mov r4, fp, asl #1 mov r4, r9, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov fp, r4 mov r9, r4
bcs .L94 bcs .L94
ldr r3, [sp, #12] ldr ip, [sp, #0]
cmp r7, r3 cmp r7, ip
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -562,34 +555,33 @@ LzmaDecode:
strcch r3, [r5, r4] @ movhi strcch r3, [r5, r4] @ movhi
movcc lr, ip movcc lr, ip
rsbcs r8, ip, r8 rsbcs r8, ip, r8
addcs fp, r4, #1 addcs r9, r4, #1
strcsh r2, [r5, r4] @ movhi strcsh r2, [r5, r4] @ movhi
subs r6, r6, #1 subs r6, r6, #1
bne .L91 bne .L91
ldr r4, [sp, #4] ldr r0, [sp, #20]
ldr ip, [sp, #32]
mov r2, #1 mov r2, #1
sub fp, fp, r2, asl r4 sub r9, r9, r2, asl fp
cmp ip, #3 cmp r0, #3
add fp, fp, r9 add r9, r9, sl
bgt .L98 bgt .L98
ldr r0, [sp, #52] ldr r1, [sp, #40]
cmp fp, #3 cmp r9, #3
movlt r3, fp movlt r3, r9
movge r3, #3 movge r3, #3
add ip, ip, #7 add r0, r0, #7
add r3, r0, r3, asl #7 add r3, r1, r3, asl #7
str ip, [sp, #32] str r0, [sp, #20]
add r4, r3, #864 add r4, r3, #864
mov r6, r2 mov r6, r2
mov r9, #6 mov sl, #6
.L99: .L99:
mov r5, r6, asl #1 mov r5, r6, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov r6, r5 mov r6, r5
bcs .L102 bcs .L102
ldr r1, [sp, #12] ldr r2, [sp, #0]
cmp r7, r1 cmp r7, r2
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -610,24 +602,24 @@ LzmaDecode:
rsbcs r8, ip, r8 rsbcs r8, ip, r8
addcs r6, r5, #1 addcs r6, r5, #1
strcsh r2, [r4, r5] @ movhi strcsh r2, [r4, r5] @ movhi
subs r9, r9, #1 subs sl, sl, #1
bne .L99 bne .L99
sub r6, r6, #64 sub r6, r6, #64
cmp r6, #3 cmp r6, #3
strle r6, [sp, #28] strle r6, [sp, #16]
ble .L122 ble .L122
and r3, r6, #1 and r3, r6, #1
mov r2, r6, asr #1 mov r2, r6, asr #1
cmp r6, #13 cmp r6, #13
orr r3, r3, #2 orr r3, r3, #2
sub r5, r2, #1 sub r5, r2, #1
str r3, [sp, #28] str r3, [sp, #16]
subgt r5, r2, #5 subgt r5, r2, #5
bgt .L109 bgt .L109
ldr r2, [sp, #52] ldr r4, [sp, #40]
mov r3, r3, asl r5 mov r3, r3, asl r5
str r3, [sp, #28] str r3, [sp, #16]
add r3, r2, r3, asl #1 add r3, r4, r3, asl #1
sub r3, r3, r6, asl #1 sub r3, r3, r6, asl #1
add r4, r3, #1360 add r4, r3, #1360
add r4, r4, #14 add r4, r4, #14
@@ -635,41 +627,40 @@ LzmaDecode:
.L109: .L109:
cmp lr, #16777216 cmp lr, #16777216
bcs .L112 bcs .L112
ldr r3, [sp, #12] ldr ip, [sp, #0]
cmp r7, r3 cmp r7, ip
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8 mov lr, lr, asl #8
orr r8, r3, r8, asl #8 orr r8, r3, r8, asl #8
.L112: .L112:
ldr r4, [sp, #28] ldr r0, [sp, #16]
mov lr, lr, lsr #1 mov lr, lr, lsr #1
cmp r8, lr cmp r8, lr
mov r4, r4, asl #1 mov r0, r0, asl #1
str r4, [sp, #28] str r0, [sp, #16]
orrcs r4, r4, #1 orrcs r0, r0, #1
rsbcs r8, lr, r8 rsbcs r8, lr, r8
strcs r4, [sp, #28] strcs r0, [sp, #16]
subs r5, r5, #1 subs r5, r5, #1
bne .L109 bne .L109
ldr r0, [sp, #28] ldr r2, [sp, #16]
ldr ip, [sp, #52] ldr r1, [sp, #40]
mov r0, r0, asl #4 mov r2, r2, asl #4
add r4, ip, #1600 add r4, r1, #1600
str r0, [sp, #28] str r2, [sp, #16]
add r4, r4, #4 add r4, r4, #4
mov r5, #4 mov r5, #4
.L108: .L108:
mov r9, #1 mov sl, #1
str r9, [sp, #0] mov fp, sl
.L115: .L115:
ldr r1, [sp, #0] mov r6, fp, asl #1
cmp lr, #16777216 cmp lr, #16777216
mov r6, r1, asl #1 mov fp, r6
str r6, [sp, #0]
bcs .L118 bcs .L118
ldr r2, [sp, #12] ldr r3, [sp, #0]
cmp r7, r2 cmp r7, r3
mov lr, lr, asl #8 mov lr, lr, asl #8
beq .L155 beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2 ldrb r3, [r7], #1 @ zero_extendqisi2
@@ -683,41 +674,40 @@ LzmaDecode:
cmp r8, ip cmp r8, ip
rsb lr, ip, lr rsb lr, ip, lr
rsbcs r8, ip, r8 rsbcs r8, ip, r8
ldrcs ip, [sp, #28] ldrcs ip, [sp, #16]
rsb r3, r3, #2048 rsb r3, r3, #2048
orrcs ip, ip, sl
add r3, r2, r3, asr #5 add r3, r2, r3, asr #5
orrcs ip, ip, r9
addcs r3, r6, #1
sub r2, r2, r0, lsr #21 sub r2, r2, r0, lsr #21
movcc lr, ip movcc lr, ip
strcch r3, [r4, r6] @ movhi strcch r3, [r4, r6] @ movhi
strcs r3, [sp, #0] addcs fp, r6, #1
strcsh r2, [r4, r6] @ movhi strcsh r2, [r4, r6] @ movhi
strcs ip, [sp, #28] strcs ip, [sp, #16]
subs r5, r5, #1 subs r5, r5, #1
mov r9, r9, asl #1 mov sl, sl, asl #1
bne .L115 bne .L115
.L122: .L122:
ldr r0, [sp, #28] ldr r0, [sp, #16]
adds r0, r0, #1 adds r0, r0, #1
str r0, [sp, #28] str r0, [sp, #16]
beq .L30 beq .L30
.L98: .L98:
ldr r1, [sp, #28] ldr r1, [sp, #16]
ldr r2, [sp, #48] ldr r2, [sp, #36]
cmp r1, r2 cmp r1, r2
add fp, fp, #2 add r9, r9, #2
bhi .L155 bhi .L155
.L125: .L125:
ldr r4, [sp, #48] ldr r4, [sp, #36]
ldr ip, [sp, #28] ldr ip, [sp, #16]
ldr r0, [sp, #96] ldr r0, [sp, #88]
rsb r3, ip, r4 rsb r3, ip, r4
ldrb r4, [r0, r3] @ zero_extendqisi2 ldrb r4, [r0, r3] @ zero_extendqisi2
ldr r1, [sp, #48] ldr r1, [sp, #36]
strb r4, [r1, r0] strb r4, [r1, r0]
subs fp, fp, #1 subs r9, r9, #1
ldr r2, [sp, #100] ldr r2, [sp, #92]
moveq r3, #0 moveq r3, #0
movne r3, #1 movne r3, #1
add r1, r1, #1 add r1, r1, #1
@@ -725,17 +715,17 @@ LzmaDecode:
movcs r3, #0 movcs r3, #0
andcc r3, r3, #1 andcc r3, r3, #1
cmp r3, #0 cmp r3, #0
str r1, [sp, #48] str r1, [sp, #36]
bne .L125 bne .L125
.L29: .L29:
ldr r3, [sp, #48] ldr r3, [sp, #36]
ldr ip, [sp, #100] ldr ip, [sp, #92]
cmp r3, ip cmp r3, ip
b .L158 b .L158
.L30: .L30:
cmp lr, #16777216 cmp lr, #16777216
bcs .L129 bcs .L129
ldr lr, [sp, #12] ldr lr, [sp, #0]
cmp r7, lr cmp r7, lr
addne r7, r7, #1 addne r7, r7, #1
bne .L129 bne .L129
@@ -743,16 +733,16 @@ LzmaDecode:
mov r0, #1 mov r0, #1
b .L19 b .L19
.L129: .L129:
ldr r0, [sp, #60] ldr r0, [sp, #48]
ldr r1, [sp, #56] ldr r1, [sp, #44]
rsb r3, r0, r7 rsb r3, r0, r7
str r3, [r1, #0] str r3, [r1, #0]
ldr r2, [sp, #104] ldr r2, [sp, #96]
ldr r3, [sp, #48] ldr r3, [sp, #36]
str r3, [r2, #0] str r3, [r2, #0]
mov r0, #0 mov r0, #0
.L19: .L19:
add sp, sp, #64 add sp, sp, #52
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc} ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
.size LzmaDecode, .-LzmaDecode .size LzmaDecode, .-LzmaDecode
.ident "GCC: (GNU) 3.4.5" .ident "GCC: (GNU) 3.4.5"
+2 -7
View File
@@ -27,19 +27,14 @@ lzma_d_c%.S : tc_list = arm-lzma arm-linux.elf default
lzma_d_c%.S : tc_bfdname = elf32-littlearm lzma_d_c%.S : tc_bfdname = elf32-littlearm
tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc) tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc)
tc.arm-lzma.gcc += -march=armv4t -mthumb -fPIC tc.arm-lzma.gcc += -march=armv4t -mthumb
tc.arm-lzma.gcc += -Os tc.arm-lzma.gcc += -Os
tc.arm-lzma.gcc += -ffunction-sections tc.arm-lzma.gcc += -ffunction-sections
tc.arm-lzma.gcc += -I$(UPX_LZMADIR) tc.arm-lzma.gcc += -I$(UPX_LZMADIR)
tc.arm-lzma.gcc += -I$(top_srcdir)/src tc.arm-lzma.gcc += -I$(top_srcdir)/src
lzma_d_c%.S : lzma_d_c.c lzma_d_c%.S : lzma_d_c.c
$(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o $(call tc,gcc) $(PP_FLAGS) -S $< -o $@
$(call tc,objstrip) tmp/$T.o
$(call tc,objcopy) -O binary --only-section .text.LzmaDecode tmp/$T.o tmp/$T.bin
head -c-0 tmp/$T.bin > tmp/$T.out
$(call tc,objdump) -b binary -m armv4t -M force-thumb -D tmp/$T.out > tmp/$T.out.lst
$(call tc,bin2h) --mode=gas tmp/$T.out $@
lzma_d_cf.% : PP_FLAGS = -DFAST lzma_d_cf.% : PP_FLAGS = -DFAST
lzma_d_cs.% : PP_FLAGS = -DSMALL lzma_d_cs.% : PP_FLAGS = -DSMALL
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -352,7 +352,7 @@ section Call2D
//////////////////////////////////////// ////////////////////////////////////////
section LZMA_0 section CallLZMA
// r0=src0, r1=slen, r2=dst0, r3=addr dstl // r0=src0, r1=slen, r2=dst0, r3=addr dstl
parb .req r3 parb .req r3
@@ -371,20 +371,20 @@ section LZMA_0
cmp sp, para cmp sp, para
bne .Lclearstack bne .Lclearstack
stmfd sp!, {r2, parb, para} // &outSizeProcessed, outSize, out stmfd sp!, {r2, parb, para} // out, outSize, &outSizeProcessed
add r3, para, #4 // &inSizeProcessed add r3, para, #4 // &inSizeProcessed
mov r2, parc // inSize mov r2, parc // inSize
add r1, r0, #2 // in add r1, r0, #2 // in
add r0, para, #8 // &CLzmaDecoderState add r0, para, #8 // &CLzmaDecoderState
str pard, [r0] // lc, lp, pb, dummy str pard, [r0] // lc, lp, pb, dummy
bl LZMA_DECODE bl LZMA_DECODE
mov sp, r7
b .LLZMA_end b .LLZMA_end
.LzmaParams: .LzmaParams:
.long UPXb, UPXa, UPXc, UPXd .long UPXb, UPXa, UPXc, UPXd
.LLZMA_end: .LLZMA_end:
mov sp, r7
section LZMA_DECODE section LZMA_DECODE
+43 -2
View File
@@ -281,6 +281,8 @@ section ProcessEnd
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include "include/header2.ash"
#define PURE_THUMB 1 #define PURE_THUMB 1
section .ucl_nrv2b_decompress_8 section .ucl_nrv2b_decompress_8
@@ -298,7 +300,46 @@ section .ucl_nrv2e_decompress_8
section Call2E section Call2E
bl .thumb_nrv2e_d8 bl .thumb_nrv2e_d8
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ////////////////////////////////////////
#include "include/header2.ash" section CallLZMA
// r0=src0, r1=slen, r2=dst0, r3=addr dstl
parb .req r3
para .req r4
parc .req r5
pard .req r6
adr r7, .LzmaParams
ldmia r7!, {parb, para, parc, pard} // load params
mov r7, sp // save stack
add para, sp
mov r1, #0
.Lclearstack:
push {r1}
cmp sp, para
bne .Lclearstack
push {r2, parb, para} // out, outSize, &outSizeProcessed
add r3, para, #4 // &inSizeProcessed
mov r2, parc // inSize
add r1, r0, #2 // in
add r0, r3, #4 // &CLzmaDecoderState
str pard, [r0] // lc, lp, pb, dummy
bl LZMA_DECODE
mov sp, r7
b .LLZMA_end
.align 2
.LzmaParams:
.long UPXb, UPXa, UPXc, UPXd
.LLZMA_end:
section LZMA_DECODE
.real_start_ofLZMA_DECODE: // suppress silly warnings
#undef section
#include "arch/arm/v4t/lzma_d_cs.S"