4
4
; This file is part of the UPX executable compressor.
6
; Copyright (C) 1996-2008 Markus Franz Xaver Johannes Oberhumer
7
; Copyright (C) 1996-2008 Laszlo Molnar
6
; Copyright (C) 1996-2009 Markus Franz Xaver Johannes Oberhumer
7
; Copyright (C) 1996-2009 Laszlo Molnar
8
8
; All Rights Reserved.
10
10
; UPX and the UCL library are free software; you can redistribute them
37
#if defined(ARMEL_DARWIN) /*{*/
41
swi 0x80 // sets Carry iff error
42
orrcs r0,r0,#(1<<31) // force negative on error; FIXME: needed?
46
.macro do_dcache_flush // In: r0=addr; r1=len
47
mov r3,#1 // _sys_dcache_flush
48
mov ip,#(1<<31) // syscall number?
52
.macro do_icache_invalidate // In: r0=addr; r1=len
53
mov r3,#0 // _sys_icache_invalidate
54
mov ip,#(1<<31) // syscall number?
57
#elif defined(ARMEL_EABI4) /*}{*/
61
mov r12,r7 // save r7 in ip
62
mov r7,#\N // syscall number
64
mov r7,r12 // restore r7 from ip
67
mov r12,r7 // save r7 in ip
68
mov r7, #(\N) & 0xff // syscall number
69
orr r7,r7,#(\N) &~0xff // high bits
71
mov r7,r12 // restore r7 from ip
74
#elif defined(ARM_OLDABI) /*}{*/
76
__NR_SYSCALL_BASE = 0x900000
86
error \N // ARM_OLDABI, ARMEL_EABI4, ARMEL_DARWIN ?
89
error \N // ARM_OLDABI, ARMEL_EABI4, ARMEL_DARWIN ?
94
bx lr /* armv5 for thumb interworking */
37
97
.macro loadcon8 reg,val8
38
98
.long (0xe3<<24)|(0xa0<<16)|((\reg<<4)<<8)+(\val8) /* mov \reg,#\val8 */