mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 04:09:30 +02:00
+ implemented FPC_SETJMP for the i8086
git-svn-id: branches/i8086@24002 -
This commit is contained in:
parent
f38114b34b
commit
5ea6f37247
@ -13,8 +13,21 @@
|
||||
|
||||
**********************************************************************}
|
||||
|
||||
Function fpc_SetJmp (Var S : Jmp_buf) : longint;assembler;nostackframe;[Public, alias : 'FPC_SETJMP']; compilerproc;
|
||||
Function fpc_SetJmp (Var S : Jmp_buf) : smallint;assembler;nostackframe;[Public, alias : 'FPC_SETJMP']; compilerproc;
|
||||
asm
|
||||
xchg ax, bx
|
||||
mov word [bx + Jmp_buf.bx], ax
|
||||
mov word [bx + Jmp_buf.si], si
|
||||
mov word [bx + Jmp_buf.di], di
|
||||
mov word [bx + Jmp_buf.bp], bp
|
||||
mov di, sp
|
||||
add di, 2
|
||||
mov word [bx + Jmp_buf.sp], di
|
||||
mov di, word [di - 2]
|
||||
mov word [bx + Jmp_buf.pc], di
|
||||
mov di, word [bx + Jmp_buf.di]
|
||||
mov bx, ax
|
||||
xor ax, ax
|
||||
end;
|
||||
|
||||
|
||||
|
@ -15,8 +15,10 @@
|
||||
|
||||
Type
|
||||
jmp_buf = packed record
|
||||
bx,si,di: Word;
|
||||
bp,sp,pc: Pointer;
|
||||
end;
|
||||
PJmp_buf = ^jmp_buf;
|
||||
|
||||
Function Setjmp (Var S : Jmp_buf) : longint; [external name 'FPC_SETJMP'];
|
||||
Function Setjmp (Var S : Jmp_buf) : smallint; [external name 'FPC_SETJMP'];
|
||||
Procedure longjmp (Var S : Jmp_buf; value : longint); [external name 'FPC_LONGJMP'];
|
||||
|
@ -640,5 +640,5 @@ function fpc_qword_to_double(q: qword): double; compilerproc;
|
||||
function fpc_longword_to_double(i: longword): double; compilerproc;
|
||||
{$endif FPC_INCLUDE_SOFTWARE_LONGWORD_TO_DOUBLE}
|
||||
|
||||
function fpc_setjmp(var s : jmp_buf) : longint; compilerproc;
|
||||
function fpc_setjmp(var s : jmp_buf) : {$ifdef CPU16}smallint{$else}longint{$endif}; compilerproc;
|
||||
procedure fpc_longjmp(var s : jmp_buf; value : longint); compilerproc;
|
||||
|
Loading…
Reference in New Issue
Block a user