diff --git a/src/stub/src/arch/arm/v4t/nrv2b_d32.S b/src/stub/src/arch/arm/v4t/nrv2b_d32.S index 0d1e2df7..e0dc8f25 100644 --- a/src/stub/src/arch/arm/v4t/nrv2b_d32.S +++ b/src/stub/src/arch/arm/v4t/nrv2b_d32.S @@ -46,14 +46,17 @@ #define jnextb0 GETBIT; bcc #define jnextb1 GETBIT; bcs +#ifndef PURE_THUMB ucl_nrv2b_decompress_32: .globl ucl_nrv2b_decompress_32 @ ARM mode .type ucl_nrv2b_decompress_32, %function /* error = (*)(char const *src, int len_src, char *dst, int *plen_dst) */ - adr r12,1+go_thumb_n2b @ load pc-relative address + adr r12,1+.thumb_nrv2b_d32 @ load pc-relative address bx r12 @ enter THUMB mode - .code 16 @ THUMB mode -go_thumb_n2b: + .thumb_func +#endif + +.thumb_nrv2b_d32: add r1,len,src @ r1= eof_src; push {r1,r2,r3, r4,r5,r6,r7, lr} mov bits,#1; neg off,bits @ off= -1 initial condition @@ -121,8 +124,12 @@ get1b: @ Out: Carry= next_bit ldrb tmp, [src],#1; orr bits,bits,tmp,lsl #3*8 adcs bits,bits,bits @ Carry= next_bit; set bit0 flag from CarryIn bx lr + .code 16 @ THUMB mode +#ifndef PURE_THUMB .size ucl_nrv2b_decompress_32, .-ucl_nrv2b_decompress_32 +#endif + /* vi:ts=8:et:nowrap */ diff --git a/src/stub/src/arch/arm/v4t/nrv2b_d8.S b/src/stub/src/arch/arm/v4t/nrv2b_d8.S index c9f98a2d..f32415ee 100644 --- a/src/stub/src/arch/arm/v4t/nrv2b_d8.S +++ b/src/stub/src/arch/arm/v4t/nrv2b_d8.S @@ -50,12 +50,13 @@ ucl_nrv2b_decompress_8: .globl ucl_nrv2b_decompress_8 @ ARM mode .type ucl_nrv2b_decompress_8, %function /* error = (*)(char const *src, int len_src, char *dst, int *plen_dst) */ - adr r12,1+.go_thumb_n2b @ load pc-relative address + adr r12,1+.thumb_nrv2b_d8 @ load pc-relative address bx r12 @ enter THUMB mode .code 16 @ THUMB mode .thumb_func #endif -.go_thumb_n2b: + +.thumb_nrv2b_d8: add r1,len,src @ r1= eof_src; push {r1,r2,r3, r4,r5,r6,r7, lr} mov bits,#1; neg off,bits @ off= -1 initial condition @@ -118,7 +119,10 @@ copy_n2b: sub len,#1; bne copy_n2b b top_n2b +#ifndef PURE_THUMB .size ucl_nrv2b_decompress_8, .-ucl_nrv2b_decompress_8 +#endif + /* vi:ts=8:et:nowrap */ diff --git a/src/stub/src/arch/arm/v4t/nrv2e_d32.S b/src/stub/src/arch/arm/v4t/nrv2e_d32.S index 79ca8b83..acafb6f1 100644 --- a/src/stub/src/arch/arm/v4t/nrv2e_d32.S +++ b/src/stub/src/arch/arm/v4t/nrv2e_d32.S @@ -50,12 +50,16 @@ #define jnextb0 GETBIT; bcc #define jnextb1 GETBIT; bcs +#ifndef PURE_THUMB ucl_nrv2e_decompress_32: .globl ucl_nrv2e_decompress_32 @ ARM mode .type ucl_nrv2e_decompress_32, %function /* error = (*)(char const *src, int len_src, char *dst, int *plen_dst) */ - adr r12,1+thumb_nrv2e_d32; bx r12 @ enter THUMB mode + adr r12,1+.thumb_nrv2e_d32; bx r12 @ enter THUMB mode .code 16 @ THUMB mode -thumb_nrv2e_d32: + .thumb_func +#endif + +.thumb_nrv2e_d32: add r1,len,src @ r1= eof_src; push {r1,r2,r3, r4,r5,r6,r7, lr} mov bits,#1; neg off,bits @ off= -1 initial condition @@ -129,8 +133,11 @@ get32: @ In: Carry set (unchanged until final adcs) ldrb tmp, [src],#1; orr bits,bits,tmp,lsl #3*8 adcs bits,bits,bits @ Set Carry out bx lr + .code 16 @ THUMB mode +#ifndef PURE_THUMB .size ucl_nrv2e_decompress_32, .-ucl_nrv2e_decompress_32 +#endif /* vi:ts=8:et:nowrap diff --git a/src/stub/src/arch/arm/v4t/nrv2e_d8.S b/src/stub/src/arch/arm/v4t/nrv2e_d8.S index 6206ee43..05a597e3 100644 --- a/src/stub/src/arch/arm/v4t/nrv2e_d8.S +++ b/src/stub/src/arch/arm/v4t/nrv2e_d8.S @@ -80,6 +80,7 @@ ucl_nrv2e_decompress_8: .globl ucl_nrv2e_decompress_8 @ ARM mode .code 16 @ THUMB mode .thumb_func #endif + .thumb_nrv2e_d8: push {r2,r3, r4,r5,r6,r7, lr} #define sp_DST0 0 /* stack offset of original dst */ @@ -90,7 +91,7 @@ ucl_nrv2e_decompress_8: .globl ucl_nrv2e_decompress_8 @ ARM mode mov dstlim,tmp #endif /*}*/ mov bits,#1; neg off,bits @ off= -1 initial condition - lsl bits,#31 @ 1<<31; refill next time + lsl bits,#31 @ 1<<31: refill next time mov wrnk,#5 lsl wrnk,#8 @ 0x500 @ nrv2e M2_MAX_OFFSET b top_n2e @@ -175,7 +176,10 @@ copy_n2e: strb tmp,[dst]; add dst,#1 sub len,#1; bne copy_n2e b top_n2e + +#ifndef PURE_THUMB .size ucl_nrv2e_decompress_8, .-ucl_nrv2e_decompress_8 +#endif /* vi:ts=8:et:nowrap diff --git a/src/stub/src/arm.v4t-wince.pe.S b/src/stub/src/arm.v4t-wince.pe.S index cdd6b947..97782d14 100644 --- a/src/stub/src/arm.v4t-wince.pe.S +++ b/src/stub/src/arm.v4t-wince.pe.S @@ -296,19 +296,37 @@ section ProcessEnd section .ucl_nrv2b_decompress_8 #include "arch/arm/v4t/nrv2b_d8.S" +#undef GETBIT +#undef wrnk section Call2B - bl .go_thumb_n2b + bl .thumb_nrv2b_d8 -#undef wrnk -#undef GETBIT section .ucl_nrv2e_decompress_8 #include "arch/arm/v4t/nrv2e_d8.S" +#undef GETBIT +#undef wrnk section Call2E bl .thumb_nrv2e_d8 + +#if 0 +section .ucl_nrv2b_decompress_32 +#include "arch/arm/v4t/nrv2b_d32.S" +#undef GETBIT +#undef wrnk +#endif + + +#if 0 +section .ucl_nrv2e_decompress_32 +#include "arch/arm/v4t/nrv2e_d32.S" +#undef GETBIT +#undef wrnk +#endif + //////////////////////////////////////// section CallLZMA