* fix parameter handling in FPC_SYSCALL4 to FPC_SYSCALL6

git-svn-id: trunk@24193 -
This commit is contained in:
florian 2013-04-07 21:01:01 +00:00
parent 52070e26e1
commit 308fb42f4b

View File

@ -132,33 +132,36 @@ asm
end;
function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL4'];
function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL4'];
{
Perform syscall and set errno variable if needed.
}
asm
push {r6,r7}
push {r7}
push {r0}
mov r0,r1
mov r1,r2
mov r2,r3
ldr r3,param4
ldr r3,[r13 ,#8]
pop {r7}
// svc #0x0
// GNU 2.22 does not like svc #0x0
.byte 0,0xdf
mov r1,#126
cmn r0,r1
pop {r6,r7}
pop {r7}
bls .LExit
push {lr}
neg r0,r0
bl seterrno
mov r0,#0
mvn r0,r0
pop {pc}
.LExit:
mov pc,lr
end;
function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL5'];
function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL5'];
{
Perform syscall and set errno variable if needed.
}
@ -168,8 +171,8 @@ asm
mov r0,r1
mov r1,r2
mov r2,r3
ldr r3,param4
ldr r4,param5
ldr r3,[r13 ,#12]
ldr r4,[r13 ,#16]
pop {r7}
// svc #0x0
// GNU 2.22 does not like svc #0x0
@ -178,40 +181,46 @@ asm
cmn r0,r1
pop {r4,r7}
bls .LExit
push {lr}
neg r0,r0
bl seterrno
mov r0,#0
mvn r0,r0
pop {pc}
.LExit:
mov pc,lr
end;
function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL6'];
function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL6'];
{
Perform syscall and set errno variable if needed.
}
asm
push {r4,r5,r6,r7}
push {r4,r5,r7}
push {r0}
mov r0,r1
mov r1,r2
mov r2,r3
ldr r3,param4
ldr r4,param5
ldr r4,param6
ldr r3,[r13 ,#16]
ldr r4,[r13 ,#20]
ldr r5,[r13 ,#24]
pop {r7}
// svc #0x0
// GNU 2.22 does not like svc #0x0
.byte 0,0xdf
mov r1,#126
cmn r0,r1
pop {r4,r5,r6,r7}
pop {r4,r5,r7}
bls .LExit
push {lr}
neg r0,r0
bl seterrno
mov r0,#0
mvn r0,r0
pop {pc}
.LExit:
mov pc,lr
end;