Implementing telnet server, fixes everywhere
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / arch / armv7.S.h
index 97dad21..560b809 100644 (file)
@@ -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

UCC git Repository :: git.ucc.asn.au