diff options
author | karoly <karoly@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-07-27 19:01:38 +0000 |
---|---|---|
committer | karoly <karoly@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-07-27 19:01:38 +0000 |
commit | 4b3a0fa223899b6038ca339c7aa393eb4214d9f6 (patch) | |
tree | 9ea8753aa75e71298f80e100b58e8558839d29c2 /rtl/bsd | |
parent | 36a0290ec4279aad971b15177e9e733abdada919 (diff) | |
download | fpc-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.inc | 23 | ||||
-rw-r--r-- | rtl/bsd/m68k/syscallh.inc | 10 |
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'; |