EFI_STATUS Status;\r
EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL *EbcSimpleDebugger;\r
\r
+ mVmPtr = VmPtr;\r
EbcSimpleDebugger = NULL;\r
Status = EFI_SUCCESS;\r
StackCorrupted = 0;\r
}\r
\r
Done:\r
+ mVmPtr = NULL;\r
return Status;\r
}\r
\r
\r
--*/\r
{\r
- INT64 ResultHigh;\r
-\r
if (*VmPtr->Ip & DATAMANIP_M_64) {\r
- return MulS64x64 (Op1, Op2, &ResultHigh);\r
+ return MultS64x64 ((INT64)Op1, (INT64)Op2);\r
} else {\r
return (UINT64) ((INT64) ((INT32) Op1 * (INT32) Op2));\r
}\r
\r
--*/\r
{\r
- INT64 ResultHigh;\r
if (*VmPtr->Ip & DATAMANIP_M_64) {\r
- return MulU64x64 (Op1, Op2, (UINT64 *)&ResultHigh);\r
+ return MultU64x64 (Op1, Op2);\r
} else {\r
return (UINT64) ((UINT32) Op1 * (UINT32) Op2);\r
}\r
--*/\r
{\r
INT64 Remainder;\r
- UINT32 Error;\r
\r
//\r
// Check for divide-by-0\r
return 0;\r
} else {\r
if (*VmPtr->Ip & DATAMANIP_M_64) {\r
- return (UINT64) (DivS64x64 (Op1, Op2, &Remainder, &Error));\r
+ return (UINT64) (DivS64x64Remainder (Op1, Op2, &Remainder));\r
} else {\r
return (UINT64) ((INT64) ((INT32) Op1 / (INT32) Op2));\r
}\r
--*/\r
{\r
UINT64 Remainder;\r
- UINT32 Error;\r
\r
//\r
// Check for divide-by-0\r
// Get the destination register\r
//\r
if (*VmPtr->Ip & DATAMANIP_M_64) {\r
- return (UINT64) (DivU64x64 (Op1, Op2, &Remainder, &Error));\r
+ return (UINT64) (DivU64x64Remainder ((INT64)Op1, (INT64)Op2, &Remainder));\r
} else {\r
return (UINT64) ((UINT32) Op1 / (UINT32) Op2);\r
}\r
--*/\r
{\r
INT64 Remainder;\r
- UINT32 Error;\r
\r
//\r
// Check for divide-by-0\r
);\r
return 0;\r
} else {\r
- DivS64x64 ((INT64) Op1, (INT64) Op2, &Remainder, &Error);\r
+ DivS64x64Remainder ((INT64)Op1, (INT64)Op2, &Remainder);\r
return Remainder;\r
}\r
}\r
--*/\r
{\r
UINT64 Remainder;\r
- UINT32 Error;\r
\r
//\r
// Check for divide-by-0\r
);\r
return 0;\r
} else {\r
- DivU64x64 (Op1, Op2, &Remainder, &Error);\r
+ DivU64x64Remainder (Op1, Op2, &Remainder);\r
return Remainder;\r
}\r
}\r
--*/\r
{\r
if (*VmPtr->Ip & DATAMANIP_M_64) {\r
- return LeftShiftU64 (Op1, Op2);\r
+ return LShiftU64 (Op1, (UINTN)Op2);\r
} else {\r
return (UINT64) ((UINT32) ((UINT32) Op1 << (UINT32) Op2));\r
}\r
--*/\r
{\r
if (*VmPtr->Ip & DATAMANIP_M_64) {\r
- return RightShiftU64 (Op1, Op2);\r
+ return RShiftU64 (Op1, (UINTN)Op2);\r
} else {\r
return (UINT64) ((UINT32) Op1 >> (UINT32) Op2);\r
}\r
--*/\r
{\r
if (*VmPtr->Ip & DATAMANIP_M_64) {\r
- return ARightShift64 (Op1, Op2);\r
+ return ARShiftU64 (Op1, (UINTN)Op2);\r
} else {\r
return (UINT64) ((INT64) ((INT32) Op1 >> (UINT32) Op2));\r
}\r
--*/\r
{\r
UINT64 Index;\r
- UINT64 Remainder;\r
INT64 Offset;\r
INT64 C;\r
INT64 N;\r
//\r
// Get the mask for N. First get the number of bits from the index.\r
//\r
- NBits = RightShiftU64 ((Index & 0x7000000000000000ULL), 60);\r
+ NBits = RShiftU64 ((Index & 0x7000000000000000ULL), 60);\r
\r
//\r
// Scale it for 64-bit indexes (multiply by 8 by shifting left 3)\r
//\r
- NBits = LeftShiftU64 (NBits, 3);\r
+ NBits = LShiftU64 ((UINT64)NBits, 3);\r
\r
//\r
// Now using the number of bits, create a mask.\r
//\r
- Mask = (LeftShiftU64 ((UINT64)~0, (UINT64) NBits));\r
+ Mask = (LShiftU64 ((UINT64)~0, (UINTN)NBits));\r
\r
//\r
// Now using the mask, extract N from the lower bits of the index.\r
//\r
// Now compute C\r
//\r
- C = ARightShift64 (((Index &~0xF000000000000000ULL) & Mask), (UINTN) NBits);\r
+ C = ARShiftU64 (((Index &~0xF000000000000000ULL) & Mask), (UINTN)NBits);\r
\r
- Offset = MulU64x64 (N, sizeof (UINTN), &Remainder) + C;\r
+ Offset = MultU64x64 (N, sizeof (UINTN)) + C;\r
\r
//\r
// Now set the sign\r
//\r
if (Index & 0x8000000000000000ULL) {\r
- Offset = MulS64x64 (Offset, -1, (INT64 *)&Index);\r
+ Offset = MultS64x64 (Offset, -1);\r
}\r
\r
return Offset;\r