git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Usermode/ld-acess - Fixed bug in syscall5/syscall6 macros (ARMv7)
[tpg/acess2.git]
/
Usermode
/
Libraries
/
ld-acess.so_src
/
arch
/
armv7.S.h
diff --git
a/Usermode/Libraries/ld-acess.so_src/arch/armv7.S.h
b/Usermode/Libraries/ld-acess.so_src/arch/armv7.S.h
index
97dad21
..
560b809
100644
(file)
--- a/
Usermode/Libraries/ld-acess.so_src/arch/armv7.S.h
+++ b/
Usermode/Libraries/ld-acess.so_src/arch/armv7.S.h
@@
-8,6
+8,7
@@
.extern SoMain
_start:
pop {r0}
.extern SoMain
_start:
pop {r0}
+ ldm sp, {r1,r2,r3}
bl SoMain
mov r4, r0
bl SoMain
mov r4, r0
@@
-60,32
+61,31
@@
_errno: .long 0 @ Placed in .text, to allow use of relative addressing
.macro syscall0 _name, _num
.globl \_name
\_name:
.macro syscall0 _name, _num
.globl \_name
\_name:
+ push {lr}
svc #\_num
str r2, _errno
svc #\_num
str r2, _errno
- mov pc, lr
+ pop {pc}
.endm
.macro syscall5 _name, _num
.globl \_name
\_name:
.endm
.macro syscall5 _name, _num
.globl \_name
\_name:
- push {r4}
- ldr r4, [sp,#
4
]
+ push {r4
, lr
}
+ ldr r4, [sp,#
8
]
svc #\_num
str r2, _errno
svc #\_num
str r2, _errno
- pop {r4}
- mov pc, lr
+ pop {r4, pc}
.endm
.macro syscall6 _name, _num
.globl \_name
\_name:
.endm
.macro syscall6 _name, _num
.globl \_name
\_name:
- push {r4,r5}
- ldr r4, [sp,#
8
]
- ldr r5, [sp,#1
2
]
+ push {r4,r5
,lr
}
+ ldr r4, [sp,#
12
]
+ ldr r5, [sp,#1
6
]
svc #\_num
str r2, _errno
svc #\_num
str r2, _errno
- pop {r4,r5}
- mov pc, lr
+ pop {r4,r5,pc}
.endm
#define SYSCALL0(_name,_num) syscall0 _name, _num
.endm
#define SYSCALL0(_name,_num) syscall0 _name, _num
UCC
git Repository :: git.ucc.asn.au