mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 08:09:28 +02:00
+ eabi syscall support
git-svn-id: trunk@9153 -
This commit is contained in:
parent
447e963e88
commit
4328d626cf
@ -22,6 +22,30 @@
|
|||||||
--- Main:The System Call Self ---
|
--- Main:The System Call Self ---
|
||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
|
{$ifdef FPC_ABI_EABI}
|
||||||
|
function FpSysCall(sysnr:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL0'];
|
||||||
|
{
|
||||||
|
Perform syscall and set errno variable if needed.
|
||||||
|
}
|
||||||
|
asm
|
||||||
|
{ for now we are lazy }
|
||||||
|
mov r7,r0
|
||||||
|
mov r0,r1
|
||||||
|
mov r1,r2
|
||||||
|
mov r2,r3
|
||||||
|
mov r3,r4
|
||||||
|
mov r4,r5
|
||||||
|
mov r5,r6
|
||||||
|
swi #0x0
|
||||||
|
cmn r0,#126
|
||||||
|
movls pc,lr
|
||||||
|
stmfd sp!,{lr}
|
||||||
|
rsb r0,r0,#0
|
||||||
|
bl seterrno
|
||||||
|
mvn r0,#0
|
||||||
|
ldmfd sp!,{pc}
|
||||||
|
end;
|
||||||
|
{$else FPC_ABI_EABI}
|
||||||
function FpSysCall(sysnr:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL0'];
|
function FpSysCall(sysnr:TSysParam):TSysResult; assembler; nostackframe; [public,alias:'FPC_SYSCALL0'];
|
||||||
{
|
{
|
||||||
Perform syscall and set errno variable if needed.
|
Perform syscall and set errno variable if needed.
|
||||||
@ -36,6 +60,7 @@ asm
|
|||||||
mvn r0,#0
|
mvn r0,#0
|
||||||
ldmfd sp!,{pc}
|
ldmfd sp!,{pc}
|
||||||
end;
|
end;
|
||||||
|
{$endif FPC_ABI_EABI}
|
||||||
|
|
||||||
|
|
||||||
procedure FPC_SYSCALL; external name 'FPC_SYSCALL0';
|
procedure FPC_SYSCALL; external name 'FPC_SYSCALL0';
|
||||||
|
Loading…
Reference in New Issue
Block a user