mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 11:59:27 +02:00
* fixed mmap for non-i386 non-m68k architectures (not sure about
x86-64)
This commit is contained in:
parent
15b0132f6f
commit
8bd6d64c35
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user