|
@@ -42,6 +42,7 @@ asm
|
|
|
.LDone:
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL1'];
|
|
|
{
|
|
|
This function puts the registers in place, does the call, and then
|
|
@@ -81,6 +82,7 @@ asm
|
|
|
.LDone:
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL3'];
|
|
|
{
|
|
|
This function puts the registers in place, does the call, and then
|
|
@@ -107,14 +109,44 @@ function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; asse
|
|
|
copies back the registers as they are after the SysCall.
|
|
|
}
|
|
|
asm
|
|
|
+ stmfd r13!,{r4}
|
|
|
+ ldr r4,param4
|
|
|
+ swi #0x900071
|
|
|
+ cmn r0,#126
|
|
|
+ bls .LDone
|
|
|
+ ldr r1,.LErrno
|
|
|
+ rsb r0,r0,#0
|
|
|
+ str r0,[r1]
|
|
|
+ mvn r0,#0
|
|
|
+ b .LDone
|
|
|
+.LErrno:
|
|
|
+ .word Errno
|
|
|
+.LDone:
|
|
|
+ ldmfd r13!,{r4}
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL5'];
|
|
|
{
|
|
|
This function puts the registers in place, does the call, and then
|
|
|
copies back the registers as they are after the SysCall.
|
|
|
}
|
|
|
asm
|
|
|
+ stmfd r13!,{r4-r5}
|
|
|
+ ldr r5,param5
|
|
|
+ ldr r4,param4
|
|
|
+ swi #0x900071
|
|
|
+ cmn r0,#126
|
|
|
+ bls .LDone
|
|
|
+ ldr r1,.LErrno
|
|
|
+ rsb r0,r0,#0
|
|
|
+ str r0,[r1]
|
|
|
+ mvn r0,#0
|
|
|
+ b .LDone
|
|
|
+.LErrno:
|
|
|
+ .word Errno
|
|
|
+.LDone:
|
|
|
+ ldmfd r13!,{r4-r5}
|
|
|
end;
|
|
|
|
|
|
|
|
@@ -124,11 +156,27 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TS
|
|
|
copies back the registers as they are after the SysCall.
|
|
|
}
|
|
|
asm
|
|
|
+ stmfd r13!,{r4-r6}
|
|
|
+ ldr r6,param6
|
|
|
+ ldr r5,param5
|
|
|
+ ldr r4,param4
|
|
|
+ swi #0x900071
|
|
|
+ cmn r0,#126
|
|
|
+ bls .LDone
|
|
|
+ ldr r1,.LErrno
|
|
|
+ rsb r0,r0,#0
|
|
|
+ str r0,[r1]
|
|
|
+ mvn r0,#0
|
|
|
+ b .LDone
|
|
|
+.LErrno:
|
|
|
+ .word Errno
|
|
|
+.LDone:
|
|
|
+ ldmfd r13!,{r4-r6}
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
// Old style syscall:
|
|
|
// Better use ktrace/strace/gdb for debugging.
|
|
|
-
|
|
|
Procedure FpSysCall( callnr:longint;var regs : SysCallregs );assembler;
|
|
|
{
|
|
|
This function puts the registers in place, does the call, and then
|
|
@@ -193,7 +241,11 @@ end;
|
|
|
|
|
|
{
|
|
|
$Log$
|
|
|
- Revision 1.2 2003-12-03 17:34:12 florian
|
|
|
+ Revision 1.3 2003-12-29 19:24:12 florian
|
|
|
+ + introduced PtrInt and PtrUInt
|
|
|
+ * made strscan 64 bit safe
|
|
|
+
|
|
|
+ Revision 1.2 2003/12/03 17:34:12 florian
|
|
|
+ started to implement arm syscalls
|
|
|
|
|
|
Revision 1.1 2003/08/28 00:08:29 florian
|