netbsd: try to support syscalls which return 64bit values properly on 68k

git-svn-id: trunk@36802 -
This commit is contained in:
Károly Balogh 2017-07-27 19:01:38 +00:00
parent 071b588da2
commit 12697deda7
2 changed files with 20 additions and 13 deletions

View File

@ -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;

View File

@ -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';