mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 21:28:03 +02:00
* x86_64-linux: assembler helpers syscalls do not need a stackframe
git-svn-id: trunk@48512 -
This commit is contained in:
parent
1e960a9aeb
commit
91586331b5
@ -20,9 +20,10 @@
|
||||
procedure mcount; external name 'mcount';
|
||||
{$endif FPC_PROFILE}
|
||||
|
||||
function FpSysCall(sysnr:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL0'];
|
||||
function FpSysCall(sysnr:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL0'];
|
||||
|
||||
asm
|
||||
pushq %rax { keep stack aligned }
|
||||
{$ifdef FPC_PROFILE}
|
||||
pushq sysnr
|
||||
call mcount
|
||||
@ -37,11 +38,13 @@ asm
|
||||
call seterrno@PLT
|
||||
movq $-1,%rax
|
||||
.LSyscOK:
|
||||
popq %rcx { remove alignment }
|
||||
end;
|
||||
|
||||
function FpSysCall(sysnr,param1 : TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL1'];
|
||||
function FpSysCall(sysnr,param1 : TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL1'];
|
||||
|
||||
asm
|
||||
pushq %rax { keep stack aligned }
|
||||
{$ifdef FPC_PROFILE}
|
||||
pushq sysnr
|
||||
pushq param1
|
||||
@ -59,11 +62,13 @@ asm
|
||||
call seterrno@PLT
|
||||
movq $-1,%rax
|
||||
.LSyscOK:
|
||||
popq %rcx { remove alignment }
|
||||
end;
|
||||
|
||||
function FpSysCall(sysnr,param1,param2 : TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL2'];
|
||||
function FpSysCall(sysnr,param1,param2 : TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL2'];
|
||||
|
||||
asm
|
||||
pushq %rax { keep stack aligned }
|
||||
{$ifdef FPC_PROFILE}
|
||||
pushq sysnr
|
||||
pushq param1
|
||||
@ -84,11 +89,13 @@ asm
|
||||
call seterrno@PLT
|
||||
movq $-1,%rax
|
||||
.LSyscOK:
|
||||
popq %rcx { remove alignment }
|
||||
end;
|
||||
|
||||
function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL3'];
|
||||
function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL3'];
|
||||
|
||||
asm
|
||||
pushq %rax { keep stack aligned }
|
||||
{$ifdef FPC_PROFILE}
|
||||
pushq sysnr
|
||||
pushq param1
|
||||
@ -112,11 +119,13 @@ asm
|
||||
call seterrno@PLT
|
||||
movq $-1,%rax
|
||||
.LSyscOK:
|
||||
popq %rcx { remove alignment }
|
||||
end;
|
||||
|
||||
function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL4'];
|
||||
function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL4'];
|
||||
|
||||
asm
|
||||
pushq %rax { keep stack aligned }
|
||||
{$ifdef FPC_PROFILE}
|
||||
pushq sysnr
|
||||
pushq param1
|
||||
@ -143,11 +152,13 @@ asm
|
||||
call seterrno@PLT
|
||||
movq $-1,%rax
|
||||
.LSyscOK:
|
||||
popq %rcx { remove alignment }
|
||||
end;
|
||||
|
||||
function FpSysCall(sysnr,param1,param2,param3,param4,param5 : TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL5'];
|
||||
function FpSysCall(sysnr,param1,param2,param3,param4,param5 : TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL5'];
|
||||
|
||||
asm
|
||||
pushq %rax { keep stack aligned }
|
||||
{$ifdef FPC_PROFILE}
|
||||
pushq sysnr
|
||||
pushq param1
|
||||
@ -177,6 +188,7 @@ asm
|
||||
call seterrno@PLT
|
||||
movq $-1,%rax
|
||||
.LSyscOK:
|
||||
popq %rcx { remove alignment }
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user