|
@@ -196,7 +196,11 @@ TYPE
|
|
|
(* stack garbage collection *)
|
|
|
|
|
|
IF Heaps.GCType= Heaps.HeuristicStackInspectionGC THEN
|
|
|
- #IF WIN64 THEN
|
|
|
+ #IF I386 THEN
|
|
|
+ Heaps.Candidate( state.EDI ); Heaps.Candidate( state.ESI );
|
|
|
+ Heaps.Candidate( state.EBX ); Heaps.Candidate( state.EDX );
|
|
|
+ Heaps.Candidate( state.ECX ); Heaps.Candidate( state.EAX );
|
|
|
+ #ELSIF AMD64 THEN
|
|
|
Heaps.Candidate( state.RDI ); Heaps.Candidate( state.RSI );
|
|
|
Heaps.Candidate( state.RBX ); Heaps.Candidate( state.RDX );
|
|
|
Heaps.Candidate( state.RCX ); Heaps.Candidate( state.RAX );
|
|
@@ -204,10 +208,6 @@ TYPE
|
|
|
Heaps.Candidate( state.R11 ); Heaps.Candidate( state.R12 );
|
|
|
Heaps.Candidate( state.R13 ); Heaps.Candidate( state.R14 );
|
|
|
Heaps.Candidate( state.R15 );
|
|
|
- #ELSIF WIN32 THEN
|
|
|
- Heaps.Candidate( state.EDI ); Heaps.Candidate( state.ESI );
|
|
|
- Heaps.Candidate( state.EBX ); Heaps.Candidate( state.EDX );
|
|
|
- Heaps.Candidate( state.ECX ); Heaps.Candidate( state.EAX );
|
|
|
#ELSE
|
|
|
ASSERT(FALSE);
|
|
|
#END
|
|
@@ -539,7 +539,14 @@ BEGIN
|
|
|
|
|
|
Trace.String( "EXCEPTION " ); Trace.Address(exceptionPointers.exception.ExceptionCode);
|
|
|
Trace.String( " at " ); Trace.Address(exceptionPointers.exception.ExceptionAddress);
|
|
|
- #IF WIN64 THEN
|
|
|
+ #IF I386 THEN
|
|
|
+ Trace.Ln(); Trace.String( "EAX " ); Trace.Hex( exceptionPointers.context.EAX, 1 );
|
|
|
+ Trace.String( " EBX " ); Trace.Hex( exceptionPointers.context.EBX, 1 ); Trace.Ln();
|
|
|
+ Trace.String( "ECX " ); Trace.Hex( exceptionPointers.context.ECX, 1 ); Trace.String( " EDX " );
|
|
|
+ Trace.Hex( exceptionPointers.context.EDX, 1 ); Trace.Ln(); Trace.String( "EDI " );
|
|
|
+ Trace.Hex( exceptionPointers.context.EDI, 1 ); Trace.String( " ESI " );
|
|
|
+ Trace.Hex( exceptionPointers.context.ESI, 1 ); Trace.Ln();
|
|
|
+ #ELSIF AMD64 THEN
|
|
|
Trace.Ln(); Trace.String( "RAX " ); Trace.Address(exceptionPointers.context.RAX);
|
|
|
Trace.String( " RBX " ); Trace.Address(exceptionPointers.context.RBX); Trace.Ln();
|
|
|
Trace.String( "RCX " ); Trace.Address(exceptionPointers.context.RCX); Trace.String( " RDX " );
|
|
@@ -556,13 +563,6 @@ BEGIN
|
|
|
Trace.String( "R14 " ); Trace.Address(exceptionPointers.context.R14);
|
|
|
Trace.String( " R15 " ); Trace.Address(exceptionPointers.context.R15); Trace.Ln();
|
|
|
Trace.Ln;
|
|
|
- #ELSIF WIN32 THEN
|
|
|
- Trace.Ln(); Trace.String( "EAX " ); Trace.Hex( exceptionPointers.context.EAX, 1 );
|
|
|
- Trace.String( " EBX " ); Trace.Hex( exceptionPointers.context.EBX, 1 ); Trace.Ln();
|
|
|
- Trace.String( "ECX " ); Trace.Hex( exceptionPointers.context.ECX, 1 ); Trace.String( " EDX " );
|
|
|
- Trace.Hex( exceptionPointers.context.EDX, 1 ); Trace.Ln(); Trace.String( "EDI " );
|
|
|
- Trace.Hex( exceptionPointers.context.EDI, 1 ); Trace.String( " ESI " );
|
|
|
- Trace.Hex( exceptionPointers.context.ESI, 1 ); Trace.Ln();
|
|
|
#ELSE
|
|
|
-- UNIMPLEMENTED --
|
|
|
#END
|
|
@@ -1274,7 +1274,7 @@ VAR GetProcedureName*: PROCEDURE (pc: ADDRESS; VAR n: ARRAY OF CHAR; VAR spc: AD
|
|
|
PROCEDURE LeaveA2*;
|
|
|
VAR cur: Process; ebp,n: ADDRESS;
|
|
|
BEGIN
|
|
|
- #IF WIN64 THEN
|
|
|
+ #IF AMD64 THEN
|
|
|
CODE
|
|
|
PUSH RCX
|
|
|
PUSH RDX
|
|
@@ -1297,7 +1297,7 @@ BEGIN
|
|
|
IF cur.gcContext.nextPos > 255 THEN cur.gcContext.nextPos := 255 END;
|
|
|
(* IF (cur.gcContext.nextPos > 4) THEN cur.gcContext.nextPos := 2 END;*)
|
|
|
END;
|
|
|
- #IF WIN64 THEN
|
|
|
+ #IF AMD64 THEN
|
|
|
CODE
|
|
|
POP R9
|
|
|
POP R8
|