mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 21:09:24 +02:00
morphunits: added some of the EmulHandle magic for exec unit, which will be required for some upcoming amigalib cleanup
git-svn-id: trunk@32700 -
This commit is contained in:
parent
26e19330f5
commit
d196f8f341
@ -88,6 +88,30 @@ type
|
||||
Func : Pointer;
|
||||
end;
|
||||
|
||||
type
|
||||
TEmulRegs = (regD0,regD1,regD2,regD3,regD4,regD5,regD6,regD7,regA0,regA1,regA2,regA3,regA4,regA5,regA6,regA7,regPC,regSR);
|
||||
|
||||
type
|
||||
PEmulHandle = ^TEmulHandle;
|
||||
TEmulHandle = packed record
|
||||
reg: array[TEmulRegs] of LongWord; {* 0x00-0x44 68k emulation registers *}
|
||||
SuperHandle: Pointer; {* 0x48 pointer to SuperHandle *}
|
||||
_Type: ULONG; {* 0x4c EmulHandle type *}
|
||||
Flags: ULONG; {* 0x50 Flags *}
|
||||
|
||||
EmulFunc: procedure; cdecl; {* 0x54 *}
|
||||
EmulCallOS: function(EmulCaos: pointer): ULONG; cdecl; {* 0x58 *}
|
||||
EmulCall68k: function(EmulCaos: pointer): ULONG; cdecl; {* 0x5c *}
|
||||
EmulCallQuick68k: function(EmulCaos: pointer): ULONG; cdecl; {* 0x60 *}
|
||||
EmulCallDirectOS: function(arg: LONG): ULONG; cdecl; {* 0x64 *}
|
||||
EmulCallDirect68k: function(arg: Pointer): ULONG; cdecl; {* 0x68 *}
|
||||
|
||||
OldEmulHandle: PEmulHandle; {* 0x6c Here we record the previous EmulHandle *}
|
||||
{ * TODO: but wait, there's more... * }
|
||||
end;
|
||||
|
||||
function GetEmulHandle: PEmulHandle;
|
||||
|
||||
function REG_D0: DWord;
|
||||
function REG_D1: DWord;
|
||||
function REG_D2: DWord;
|
||||
@ -958,7 +982,7 @@ type
|
||||
PStackSwapStruct = ^TStackSwapStruct;
|
||||
TStackSwapStruct = packed record
|
||||
stk_Lower : Pointer; { * Lowest byte of stack * }
|
||||
stk_Upper : Pointer; { * Upper end of stack (size + Lowert) * }
|
||||
stk_Upper : Pointer; { * Upper end of stack (size + Lowert) * }
|
||||
stk_Pointer: Pointer; { * Stack pointer at switch point * }
|
||||
end;
|
||||
|
||||
@ -2413,6 +2437,10 @@ begin
|
||||
NewGetTaskAttrs:=NewGetTaskAttrsA(Task,Data,DataSize,TType,@Tags);
|
||||
end;
|
||||
|
||||
function GetEmulHandle: PEmulHandle; assembler; nostackframe;
|
||||
asm
|
||||
mr r3,r2
|
||||
end;
|
||||
|
||||
function REG_D0: DWord; assembler; nostackframe;
|
||||
asm
|
||||
@ -2464,6 +2492,7 @@ function REG_A1: Pointer; assembler; nostackframe;
|
||||
asm
|
||||
lwz r3,36(r2)
|
||||
end;
|
||||
|
||||
function REG_A2: Pointer; assembler; nostackframe;
|
||||
asm
|
||||
lwz r3,40(r2)
|
||||
|
Loading…
Reference in New Issue
Block a user