X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Farch%2Farmv7.S.h;h=560b809f0c1df0c929465293938271c71c5f73a2;hb=30c11f371da98d13344e8bed3766d3e574a65ac9;hp=97dad215a8839de3fd4c6f5f45b79ef1c39a0aac;hpb=c1771fb9d6e85a8453a0f4553b3878959901b613;p=tpg%2Facess2.git 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 97dad215..560b809f 100644 --- 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} + ldm sp, {r1,r2,r3} 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: + push {lr} svc #\_num str r2, _errno - mov pc, lr + pop {pc} .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 - pop {r4} - mov pc, lr + pop {r4, pc} .endm .macro syscall6 _name, _num .globl \_name \_name: - push {r4,r5} - ldr r4, [sp,#8] - ldr r5, [sp,#12] + push {r4,r5,lr} + ldr r4, [sp,#12] + ldr r5, [sp,#16] svc #\_num str r2, _errno - pop {r4,r5} - mov pc, lr + pop {r4,r5,pc} .endm #define SYSCALL0(_name,_num) syscall0 _name, _num