From a6b7be5ca1bd3fb24acf00c9fef7e07fb64c11a2 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 3 Mar 2005 20:13:44 +0000 Subject: [PATCH] + sparc specific pipe implementation --- rtl/linux/bunxsysc.inc | 9 +++++++- rtl/linux/sparc/syscall.inc | 42 ++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/rtl/linux/bunxsysc.inc b/rtl/linux/bunxsysc.inc index 321188b9c0..937343a2a1 100644 --- a/rtl/linux/bunxsysc.inc +++ b/rtl/linux/bunxsysc.inc @@ -337,11 +337,15 @@ begin fputime:=do_syscall(syscall_nr_utime,TSysParam(path),TSysParam(times)); end; + +{$ifndef FPC_SYSTEM_HAS_FPPIPE} Function fppipe(var fildes : tfildes):cint; begin fppipe:=do_syscall(syscall_nr_pipe,TSysParam(@fildes)); end; +{$endif FPC_SYSTEM_HAS_FPPIPE} + function fpfcntl(fildes:cint;Cmd:cint;Arg:cint):cint; @@ -530,7 +534,10 @@ end; { $Log$ - Revision 1.2 2005-02-14 17:13:30 peter + Revision 1.3 2005-03-03 20:13:44 florian + + sparc specific pipe implementation + + Revision 1.2 2005/02/14 17:13:30 peter * truncate log Revision 1.1 2005/02/13 20:01:38 peter diff --git a/rtl/linux/sparc/syscall.inc b/rtl/linux/sparc/syscall.inc index 9ffee52bff..72df687c1c 100644 --- a/rtl/linux/sparc/syscall.inc +++ b/rtl/linux/sparc/syscall.inc @@ -58,6 +58,43 @@ asm end; +{$define FPC_SYSTEM_HAS_FPPIPE} +Function fppipe(var fildes : tfildes):cint;assembler; +{ + This function puts the registers in place, does the call, and then + copies back the registers as they are after the SysCall. +} +asm + mov 42,%g1 + mov %i0,%o0 + ta 0x10 + bcc .LSyscOK + nop + mov %o0,%l0 + sethi %hi(fpc_threadvar_relocate_proc),%o2 + or %o2,%lo(fpc_threadvar_relocate_proc),%o2 + ld [%o2],%o3 + subcc %o3,%g0,%g0 + bne .LThread + nop + sethi %hi(Errno+4),%o0 + ba .LNoThread + or %o0,%lo(Errno+4),%o0 +.LThread: + sethi %hi(Errno),%o0 + or %o0,%lo(Errno),%o0 + call %o3 + ld [%o0],%o0 +.LNoThread: + st %l0,[%o0] + mov -1,%o0 +.LSyscOK: + st [%i0],%o0 + st [%i0+4],%o1 +end; + + + {***************************************************************************** --- Main:The System Call Self --- *****************************************************************************} @@ -317,7 +354,10 @@ end; { $Log$ - Revision 1.17 2005-02-14 17:13:30 peter + Revision 1.18 2005-03-03 20:13:44 florian + + sparc specific pipe implementation + + Revision 1.17 2005/02/14 17:13:30 peter * truncate log }