~ubuntu-branches/debian/sid/upx-ucl/sid

« back to all changes in this revision

Viewing changes to src/stub/src/arch/arm/v4a/lzma_d.S

  • Committer: Bazaar Package Importer
  • Author(s): Robert Luberda
  • Date: 2009-10-16 12:56:47 UTC
  • mfrom: (1.2.8 upstream)
  • Revision ID: james.westby@ubuntu.com-20091016125647-vity1npel2qsmr9c
Tags: 3.04-1
* New upstream release:
  + FTBFS with gcc 4.4 fixed by upstream (closes: #548566).
* p_mach.cpp: Fix from upstream vcs: mach/fat needs seek() 
  after set_extent().

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
   This file is part of the UPX executable compressor.
4
4
 
5
 
   Copyright (C) 1996-2008 Markus Franz Xaver Johannes Oberhumer
6
 
   Copyright (C) 1996-2008 Laszlo Molnar
7
 
   Copyright (C) 2000-2008 John F. Reiser
 
5
   Copyright (C) 1996-2009 Markus Franz Xaver Johannes Oberhumer
 
6
   Copyright (C) 1996-2009 Laszlo Molnar
 
7
   Copyright (C) 2000-2009 John F. Reiser
8
8
   All Rights Reserved.
9
9
 
10
10
   UPX and the UCL library are free software; you can redistribute them
45
45
#define M_LZMA          14
46
46
        ldrb ip,meth; cmp ip,#M_LZMA; bne not_lzma
47
47
 
48
 
#if defined(LINUX_ARM_CACHEFLUSH)  /*{*/
49
 
        PUSH {dst,ldst, fp,lr}  // dst,ldst for cache flush
 
48
#if defined(LINUX_ARM_CACHEFLUSH)||defined(DARWIN_ARM_CACHEFLUSH)  /*{*/
 
49
        PUSH {dst,ldst, fp,lr}  // dst,ldst for cache flush
50
50
#else  /*}{*/
51
 
        PUSH {          fp,lr}
 
51
        PUSH {          fp,lr}
52
52
#endif  /*}*/
53
53
 
54
54
#define a0 r0
108
108
        mov sp,fp
109
109
 
110
110
#if defined(LINUX_ARM_CACHEFLUSH)  /*{*/
111
 
/* linux/include/asm-arm/unistd.h */
112
 
#define __NR_SYSCALL_BASE       0x900000
113
 
#define __ARM_NR_BASE           (__NR_SYSCALL_BASE+0x0f0000)
114
 
#define __ARM_NR_cacheflush     (__ARM_NR_BASE+2)
115
111
        mov r3,r0  // save result value
116
112
        POP {r0,r1}  // dst, ldst
117
113
        ldr r1,[r1]  // ldst by reference
118
114
        add r1,r1,r0  // just beyond what was written
119
115
        mov r2,#0
120
 
        swi __ARM_NR_cacheflush  // decompressed region
 
116
        do_sys2 __ARM_NR_cacheflush  // decompressed region
121
117
        mov r0,r3  // result value
122
118
#endif  /*}*/
 
119
#if defined(DARWIN_ARM_CACHEFLUSH)  /*{*/
 
120
        mov r4,r0  // save result value
 
121
        POP {r0,r1}  // dst, ldst
 
122
        ldr r1,[r1]  // ldst by reference
 
123
        PUSH {r0,r1}; do_dcache_flush
 
124
        POP  {r0,r1}; do_icache_invalidate
 
125
        mov r0,r4  // result value
 
126
#endif  /*}*/
123
127
 
124
128
        POP {fp,pc}
125
129
1:
126
130
 
 
131
  section LZMA_DEC20
 
132
#include "lzma_d_cf.S"
 
133
 
127
134
  section LZMA_DEC10
 
135
#if 0  /*{*/
128
136
#include "lzma_d_cs.S"
129
 
 
130
 
  section LZMA_DEC20
131
 
#if 1  /*{*/
132
 
#include "lzma_d_cf.S"
133
137
#else  /*}{*/
 
138
#define PARAMETER_STYLE 3
134
139
#include "lzma_d-arm.S"
135
140
#endif  /*}*/
136
141