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