mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-10 15:58:35 +02:00
* fixed setjump
* fixed syscalls
This commit is contained in:
parent
c244b8b527
commit
1883a09ddd
@ -18,6 +18,10 @@
|
|||||||
|
|
||||||
{$asmmode gas}
|
{$asmmode gas}
|
||||||
|
|
||||||
|
procedure fpc_cpuinit;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
stack frame related stuff
|
stack frame related stuff
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -119,7 +123,11 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.3 2003-11-21 00:40:06 florian
|
Revision 1.4 2004-01-20 21:01:57 florian
|
||||||
|
* fixed setjump
|
||||||
|
* fixed syscalls
|
||||||
|
|
||||||
|
Revision 1.3 2003/11/21 00:40:06 florian
|
||||||
* some arm issues fixed
|
* some arm issues fixed
|
||||||
|
|
||||||
Revision 1.2 2003/09/03 14:09:37 florian
|
Revision 1.2 2003/09/03 14:09:37 florian
|
||||||
@ -130,4 +138,4 @@ end;
|
|||||||
Revision 1.1 2003/08/21 16:41:54 florian
|
Revision 1.1 2003/08/21 16:41:54 florian
|
||||||
* empty dummy files
|
* empty dummy files
|
||||||
+ [long|set]jmp implemented
|
+ [long|set]jmp implemented
|
||||||
}
|
}
|
@ -18,7 +18,7 @@
|
|||||||
function setjmp(var S : jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJMP'];
|
function setjmp(var S : jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJMP'];
|
||||||
asm
|
asm
|
||||||
stmia r0,{v1-v6, sl, fp, sp, lr}
|
stmia r0,{v1-v6, sl, fp, sp, lr}
|
||||||
(*!!!! fix me ?*)
|
mov r0,#0
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'FPC_LONGJMP'];
|
procedure longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'FPC_LONGJMP'];
|
||||||
@ -32,7 +32,11 @@ procedure longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'F
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2003-09-03 14:09:37 florian
|
Revision 1.3 2004-01-20 21:01:57 florian
|
||||||
|
* fixed setjump
|
||||||
|
* fixed syscalls
|
||||||
|
|
||||||
|
Revision 1.2 2003/09/03 14:09:37 florian
|
||||||
* arm fixes to the common rtl code
|
* arm fixes to the common rtl code
|
||||||
* some generic math code fixed
|
* some generic math code fixed
|
||||||
* ...
|
* ...
|
||||||
@ -40,4 +44,4 @@ procedure longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'F
|
|||||||
Revision 1.1 2003/08/21 16:41:54 florian
|
Revision 1.1 2003/08/21 16:41:54 florian
|
||||||
* empty dummy files
|
* empty dummy files
|
||||||
+ [long|set]jmp implemented
|
+ [long|set]jmp implemented
|
||||||
}
|
}
|
@ -177,12 +177,31 @@ end;
|
|||||||
|
|
||||||
// Old style syscall:
|
// Old style syscall:
|
||||||
// Better use ktrace/strace/gdb for debugging.
|
// Better use ktrace/strace/gdb for debugging.
|
||||||
Procedure FpSysCall( callnr:longint;var regs : SysCallregs );assembler;
|
Procedure FpSysCall(callnr:longint;var regs : SysCallregs);assembler;
|
||||||
{
|
{
|
||||||
This function puts the registers in place, does the call, and then
|
This function puts the registers in place, does the call, and then
|
||||||
copies back the registers as they are after the SysCall.
|
copies back the registers as they are after the SysCall.
|
||||||
}
|
}
|
||||||
asm
|
asm
|
||||||
|
stmfd r13!,{r4-r6}
|
||||||
|
ldr r2,[r1,#4]
|
||||||
|
ldr r3,[r1,#8]
|
||||||
|
ldr r4,[r1,#12]
|
||||||
|
ldr r5,[r1,#16]
|
||||||
|
ldr r6,[r1,#20]
|
||||||
|
ldr r1,[r1]
|
||||||
|
swi #0x900071
|
||||||
|
cmn r0,#126
|
||||||
|
bls .LDone
|
||||||
|
ldr r1,.LErrno
|
||||||
|
rsb r0,r0,#0
|
||||||
|
str r0,[r1]
|
||||||
|
mvn r0,#0
|
||||||
|
b .LDone
|
||||||
|
.LErrno:
|
||||||
|
.word Errno
|
||||||
|
.LDone:
|
||||||
|
ldmfd r13!,{r4-r6}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF SYSCALL_DEBUG}
|
{$IFDEF SYSCALL_DEBUG}
|
||||||
@ -241,7 +260,11 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.3 2003-12-29 19:24:12 florian
|
Revision 1.4 2004-01-20 21:01:57 florian
|
||||||
|
* fixed setjump
|
||||||
|
* fixed syscalls
|
||||||
|
|
||||||
|
Revision 1.3 2003/12/29 19:24:12 florian
|
||||||
+ introduced PtrInt and PtrUInt
|
+ introduced PtrInt and PtrUInt
|
||||||
* made strscan 64 bit safe
|
* made strscan 64 bit safe
|
||||||
|
|
||||||
@ -251,4 +274,3 @@ end;
|
|||||||
Revision 1.1 2003/08/28 00:08:29 florian
|
Revision 1.1 2003/08/28 00:08:29 florian
|
||||||
* syscall skeleton
|
* syscall skeleton
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user