mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 05:29:22 +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;
|
Func : Pointer;
|
||||||
end;
|
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_D0: DWord;
|
||||||
function REG_D1: DWord;
|
function REG_D1: DWord;
|
||||||
function REG_D2: DWord;
|
function REG_D2: DWord;
|
||||||
@ -958,7 +982,7 @@ type
|
|||||||
PStackSwapStruct = ^TStackSwapStruct;
|
PStackSwapStruct = ^TStackSwapStruct;
|
||||||
TStackSwapStruct = packed record
|
TStackSwapStruct = packed record
|
||||||
stk_Lower : Pointer; { * Lowest byte of stack * }
|
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 * }
|
stk_Pointer: Pointer; { * Stack pointer at switch point * }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2413,6 +2437,10 @@ begin
|
|||||||
NewGetTaskAttrs:=NewGetTaskAttrsA(Task,Data,DataSize,TType,@Tags);
|
NewGetTaskAttrs:=NewGetTaskAttrsA(Task,Data,DataSize,TType,@Tags);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GetEmulHandle: PEmulHandle; assembler; nostackframe;
|
||||||
|
asm
|
||||||
|
mr r3,r2
|
||||||
|
end;
|
||||||
|
|
||||||
function REG_D0: DWord; assembler; nostackframe;
|
function REG_D0: DWord; assembler; nostackframe;
|
||||||
asm
|
asm
|
||||||
@ -2464,6 +2492,7 @@ function REG_A1: Pointer; assembler; nostackframe;
|
|||||||
asm
|
asm
|
||||||
lwz r3,36(r2)
|
lwz r3,36(r2)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function REG_A2: Pointer; assembler; nostackframe;
|
function REG_A2: Pointer; assembler; nostackframe;
|
||||||
asm
|
asm
|
||||||
lwz r3,40(r2)
|
lwz r3,40(r2)
|
||||||
|
Loading…
Reference in New Issue
Block a user