* fixed mmap for non-i386 non-m68k architectures (not sure about

x86-64)
This commit is contained in:
Jonas Maebe 2003-05-11 16:07:55 +00:00
parent 15b0132f6f
commit 8bd6d64c35
3 changed files with 54 additions and 6 deletions

View File

@ -344,9 +344,18 @@ type
end; end;
{$ifdef i386}
{$define OLDMMAP}
{$endif i386}
{$ifdef m68k}
{$define OLDMMAP}
{$endif m68k}
Function Fpmmap(adr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;off:off_t):pointer; [public, alias : 'FPC_SYSC_MMAP']; Function Fpmmap(adr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;off:off_t):pointer; [public, alias : 'FPC_SYSC_MMAP'];
// OFF_T procedure, and returns a pointer, NOT cint. // OFF_T procedure, and returns a pointer, NOT cint.
{$ifdef OLDMMAP}
var var
mmapargs : tmmapargs; mmapargs : tmmapargs;
begin begin
@ -358,6 +367,13 @@ begin
mmapargs.offset:=TSysParam(off); mmapargs.offset:=TSysParam(off);
Fpmmap:=pointer(do_syscall(syscall_nr_mmap,TSysParam(@MMapArgs))); Fpmmap:=pointer(do_syscall(syscall_nr_mmap,TSysParam(@MMapArgs)));
end; end;
{$else OLDMMAP}
begin
Fpmmap:= pointer(do_syscall(syscall_nr_mmap,TSysParam(adr),TSysParam(len),
TSysParam(prot),TSysParam(flags),TSysParam(fd),TSysParam(off)));
end;
{$endif OLDMMAP}
Function Fpmunmap(adr:pointer;len:size_t):cint; [public, alias :'FPC_SYSC_MUNMAP']; Function Fpmunmap(adr:pointer;len:size_t):cint; [public, alias :'FPC_SYSC_MUNMAP'];
begin begin
@ -431,7 +447,11 @@ end;
{ {
$Log$ $Log$
Revision 1.2 2002-12-18 17:38:01 marco Revision 1.3 2003-05-11 16:07:55 jonas
* fixed mmap for non-i386 non-m68k architectures (not sure about
x86-64)
Revision 1.2 2002/12/18 17:38:01 marco
* small fix, new rtl now cycles * small fix, new rtl now cycles
Revision 1.1 2002/12/18 16:43:26 marco Revision 1.1 2002/12/18 16:43:26 marco

View File

@ -131,6 +131,28 @@ asm
li r3,-1 li r3,-1
end; end;
function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL6'];
{
This function puts the registers in place, does the call, and then
copies back the registers as they are after the SysCall.
}
asm
mr r0,r3
mr r3,r4
mr r4,r5
mr r5,r6
mr r6,r7
mr r7,r8
mr r8,r9
sc
bnslr
neg r3, r3
lis r4,Errno@ha
stw r3,Errno@l(r4)
li r3,-1
end;
// Old style syscall: // Old style syscall:
// Better use ktrace/strace/gdb for debugging. // Better use ktrace/strace/gdb for debugging.
@ -216,7 +238,11 @@ end;
{ {
$Log$ $Log$
Revision 1.4 2003-04-22 17:07:55 florian Revision 1.5 2003-05-11 16:07:55 jonas
* fixed mmap for non-i386 non-m68k architectures (not sure about
x86-64)
Revision 1.4 2003/04/22 17:07:55 florian
* there where two SYSCALL1 procedures for the powerpc, fixed * there where two SYSCALL1 procedures for the powerpc, fixed
Revision 1.3 2003/01/09 13:38:26 florian Revision 1.3 2003/01/09 13:38:26 florian

View File

@ -40,13 +40,15 @@ function Do_SysCall(sysnr,param1,param2:TSysParam):TSysResult; external name 'F
function Do_SysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; external name 'FPC_SYSCALL3'; function Do_SysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; external name 'FPC_SYSCALL3';
function Do_SysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; external name 'FPC_SYSCALL4'; function Do_SysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; external name 'FPC_SYSCALL4';
function Do_SysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; external name 'FPC_SYSCALL5'; function Do_SysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; external name 'FPC_SYSCALL5';
{$ifdef notsupported} function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; external name 'FPC_SYSCALL6';
function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; external name 'FPC_SYSCALL5';
{$endif notsupported}
{ {
$Log$ $Log$
Revision 1.1 2002-12-22 16:00:28 jonas Revision 1.2 2003-05-11 16:07:55 jonas
* fixed mmap for non-i386 non-m68k architectures (not sure about
x86-64)
Revision 1.1 2002/12/22 16:00:28 jonas
+ added syscallh.inc, adapted syscall.inc + added syscallh.inc, adapted syscall.inc
Revision 1.3 2002/12/18 20:41:33 peter Revision 1.3 2002/12/18 20:41:33 peter