* fixed setjump

* fixed syscalls
This commit is contained in:
florian 2004-01-20 21:01:57 +00:00
parent c244b8b527
commit 1883a09ddd
3 changed files with 42 additions and 8 deletions

View File

@ -18,6 +18,10 @@
{$asmmode gas}
procedure fpc_cpuinit;
begin
end;
{****************************************************************************
stack frame related stuff
****************************************************************************}
@ -119,7 +123,11 @@ end;
{
$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
Revision 1.2 2003/09/03 14:09:37 florian

View File

@ -18,7 +18,7 @@
function setjmp(var S : jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJMP'];
asm
stmia r0,{v1-v6, sl, fp, sp, lr}
(*!!!! fix me ?*)
mov r0,#0
end;
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$
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
* some generic math code fixed
* ...

View File

@ -177,12 +177,31 @@ end;
// Old style syscall:
// 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
copies back the registers as they are after the SysCall.
}
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;
{$IFDEF SYSCALL_DEBUG}
@ -241,7 +260,11 @@ end;
{
$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
* made strscan 64 bit safe
@ -251,4 +274,3 @@ end;
Revision 1.1 2003/08/28 00:08:29 florian
* syscall skeleton
}