소스 검색

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

git-svn-id: trunk@36802 -
Károly Balogh 8 년 전
부모
커밋
12697deda7
2개의 변경된 파일20개의 추가작업 그리고 13개의 파일을 삭제
  1. 13 10
      rtl/bsd/m68k/syscall.inc
  2. 7 3
      rtl/bsd/m68k/syscallh.inc

+ 13 - 10
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;

+ 7 - 3
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';