summaryrefslogtreecommitdiff
path: root/rtl/bsd
diff options
context:
space:
mode:
authorkaroly <karoly@3ad0048d-3df7-0310-abae-a5850022a9f2>2017-07-27 19:01:38 +0000
committerkaroly <karoly@3ad0048d-3df7-0310-abae-a5850022a9f2>2017-07-27 19:01:38 +0000
commit4b3a0fa223899b6038ca339c7aa393eb4214d9f6 (patch)
tree9ea8753aa75e71298f80e100b58e8558839d29c2 /rtl/bsd
parent36a0290ec4279aad971b15177e9e733abdada919 (diff)
downloadfpc-4b3a0fa223899b6038ca339c7aa393eb4214d9f6.tar.gz
netbsd: try to support syscalls which return 64bit values properly on 68k
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@36802 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/bsd')
-rw-r--r--rtl/bsd/m68k/syscall.inc23
-rw-r--r--rtl/bsd/m68k/syscallh.inc10
2 files changed, 20 insertions, 13 deletions
diff --git a/rtl/bsd/m68k/syscall.inc b/rtl/bsd/m68k/syscall.inc
index 8f4f0b934e..95a03345f8 100644
--- a/rtl/bsd/m68k/syscall.inc
+++ b/rtl/bsd/m68k/syscall.inc
@@ -19,8 +19,8 @@
function FpSysCall(sysnr:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL0'];
asm
- move.l sysnr,d0
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
@@ -31,9 +31,9 @@ end;
function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL1'];
asm
- move.l sysnr,d0
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
@@ -44,10 +44,10 @@ end;
function FpSysCall(sysnr,param1,param2:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL2'];
asm
- move.l sysnr,d0
move.l param2,-(sp)
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
@@ -58,11 +58,11 @@ end;
function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL3'];
asm
- move.l sysnr,d0
move.l param3,-(sp)
move.l param2,-(sp)
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
@@ -73,12 +73,12 @@ end;
function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL4'];
asm
- move.l sysnr,d0
move.l param4,-(sp)
move.l param3,-(sp)
move.l param2,-(sp)
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
@@ -89,24 +89,24 @@ end;
function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL5'];
asm
- move.l sysnr,d0
move.l param5,-(sp)
move.l param4,-(sp)
move.l param3,-(sp)
move.l param2,-(sp)
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
moveq.l #-1,d0
+ moveq.l #-1,d1
@noerror:
end;
function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL6'];
asm
- move.l sysnr,d0
move.l param6,-(sp)
move.l param5,-(sp)
move.l param4,-(sp)
@@ -114,17 +114,17 @@ asm
move.l param2,-(sp)
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
moveq.l #-1,d0
+ moveq.l #-1,d1
@noerror:
end;
-
function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6,param7:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL7'];
asm
- move.l sysnr,d0
move.l param7,-(sp)
move.l param6,-(sp)
move.l param5,-(sp)
@@ -133,17 +133,18 @@ asm
move.l param2,-(sp)
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
moveq.l #-1,d0
+ moveq.l #-1,d1
@noerror:
end;
function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6,param7,param8:TSysParam):TSysResult; assembler; stdcall; [public,alias:'FPC_SYSCALL8'];
asm
- move.l sysnr,d0
move.l param8,-(sp)
move.l param7,-(sp)
move.l param6,-(sp)
@@ -153,9 +154,11 @@ asm
move.l param2,-(sp)
move.l param1,-(sp)
move.l #0,-(sp)
+ move.l sysnr,d0
trap #0
bcc @noerror
jsr seterrno
moveq.l #-1,d0
+ moveq.l #-1,d1
@noerror:
end;
diff --git a/rtl/bsd/m68k/syscallh.inc b/rtl/bsd/m68k/syscallh.inc
index b005eec9a4..754289378c 100644
--- a/rtl/bsd/m68k/syscallh.inc
+++ b/rtl/bsd/m68k/syscallh.inc
@@ -14,9 +14,9 @@
}
Type
-
- TSysResult = longint;
- TSysParam = Longint;
+ TSysResult64 = int64;
+ TSysResult = longint;
+ TSysParam = Longint;
function Do_SysCall(sysnr:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL0';
function Do_SysCall(sysnr,param1:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL1';
@@ -24,6 +24,10 @@ function Do_SysCall(sysnr,param1,param2:TSysParam):TSysResult; stdcall; external
function Do_SysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL3';
function Do_SysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL4';
function Do_SysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL5';
+function Do_SysCall64(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult64; stdcall; external name 'FPC_SYSCALL5';
function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL6';
+function Do_SysCall64(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult64; stdcall; external name 'FPC_SYSCALL6';
function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6,param7:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL7';
+function Do_SysCall64(sysnr,param1,param2,param3,param4,param5,param6,param7:TSysParam):TSysResult64; stdcall; external name 'FPC_SYSCALL7';
function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6,param7,param8:TSysParam):TSysResult; stdcall; external name 'FPC_SYSCALL8';
+function Do_SysCall64(sysnr,param1,param2,param3,param4,param5,param6,param7,param8:TSysParam):TSysResult64; stdcall; external name 'FPC_SYSCALL8';