Browse Source

* some changes due to updating linux.pp to new syscall

marco 25 years ago
parent
commit
7a3c2d2dc7
1 changed files with 57 additions and 8 deletions
  1. 57 8
      rtl/bsd/syscalls.inc

+ 57 - 8
rtl/bsd/syscalls.inc

@@ -18,13 +18,13 @@
 {No debugging for syslinux include !}
 {No debugging for syslinux include !}
 {$IFDEF SYS_LINUX}
 {$IFDEF SYS_LINUX}
   {$UNDEF SYSCALL_DEBUG}
   {$UNDEF SYSCALL_DEBUG}
-{$ENDIF SYS_LINUX}  
+{$ENDIF SYS_LINUX}
 
 
 {*****************************************************************************
 {*****************************************************************************
                      --- Main:The System Call Self ---
                      --- Main:The System Call Self ---
 *****************************************************************************}
 *****************************************************************************}
 
 
-{ The system designed for Linux can't be used for FreeBSD so easily, since 
+{ The system designed for Linux can't be used for FreeBSD so easily, since
   FreeBSD pushes arguments, instead of loading them to registers.
   FreeBSD pushes arguments, instead of loading them to registers.
 
 
 For now I do them in assembler, which makes it easier to test them (copy and
 For now I do them in assembler, which makes it easier to test them (copy and
@@ -38,7 +38,27 @@ paste to and AS source). Ultimately I hope to design something like this}
                    ret
                    ret
 }
 }
 
 
+function Do_SysCall(sysnr:LONGINT):longint;
 
 
+var retval:longint;
+
+begin
+ asm
+  movl  sysnr,%eax
+  call  _actualsyscall
+  mov   %eax,Retval
+ end;
+ if RetVal<0 then
+   begin
+     ErrNo:=-RetVal;
+     DoSysCall:=-1;
+   end
+  else
+   begin
+     DoSysCall:=Retval;
+     errno:=0
+   end;
+end;
 
 
 function Do_SysCall(sysnr,param1:LONGINT):longint;
 function Do_SysCall(sysnr,param1:LONGINT):longint;
 
 
@@ -64,6 +84,32 @@ begin
    end;
    end;
 end;
 end;
 
 
+
+function Do_SysCall(sysnr,param1:integer):longint;
+
+var retval:longint;
+
+begin
+ asm
+  movl  sysnr,%eax
+  pushw Param1
+  call  _actualsyscall
+  addl  $2,%esp
+  mov   %eax,Retval
+ end;
+ if RetVal<0 then
+   begin
+     ErrNo:=-RetVal;
+     DoSysCall:=-1;
+   end
+  else
+   begin
+     DoSysCall:=Retval;
+     errno:=0
+   end;
+end;
+
+
 function Do_SysCall(sysnr,param1,param2:LONGINT):longint;
 function Do_SysCall(sysnr,param1,param2:LONGINT):longint;
 
 
 var retval:longint;
 var retval:longint;
@@ -330,7 +376,7 @@ begin
   if sys_stat(f,st)<0 then
   if sys_stat(f,st)<0 then
    exit;
    exit;
 { Is it a dir ? }
 { Is it a dir ? }
-  if not((st.mode and $f000)=$4000)then 
+  if not((st.mode and $f000)=$4000)then
    begin
    begin
      errno:=sys_enotdir;
      errno:=sys_enotdir;
      exit
      exit
@@ -365,9 +411,9 @@ var
     retval : longint;
     retval : longint;
 begin
 begin
  retval:=dosyscall(272,longint(@p.fd),longint(@p.buf),sizeof(dirent));
  retval:=dosyscall(272,longint(@p.fd),longint(@p.buf),sizeof(dirent));
-  if retval=0 then 
-   sys_readdir:=nil 
-  else 
+  if retval=0 then
+   sys_readdir:=nil
+  else
    sys_readdir:=p^.buf
    sys_readdir:=p^.buf
 end;
 end;
 
 
@@ -384,7 +430,10 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.6  2000-02-27 23:45:39  marco
+  Revision 1.7  2000-03-01 17:28:40  marco
+   * some changes due to updating linux.pp to new syscall
+
+  Revision 1.6  2000/02/27 23:45:39  marco
    * Redone the syscalls
    * Redone the syscalls
 
 
   Revision 1.5  2000/02/04 16:53:26  marco
   Revision 1.5  2000/02/04 16:53:26  marco
@@ -404,4 +453,4 @@ end;
   Revision 1.1  2000/02/02 15:41:56  marco
   Revision 1.1  2000/02/02 15:41:56  marco
    * Initial BSD version. Still needs a lot of work.
    * Initial BSD version. Still needs a lot of work.
 
 
-}
+}