Lines Matching refs:VmPtr

34   EFI_STATUS (*ExecuteFunction) (IN VM_CONTEXT * VmPtr);
41 IN VM_CONTEXT * VmPtr,
70 IN VM_CONTEXT *VmPtr,
86 IN VM_CONTEXT *VmPtr,
102 IN VM_CONTEXT *VmPtr,
117 IN VM_CONTEXT *VmPtr,
132 IN VM_CONTEXT *VmPtr,
147 IN VM_CONTEXT *VmPtr,
162 IN VM_CONTEXT *VmPtr,
177 IN VM_CONTEXT *VmPtr,
206 IN VM_CONTEXT *VmPtr,
236 IN VM_CONTEXT *VmPtr,
266 IN VM_CONTEXT *VmPtr,
285 IN VM_CONTEXT *VmPtr,
303 IN VM_CONTEXT *VmPtr,
321 IN VM_CONTEXT *VmPtr,
341 IN VM_CONTEXT *VmPtr,
361 IN VM_CONTEXT *VmPtr,
381 IN VM_CONTEXT *VmPtr,
401 IN VM_CONTEXT *VmPtr,
426 IN VM_CONTEXT *VmPtr,
450 IN VM_CONTEXT *VmPtr,
467 IN VM_CONTEXT *VmPtr
497 IN VM_CONTEXT *VmPtr
513 IN VM_CONTEXT *VmPtr
534 IN VM_CONTEXT *VmPtr
550 IN VM_CONTEXT *VmPtr
567 IN VM_CONTEXT *VmPtr
584 IN VM_CONTEXT *VmPtr
610 IN VM_CONTEXT *VmPtr
636 IN VM_CONTEXT *VmPtr
655 IN VM_CONTEXT *VmPtr
674 IN VM_CONTEXT *VmPtr
690 IN VM_CONTEXT *VmPtr
706 IN VM_CONTEXT *VmPtr
722 IN VM_CONTEXT *VmPtr
738 IN VM_CONTEXT *VmPtr
760 IN VM_CONTEXT *VmPtr
782 IN VM_CONTEXT *VmPtr
799 IN VM_CONTEXT *VmPtr
816 IN VM_CONTEXT *VmPtr
840 IN VM_CONTEXT *VmPtr
864 IN VM_CONTEXT *VmPtr
885 IN VM_CONTEXT *VmPtr,
905 IN VM_CONTEXT *VmPtr,
925 IN VM_CONTEXT *VmPtr,
945 IN VM_CONTEXT *VmPtr,
965 IN VM_CONTEXT *VmPtr,
985 IN VM_CONTEXT *VmPtr,
1005 IN VM_CONTEXT *VmPtr,
1025 IN VM_CONTEXT *VmPtr,
1045 IN VM_CONTEXT *VmPtr,
1065 IN VM_CONTEXT *VmPtr,
1085 IN VM_CONTEXT *VmPtr,
1105 IN VM_CONTEXT *VmPtr,
1125 IN VM_CONTEXT *VmPtr,
1145 IN VM_CONTEXT *VmPtr,
1165 IN VM_CONTEXT *VmPtr,
1185 IN VM_CONTEXT *VmPtr,
1205 IN VM_CONTEXT *VmPtr,
1225 IN VM_CONTEXT *VmPtr,
1245 IN VM_CONTEXT *VmPtr,
1366 IN VM_CONTEXT *VmPtr, in EbcExecuteInstructions() argument
1392 ExecFunc = (UINTN) mVmOpcodeTable[(*VmPtr->Ip & OPCODE_M_OPCODE)].ExecuteFunction; in EbcExecuteInstructions()
1394 EbcDebugSignalException (EXCEPT_EBC_INVALID_OPCODE, EXCEPTION_FLAG_FATAL, VmPtr); in EbcExecuteInstructions()
1397 mVmOpcodeTable[(*VmPtr->Ip & OPCODE_M_OPCODE)].ExecuteFunction (VmPtr); in EbcExecuteInstructions()
1424 IN VM_CONTEXT *VmPtr in EbcExecute() argument
1432 mVmPtr = VmPtr; in EbcExecute()
1440 if (*VmPtr->StackMagicPtr != (UINTN) VM_STACK_KEY_VALUE) { in EbcExecute()
1444 VmPtr->FramePtr = (VOID *) ((UINT8 *) (UINTN) VmPtr->Gpr[0] + 8); in EbcExecute()
1465 VmPtr->EntryPoint = (VOID *) VmPtr->Ip; in EbcExecute()
1471 VmPtr->StopFlags = 0; in EbcExecute()
1472 while ((VmPtr->StopFlags & STOPFLAG_APP_DONE) == 0) { in EbcExecute()
1478 EbcSimpleDebugger->Debugger (EbcSimpleDebugger, VmPtr); in EbcExecute()
1486 ExecFunc = (UINTN) mVmOpcodeTable[(*VmPtr->Ip & OPCODE_M_OPCODE)].ExecuteFunction; in EbcExecute()
1488 EbcDebugSignalException (EXCEPT_EBC_INVALID_OPCODE, EXCEPTION_FLAG_FATAL, VmPtr); in EbcExecute()
1493 EbcDebuggerHookExecuteStart (VmPtr); in EbcExecute()
1501 mVmOpcodeTable[(*VmPtr->Ip & OPCODE_M_OPCODE)].ExecuteFunction (VmPtr); in EbcExecute()
1505 EbcDebuggerHookExecuteEnd (VmPtr); in EbcExecute()
1511 if (VMFLAG_ISSET (VmPtr, VMFLAGS_STEP)) { in EbcExecute()
1512 EbcDebugSignalException (EXCEPT_EBC_STEP, EXCEPTION_FLAG_NONE, VmPtr); in EbcExecute()
1517 if ((StackCorrupted == 0) && (*VmPtr->StackMagicPtr != (UINTN) VM_STACK_KEY_VALUE)) { in EbcExecute()
1518 EbcDebugSignalException (EXCEPT_EBC_STACK_FAULT, EXCEPTION_FLAG_FATAL, VmPtr); in EbcExecute()
1521 if ((StackCorrupted == 0) && ((UINT64)VmPtr->Gpr[0] <= (UINT64)(UINTN) VmPtr->StackTop)) { in EbcExecute()
1522 EbcDebugSignalException (EXCEPT_EBC_STACK_FAULT, EXCEPTION_FLAG_FATAL, VmPtr); in EbcExecute()
1557 IN VM_CONTEXT *VmPtr in ExecuteMOVxx() argument
1573 Opcode = GETOPCODE (VmPtr); in ExecuteMOVxx()
1579 Operands = GETOPERANDS (VmPtr); in ExecuteMOVxx()
1603 Index16 = VmReadIndex16 (VmPtr, 2); in ExecuteMOVxx()
1609 Index16 = VmReadIndex16 (VmPtr, Size); in ExecuteMOVxx()
1618 Index32 = VmReadIndex32 (VmPtr, 2); in ExecuteMOVxx()
1624 Index32 = VmReadIndex32 (VmPtr, Size); in ExecuteMOVxx()
1633 Index64Op1 = VmReadIndex64 (VmPtr, 2); in ExecuteMOVxx()
1638 Index64Op2 = VmReadIndex64 (VmPtr, Size); in ExecuteMOVxx()
1648 VmPtr in ExecuteMOVxx()
1676 EbcDebugSignalException (EXCEPT_EBC_UNDEFINED, EXCEPTION_FLAG_FATAL, VmPtr); in ExecuteMOVxx()
1686 Source = (UINTN) (VmPtr->Gpr[OPERAND2_REGNUM (Operands)] + Index64Op2); in ExecuteMOVxx()
1693 Data64 = (UINT64) (UINT8) VmReadMem8 (VmPtr, Source); in ExecuteMOVxx()
1697 Data64 = (UINT64) (UINT16) VmReadMem16 (VmPtr, Source); in ExecuteMOVxx()
1701 Data64 = (UINT64) (UINT32) VmReadMem32 (VmPtr, Source); in ExecuteMOVxx()
1705 Data64 = (UINT64) VmReadMem64 (VmPtr, Source); in ExecuteMOVxx()
1709 Data64 = (UINT64) (UINTN) VmReadMemN (VmPtr, Source); in ExecuteMOVxx()
1722 Data64 = (UINT64) (VmPtr->Gpr[OPERAND2_REGNUM (Operands)] + Index64Op2); in ExecuteMOVxx()
1747 Data64 = (UINT64) ConvertStackAddr (VmPtr, (UINTN) (INT64) Data64); in ExecuteMOVxx()
1758 Source = (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index64Op1); in ExecuteMOVxx()
1764 VmWriteMem8 (VmPtr, Source, (UINT8) Data64); in ExecuteMOVxx()
1768 VmWriteMem16 (VmPtr, Source, (UINT16) Data64); in ExecuteMOVxx()
1772 VmWriteMem32 (VmPtr, Source, (UINT32) Data64); in ExecuteMOVxx()
1776 VmWriteMem64 (VmPtr, Source, Data64); in ExecuteMOVxx()
1780 VmWriteMemN (VmPtr, Source, (UINTN) Data64); in ExecuteMOVxx()
1798 VmPtr in ExecuteMOVxx()
1806 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = Data64 & DataMask; in ExecuteMOVxx()
1811 VmPtr->Ip += Size; in ExecuteMOVxx()
1826 IN VM_CONTEXT *VmPtr in ExecuteBREAK() argument
1837 Operands = GETOPERANDS (VmPtr); in ExecuteBREAK()
1843 EbcDebugSignalException (EXCEPT_EBC_BAD_BREAK, EXCEPTION_FLAG_FATAL, VmPtr); in ExecuteBREAK()
1856 VmPtr->Gpr[7] = GetVmVersion (); in ExecuteBREAK()
1863 VmPtr->StopFlags |= STOPFLAG_BREAKPOINT; in ExecuteBREAK()
1870 VmPtr in ExecuteBREAK()
1886 Offset = (INT32) VmReadMem32 (VmPtr, (UINTN) VmPtr->Gpr[7]); in ExecuteBREAK()
1887 U64EbcEntryPoint = (UINT64) (VmPtr->Gpr[7] + Offset + 4); in ExecuteBREAK()
1893 Status = EbcCreateThunks (VmPtr->ImageHandle, EbcEntryPoint, &Thunk, 0); in ExecuteBREAK()
1901 VmWriteMem64 (VmPtr, (UINTN) VmPtr->Gpr[7], (UINT64) (UINTN) Thunk); in ExecuteBREAK()
1908 VmPtr->CompilerVersion = (UINT32) VmPtr->Gpr[7]; in ExecuteBREAK()
1918 EbcDebugSignalException (EXCEPT_EBC_BAD_BREAK, EXCEPTION_FLAG_FATAL, VmPtr); in ExecuteBREAK()
1924 VmPtr->Ip += 2; in ExecuteBREAK()
1956 IN VM_CONTEXT *VmPtr in ExecuteJMP() argument
1968 Operand = GETOPERANDS (VmPtr); in ExecuteJMP()
1969 Opcode = GETOPCODE (VmPtr); in ExecuteJMP()
1982 ConditionFlag = (UINT8) VMFLAG_ISSET (VmPtr, VMFLAGS_CC); in ExecuteJMP()
1985 EbcDebuggerHookJMPStart (VmPtr); in ExecuteJMP()
1986 VmPtr->Ip += Size; in ExecuteJMP()
1987 EbcDebuggerHookJMPEnd (VmPtr); in ExecuteJMP()
2004 VmPtr in ExecuteJMP()
2012 Data64 = (UINT64) VmReadImmed64 (VmPtr, 2); in ExecuteJMP()
2017 VmPtr in ExecuteJMP()
2026 EbcDebuggerHookJMPStart (VmPtr); in ExecuteJMP()
2028 VmPtr->Ip += (UINTN) Data64 + Size; in ExecuteJMP()
2030 VmPtr->Ip = (VMIP) (UINTN) Data64; in ExecuteJMP()
2032 EbcDebuggerHookJMPEnd (VmPtr); in ExecuteJMP()
2045 Index32 = VmReadIndex32 (VmPtr, 2); in ExecuteJMP()
2047 Index32 = VmReadImmed32 (VmPtr, 2); in ExecuteJMP()
2058 Data64 = (UINT64) OPERAND1_REGDATA (VmPtr, Operand); in ExecuteJMP()
2067 Addr = VmReadMemN (VmPtr, (UINTN) Data64 + Index32); in ExecuteJMP()
2072 VmPtr in ExecuteJMP()
2078 EbcDebuggerHookJMPStart (VmPtr); in ExecuteJMP()
2080 VmPtr->Ip += (UINTN) Addr + Size; in ExecuteJMP()
2082 VmPtr->Ip = (VMIP) Addr; in ExecuteJMP()
2084 EbcDebuggerHookJMPEnd (VmPtr); in ExecuteJMP()
2095 VmPtr in ExecuteJMP()
2101 EbcDebuggerHookJMPStart (VmPtr); in ExecuteJMP()
2103 VmPtr->Ip += (UINTN) Addr + Size; in ExecuteJMP()
2105 VmPtr->Ip = (VMIP) Addr; in ExecuteJMP()
2107 EbcDebuggerHookJMPEnd (VmPtr); in ExecuteJMP()
2128 IN VM_CONTEXT *VmPtr in ExecuteJMP8() argument
2139 Opcode = GETOPCODE (VmPtr); in ExecuteJMP8()
2141 ConditionFlag = (UINT8) VMFLAG_ISSET (VmPtr, VMFLAGS_CC); in ExecuteJMP8()
2148 EbcDebuggerHookJMP8Start (VmPtr); in ExecuteJMP8()
2149 VmPtr->Ip += 2; in ExecuteJMP8()
2150 EbcDebuggerHookJMP8End (VmPtr); in ExecuteJMP8()
2158 Offset = VmReadImmed8 (VmPtr, 1); in ExecuteJMP8()
2162 EbcDebuggerHookJMP8Start (VmPtr); in ExecuteJMP8()
2163 VmPtr->Ip += (Offset * 2) + 2; in ExecuteJMP8()
2164 EbcDebuggerHookJMP8End (VmPtr); in ExecuteJMP8()
2192 IN VM_CONTEXT *VmPtr in ExecuteMOVI() argument
2206 Opcode = GETOPCODE (VmPtr); in ExecuteMOVI()
2207 Operands = GETOPERANDS (VmPtr); in ExecuteMOVI()
2213 Index16 = VmReadIndex16 (VmPtr, 2); in ExecuteMOVI()
2223 ImmData64 = (INT64) (INT16) VmReadImmed16 (VmPtr, Size); in ExecuteMOVI()
2226 ImmData64 = (INT64) (INT32) VmReadImmed32 (VmPtr, Size); in ExecuteMOVI()
2229 ImmData64 = (INT64) VmReadImmed64 (VmPtr, Size); in ExecuteMOVI()
2238 VmPtr in ExecuteMOVI()
2253 VmPtr in ExecuteMOVI()
2270 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = ImmData64 & Mask64; in ExecuteMOVI()
2275 Op1 = (UINT64) VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16; in ExecuteMOVI()
2277 VmWriteMem8 (VmPtr, (UINTN) Op1, (UINT8) ImmData64); in ExecuteMOVI()
2279 VmWriteMem16 (VmPtr, (UINTN) Op1, (UINT16) ImmData64); in ExecuteMOVI()
2281 VmWriteMem32 (VmPtr, (UINTN) Op1, (UINT32) ImmData64); in ExecuteMOVI()
2283 VmWriteMem64 (VmPtr, (UINTN) Op1, (UINT64) ImmData64); in ExecuteMOVI()
2289 VmPtr->Ip += Size; in ExecuteMOVI()
2310 IN VM_CONTEXT *VmPtr in ExecuteMOVIn() argument
2325 Opcode = GETOPCODE (VmPtr); in ExecuteMOVIn()
2326 Operands = GETOPERANDS (VmPtr); in ExecuteMOVIn()
2332 Index16 = VmReadIndex16 (VmPtr, 2); in ExecuteMOVIn()
2342 ImmedIndex16 = VmReadIndex16 (VmPtr, Size); in ExecuteMOVIn()
2346 ImmedIndex32 = VmReadIndex32 (VmPtr, Size); in ExecuteMOVIn()
2350 ImmedIndex64 = VmReadIndex64 (VmPtr, Size); in ExecuteMOVIn()
2359 VmPtr in ExecuteMOVIn()
2375 VmPtr in ExecuteMOVIn()
2380 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = ImmedIndex64; in ExecuteMOVIn()
2385 Op1 = (UINT64) VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16; in ExecuteMOVIn()
2386 VmWriteMemN (VmPtr, (UINTN) Op1, (UINTN)(INTN) ImmedIndex64); in ExecuteMOVIn()
2391 VmPtr->Ip += Size; in ExecuteMOVIn()
2412 IN VM_CONTEXT *VmPtr in ExecuteMOVREL() argument
2426 Opcode = GETOPCODE (VmPtr); in ExecuteMOVREL()
2427 Operands = GETOPERANDS (VmPtr); in ExecuteMOVREL()
2433 Index16 = VmReadIndex16 (VmPtr, 2); in ExecuteMOVREL()
2443 ImmData64 = (INT64) VmReadImmed16 (VmPtr, Size); in ExecuteMOVREL()
2446 ImmData64 = (INT64) VmReadImmed32 (VmPtr, Size); in ExecuteMOVREL()
2449 ImmData64 = VmReadImmed64 (VmPtr, Size); in ExecuteMOVREL()
2458 VmPtr in ExecuteMOVREL()
2465 Op2 = (UINT64) ((INT64) ((UINT64) (UINTN) VmPtr->Ip) + (INT64) ImmData64 + Size); in ExecuteMOVREL()
2474 VmPtr in ExecuteMOVREL()
2479 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = (VM_REGISTER) Op2; in ExecuteMOVREL()
2486 Op1 = (UINT64) VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16; in ExecuteMOVREL()
2487 VmWriteMemN (VmPtr, (UINTN) Op1, (UINTN) Op2); in ExecuteMOVREL()
2492 VmPtr->Ip += Size; in ExecuteMOVREL()
2518 IN VM_CONTEXT *VmPtr in ExecuteMOVsnw() argument
2531 Opcode = GETOPCODE (VmPtr); in ExecuteMOVsnw()
2532 Operands = GETOPERANDS (VmPtr); in ExecuteMOVsnw()
2542 Op1Index = VmReadIndex16 (VmPtr, 2); in ExecuteMOVsnw()
2550 VmPtr in ExecuteMOVsnw()
2560 Op2Index = VmReadIndex16 (VmPtr, Size); in ExecuteMOVsnw()
2562 Op2Index = VmReadImmed16 (VmPtr, Size); in ExecuteMOVsnw()
2570 Op2 = (UINT64)(INT64)(INTN)(VmPtr->Gpr[OPERAND2_REGNUM (Operands)] + Op2Index); in ExecuteMOVsnw()
2572 Op2 = (UINT64)(INT64)(INTN)VmReadMemN (VmPtr, (UINTN) Op2); in ExecuteMOVsnw()
2578 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = Op2; in ExecuteMOVsnw()
2580 VmWriteMemN (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Op1Index), (UINTN) Op2); in ExecuteMOVsnw()
2585 VmPtr->Ip += Size; in ExecuteMOVsnw()
2611 IN VM_CONTEXT *VmPtr in ExecuteMOVsnd() argument
2624 Opcode = GETOPCODE (VmPtr); in ExecuteMOVsnd()
2625 Operands = GETOPERANDS (VmPtr); in ExecuteMOVsnd()
2635 Op1Index = VmReadIndex32 (VmPtr, 2); in ExecuteMOVsnd()
2643 VmPtr in ExecuteMOVsnd()
2653 Op2Index = VmReadIndex32 (VmPtr, Size); in ExecuteMOVsnd()
2655 Op2Index = VmReadImmed32 (VmPtr, Size); in ExecuteMOVsnd()
2663 Op2 = (UINT64)(INT64)(INTN)(INT64)(VmPtr->Gpr[OPERAND2_REGNUM (Operands)] + Op2Index); in ExecuteMOVsnd()
2665 Op2 = (UINT64)(INT64)(INTN)(INT64)VmReadMemN (VmPtr, (UINTN) Op2); in ExecuteMOVsnd()
2671 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = Op2; in ExecuteMOVsnd()
2673 VmWriteMemN (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Op1Index), (UINTN) Op2); in ExecuteMOVsnd()
2678 VmPtr->Ip += Size; in ExecuteMOVsnd()
2696 IN VM_CONTEXT *VmPtr in ExecutePUSHn() argument
2707 Opcode = GETOPCODE (VmPtr); in ExecutePUSHn()
2708 Operands = GETOPERANDS (VmPtr); in ExecutePUSHn()
2715 Index16 = VmReadIndex16 (VmPtr, 2); in ExecutePUSHn()
2717 Index16 = VmReadImmed16 (VmPtr, 2); in ExecutePUSHn()
2720 VmPtr->Ip += 4; in ExecutePUSHn()
2723 VmPtr->Ip += 2; in ExecutePUSHn()
2729 DataN = VmReadMemN (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16)); in ExecutePUSHn()
2731 DataN = (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16); in ExecutePUSHn()
2736 VmPtr->Gpr[0] -= sizeof (UINTN); in ExecutePUSHn()
2737 VmWriteMemN (VmPtr, (UINTN) VmPtr->Gpr[0], DataN); in ExecutePUSHn()
2755 IN VM_CONTEXT *VmPtr in ExecutePUSH() argument
2767 Opcode = GETOPCODE (VmPtr); in ExecutePUSH()
2768 Operands = GETOPERANDS (VmPtr); in ExecutePUSH()
2774 Index16 = VmReadIndex16 (VmPtr, 2); in ExecutePUSH()
2776 Index16 = VmReadImmed16 (VmPtr, 2); in ExecutePUSH()
2779 VmPtr->Ip += 4; in ExecutePUSH()
2782 VmPtr->Ip += 2; in ExecutePUSH()
2789 Data64 = VmReadMem64 (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16)); in ExecutePUSH()
2791 Data64 = (UINT64) VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16; in ExecutePUSH()
2796 VmPtr->Gpr[0] -= sizeof (UINT64); in ExecutePUSH()
2797 VmWriteMem64 (VmPtr, (UINTN) VmPtr->Gpr[0], Data64); in ExecutePUSH()
2803 Data32 = VmReadMem32 (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16)); in ExecutePUSH()
2805 Data32 = (UINT32) VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16; in ExecutePUSH()
2810 VmPtr->Gpr[0] -= sizeof (UINT32); in ExecutePUSH()
2811 VmWriteMem32 (VmPtr, (UINTN) VmPtr->Gpr[0], Data32); in ExecutePUSH()
2831 IN VM_CONTEXT *VmPtr in ExecutePOPn() argument
2842 Opcode = GETOPCODE (VmPtr); in ExecutePOPn()
2843 Operands = GETOPERANDS (VmPtr); in ExecutePOPn()
2849 Index16 = VmReadIndex16 (VmPtr, 2); in ExecutePOPn()
2851 Index16 = VmReadImmed16 (VmPtr, 2); in ExecutePOPn()
2854 VmPtr->Ip += 4; in ExecutePOPn()
2857 VmPtr->Ip += 2; in ExecutePOPn()
2862 DataN = VmReadMemN (VmPtr, (UINTN) VmPtr->Gpr[0]); in ExecutePOPn()
2863 VmPtr->Gpr[0] += sizeof (UINTN); in ExecutePOPn()
2868 VmWriteMemN (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16), DataN); in ExecutePOPn()
2870 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = (INT64) (UINT64) ((UINTN) DataN + Index16); in ExecutePOPn()
2890 IN VM_CONTEXT *VmPtr in ExecutePOP() argument
2902 Opcode = GETOPCODE (VmPtr); in ExecutePOP()
2903 Operands = GETOPERANDS (VmPtr); in ExecutePOP()
2909 Index16 = VmReadIndex16 (VmPtr, 2); in ExecutePOP()
2911 Index16 = VmReadImmed16 (VmPtr, 2); in ExecutePOP()
2914 VmPtr->Ip += 4; in ExecutePOP()
2917 VmPtr->Ip += 2; in ExecutePOP()
2926 Data64 = VmReadMem64 (VmPtr, (UINTN) VmPtr->Gpr[0]); in ExecutePOP()
2927 VmPtr->Gpr[0] += sizeof (UINT64); in ExecutePOP()
2932 VmWriteMem64 (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16), Data64); in ExecutePOP()
2934 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = Data64 + Index16; in ExecutePOP()
2940 Data32 = (INT32) VmReadMem32 (VmPtr, (UINTN) VmPtr->Gpr[0]); in ExecutePOP()
2941 VmPtr->Gpr[0] += sizeof (UINT32); in ExecutePOP()
2946 VmWriteMem32 (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND1_REGNUM (Operands)] + Index16), Data32); in ExecutePOP()
2948 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = (INT64) Data32 + Index16; in ExecutePOP()
2974 IN VM_CONTEXT *VmPtr in ExecuteCALL() argument
2987 Opcode = GETOPCODE (VmPtr); in ExecuteCALL()
2988 Operands = GETOPERANDS (VmPtr); in ExecuteCALL()
2991 EbcDebuggerHookCALLEXStart (VmPtr); in ExecuteCALL()
2993 EbcDebuggerHookCALLStart (VmPtr); in ExecuteCALL()
3002 FramePtr = VmPtr->FramePtr; in ExecuteCALL()
3008 Immed64 = VmReadImmed64 (VmPtr, 2); in ExecuteCALL()
3015 Immed32 = VmReadIndex32 (VmPtr, 2); in ExecuteCALL()
3017 Immed32 = VmReadImmed32 (VmPtr, 2); in ExecuteCALL()
3030 VmPtr->Gpr[0] -= 8; in ExecuteCALL()
3031 VmWriteMemN (VmPtr, (UINTN) VmPtr->Gpr[0], (UINTN) FramePtr); in ExecuteCALL()
3032 VmPtr->FramePtr = (VOID *) (UINTN) VmPtr->Gpr[0]; in ExecuteCALL()
3033 VmPtr->Gpr[0] -= 8; in ExecuteCALL()
3034 VmWriteMem64 (VmPtr, (UINTN) VmPtr->Gpr[0], (UINT64) (UINTN) (VmPtr->Ip + Size)); in ExecuteCALL()
3044 VmPtr->Ip = (VMIP) (UINTN) Immed64; in ExecuteCALL()
3049 EbcLLCALLEX (VmPtr, (UINTN) Immed64, (UINTN) VmPtr->Gpr[0], FramePtr, Size); in ExecuteCALL()
3058 Immed64 = (UINT64) (UINTN) VmPtr->Gpr[OPERAND1_REGNUM (Operands)]; in ExecuteCALL()
3064 Immed64 = (INT64) (UINT64) (UINTN) VmReadMemN (VmPtr, (UINTN) (Immed64 + Immed32)); in ExecuteCALL()
3077 VmPtr->Ip += Immed64 + Size; in ExecuteCALL()
3079 VmPtr->Ip = (VMIP) (UINTN) Immed64; in ExecuteCALL()
3086 … EbcLLCALLEX (VmPtr, (UINTN) (Immed64 + VmPtr->Ip + Size), (UINTN) VmPtr->Gpr[0], FramePtr, Size); in ExecuteCALL()
3088 if ((VmPtr->StopFlags & STOPFLAG_BREAK_ON_CALLEX) != 0) { in ExecuteCALL()
3092 EbcLLCALLEX (VmPtr, (UINTN) Immed64, (UINTN) VmPtr->Gpr[0], FramePtr, Size); in ExecuteCALL()
3098 EbcDebuggerHookCALLEXEnd (VmPtr); in ExecuteCALL()
3100 EbcDebuggerHookCALLEnd (VmPtr); in ExecuteCALL()
3120 IN VM_CONTEXT *VmPtr in ExecuteRET() argument
3124 EbcDebuggerHookRETStart (VmPtr); in ExecuteRET()
3130 if (VmPtr->StackRetAddr == (UINT64) VmPtr->Gpr[0]) { in ExecuteRET()
3131 VmPtr->StopFlags |= STOPFLAG_APP_DONE; in ExecuteRET()
3137 if (!IS_ALIGNED ((UINTN) VmPtr->Gpr[0], sizeof (UINT16))) { in ExecuteRET()
3141 VmPtr in ExecuteRET()
3147 VmPtr->Ip = (VMIP) (UINTN) VmReadMem64 (VmPtr, (UINTN) VmPtr->Gpr[0]); in ExecuteRET()
3148 VmPtr->Gpr[0] += 8; in ExecuteRET()
3149 VmPtr->FramePtr = (VOID *) VmReadMemN (VmPtr, (UINTN) VmPtr->Gpr[0]); in ExecuteRET()
3150 VmPtr->Gpr[0] += 8; in ExecuteRET()
3154 EbcDebuggerHookRETEnd (VmPtr); in ExecuteRET()
3174 IN VM_CONTEXT *VmPtr in ExecuteCMP() argument
3188 Opcode = GETOPCODE (VmPtr); in ExecuteCMP()
3189 Operands = GETOPERANDS (VmPtr); in ExecuteCMP()
3193 Op1 = VmPtr->Gpr[OPERAND1_REGNUM (Operands)]; in ExecuteCMP()
3199 Index16 = VmReadIndex16 (VmPtr, 2); in ExecuteCMP()
3201 Index16 = VmReadImmed16 (VmPtr, 2); in ExecuteCMP()
3214 Op2 = (INT64) VmReadMem64 (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND2_REGNUM (Operands)] + Index16)); in ExecuteCMP()
3219 …Op2 = (INT64) (UINT64) ((UINT32) VmReadMem32 (VmPtr, (UINTN) (VmPtr->Gpr[OPERAND2_REGNUM (Operands… in ExecuteCMP()
3222 Op2 = VmPtr->Gpr[OPERAND2_REGNUM (Operands)] + Index16; in ExecuteCMP()
3309 VMFLAG_SET (VmPtr, VMFLAGS_CC); in ExecuteCMP()
3311 VMFLAG_CLEAR (VmPtr, (UINT64)VMFLAGS_CC); in ExecuteCMP()
3316 VmPtr->Ip += Size; in ExecuteCMP()
3335 IN VM_CONTEXT *VmPtr in ExecuteCMPI() argument
3349 Opcode = GETOPCODE (VmPtr); in ExecuteCMPI()
3350 Operands = GETOPERANDS (VmPtr); in ExecuteCMPI()
3357 Index16 = VmReadIndex16 (VmPtr, 2); in ExecuteCMPI()
3365 Op1 = (INT64) VmPtr->Gpr[OPERAND1_REGNUM (Operands)]; in ExecuteCMPI()
3371 Op1 = (INT64) VmReadMem64 (VmPtr, (UINTN) Op1 + Index16); in ExecuteCMPI()
3373 Op1 = (INT64) VmReadMem32 (VmPtr, (UINTN) Op1 + Index16); in ExecuteCMPI()
3384 VmPtr in ExecuteCMPI()
3386 VmPtr->Ip += Size; in ExecuteCMPI()
3394 Op2 = (INT64) VmReadImmed32 (VmPtr, Size); in ExecuteCMPI()
3400 Op2 = (INT64) ((INT16) VmReadImmed16 (VmPtr, Size)); in ExecuteCMPI()
3488 VMFLAG_SET (VmPtr, VMFLAGS_CC); in ExecuteCMPI()
3490 VMFLAG_CLEAR (VmPtr, (UINT64)VMFLAGS_CC); in ExecuteCMPI()
3495 VmPtr->Ip += Size; in ExecuteCMPI()
3515 IN VM_CONTEXT *VmPtr, in ExecuteNOT() argument
3539 IN VM_CONTEXT *VmPtr, in ExecuteNEG() argument
3563 IN VM_CONTEXT *VmPtr, in ExecuteADD() argument
3587 IN VM_CONTEXT *VmPtr, in ExecuteSUB() argument
3592 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteSUB()
3615 IN VM_CONTEXT *VmPtr, in ExecuteMUL() argument
3620 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteMUL()
3643 IN VM_CONTEXT *VmPtr, in ExecuteMULU() argument
3648 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteMULU()
3671 IN VM_CONTEXT *VmPtr, in ExecuteDIV() argument
3685 VmPtr in ExecuteDIV()
3690 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteDIV()
3714 IN VM_CONTEXT *VmPtr, in ExecuteDIVU() argument
3728 VmPtr in ExecuteDIVU()
3735 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteDIVU()
3759 IN VM_CONTEXT *VmPtr, in ExecuteMOD() argument
3773 VmPtr in ExecuteMOD()
3798 IN VM_CONTEXT *VmPtr, in ExecuteMODU() argument
3812 VmPtr in ExecuteMODU()
3837 IN VM_CONTEXT *VmPtr, in ExecuteAND() argument
3861 IN VM_CONTEXT *VmPtr, in ExecuteOR() argument
3885 IN VM_CONTEXT *VmPtr, in ExecuteXOR() argument
3909 IN VM_CONTEXT *VmPtr, in ExecuteSHL() argument
3914 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteSHL()
3937 IN VM_CONTEXT *VmPtr, in ExecuteSHR() argument
3942 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteSHR()
3965 IN VM_CONTEXT *VmPtr, in ExecuteASHR() argument
3970 if ((*VmPtr->Ip & DATAMANIP_M_64) != 0) { in ExecuteASHR()
3993 IN VM_CONTEXT *VmPtr, in ExecuteEXTNDB() argument
4026 IN VM_CONTEXT *VmPtr, in ExecuteEXTNDW() argument
4066 IN VM_CONTEXT *VmPtr, in ExecuteEXTNDD() argument
4103 IN VM_CONTEXT *VmPtr in ExecuteSignedDataManip() argument
4110 return ExecuteDataManip (VmPtr, TRUE); in ExecuteSignedDataManip()
4133 IN VM_CONTEXT *VmPtr in ExecuteUnsignedDataManip() argument
4140 return ExecuteDataManip (VmPtr, FALSE); in ExecuteUnsignedDataManip()
4164 IN VM_CONTEXT *VmPtr, in ExecuteDataManip() argument
4179 Opcode = GETOPCODE (VmPtr); in ExecuteDataManip()
4180 Operands = GETOPERANDS (VmPtr); in ExecuteDataManip()
4190 Index16 = VmReadIndex16 (VmPtr, 2); in ExecuteDataManip()
4192 Index16 = VmReadImmed16 (VmPtr, 2); in ExecuteDataManip()
4203 Op2 = (UINT64) VmPtr->Gpr[OPERAND2_REGNUM (Operands)] + Index16; in ExecuteDataManip()
4209 Op2 = VmReadMem64 (VmPtr, (UINTN) Op2); in ExecuteDataManip()
4215 Op2 = (UINT64) (INT64) ((INT32) VmReadMem32 (VmPtr, (UINTN) Op2)); in ExecuteDataManip()
4217 Op2 = (UINT64) VmReadMem32 (VmPtr, (UINTN) Op2); in ExecuteDataManip()
4233 Op1 = (UINT64) VmPtr->Gpr[OPERAND1_REGNUM (Operands)]; in ExecuteDataManip()
4236 Op1 = VmReadMem64 (VmPtr, (UINTN) Op1); in ExecuteDataManip()
4239 Op1 = (UINT64) (INT64) ((INT32) VmReadMem32 (VmPtr, (UINTN) Op1)); in ExecuteDataManip()
4241 Op1 = (UINT64) VmReadMem32 (VmPtr, (UINTN) Op1); in ExecuteDataManip()
4262 VmPtr in ExecuteDataManip()
4267 VmPtr->Ip += Size; in ExecuteDataManip()
4270 Op2 = mDataManipDispatchTable[DataManipDispatchTableIndex](VmPtr, Op1, Op2); in ExecuteDataManip()
4276 Op1 = (UINT64) VmPtr->Gpr[OPERAND1_REGNUM (Operands)]; in ExecuteDataManip()
4278 VmWriteMem64 (VmPtr, (UINTN) Op1, Op2); in ExecuteDataManip()
4280 VmWriteMem32 (VmPtr, (UINTN) Op1, (UINT32) Op2); in ExecuteDataManip()
4287 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = Op2; in ExecuteDataManip()
4289 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] &= 0xFFFFFFFF; in ExecuteDataManip()
4295 VmPtr->Ip += Size; in ExecuteDataManip()
4314 IN VM_CONTEXT *VmPtr in ExecuteLOADSP() argument
4322 Operands = GETOPERANDS (VmPtr); in ExecuteLOADSP()
4336VmPtr->Flags = (VmPtr->Flags &~VMFLAGS_ALL_VALID) | (VmPtr->Gpr[OPERAND2_REGNUM (Operands)] & VMFL… in ExecuteLOADSP()
4343 VmPtr in ExecuteLOADSP()
4345 VmPtr->Ip += 2; in ExecuteLOADSP()
4349 VmPtr->Ip += 2; in ExecuteLOADSP()
4368 IN VM_CONTEXT *VmPtr in ExecuteSTORESP() argument
4376 Operands = GETOPERANDS (VmPtr); in ExecuteSTORESP()
4389 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = (UINT64) (VmPtr->Flags & VMFLAGS_ALL_VALID); in ExecuteSTORESP()
4396 VmPtr->Gpr[OPERAND1_REGNUM (Operands)] = (UINT64) (UINTN) VmPtr->Ip + 2; in ExecuteSTORESP()
4403 VmPtr in ExecuteSTORESP()
4405 VmPtr->Ip += 2; in ExecuteSTORESP()
4410 VmPtr->Ip += 2; in ExecuteSTORESP()
4439 IN VM_CONTEXT *VmPtr, in VmReadIndex16() argument
4453 Index = VmReadCode16 (VmPtr, CodeOffset); in VmReadIndex16()
4510 IN VM_CONTEXT *VmPtr, in VmReadIndex32() argument
4521 Index = VmReadImmed32 (VmPtr, CodeOffset); in VmReadIndex32()
4573 IN VM_CONTEXT *VmPtr, in VmReadIndex64() argument
4584 Index = VmReadCode64 (VmPtr, CodeOffset); in VmReadIndex64()
4649 IN VM_CONTEXT *VmPtr, in VmWriteMem8() argument
4657 Addr = ConvertStackAddr (VmPtr, Addr); in VmWriteMem8()
4687 IN VM_CONTEXT *VmPtr, in VmWriteMem16() argument
4697 Addr = ConvertStackAddr (VmPtr, Addr); in VmWriteMem16()
4709 if ((Status = VmWriteMem8 (VmPtr, Addr, (UINT8) Data)) != EFI_SUCCESS) { in VmWriteMem16()
4714 if ((Status = VmWriteMem8 (VmPtr, Addr + 1, (UINT8) (Data >> 8))) != EFI_SUCCESS) { in VmWriteMem16()
4750 IN VM_CONTEXT *VmPtr, in VmWriteMem32() argument
4760 Addr = ConvertStackAddr (VmPtr, Addr); in VmWriteMem32()
4772 if ((Status = VmWriteMem16 (VmPtr, Addr, (UINT16) Data)) != EFI_SUCCESS) { in VmWriteMem32()
4777 …if ((Status = VmWriteMem16 (VmPtr, Addr + sizeof (UINT16), (UINT16) (Data >> 16))) != EFI_SUCCESS)… in VmWriteMem32()
4813 IN VM_CONTEXT *VmPtr, in VmWriteMem64() argument
4823 Addr = ConvertStackAddr (VmPtr, Addr); in VmWriteMem64()
4835 if ((Status = VmWriteMem32 (VmPtr, Addr, (UINT32) Data)) != EFI_SUCCESS) { in VmWriteMem64()
4840 …if ((Status = VmWriteMem32 (VmPtr, Addr + sizeof (UINT32), (UINT32) RShiftU64(Data, 32))) != EFI_S… in VmWriteMem64()
4876 IN VM_CONTEXT *VmPtr, in VmWriteMemN() argument
4889 Addr = ConvertStackAddr (VmPtr, Addr); in VmWriteMemN()
4899 Status = VmWriteMem32 (VmPtr, Addr + Index * sizeof (UINT32), (UINT32) Data); in VmWriteMemN()
4925 IN VM_CONTEXT *VmPtr, in VmReadImmed8() argument
4932 return * (INT8 *) (VmPtr->Ip + Offset); in VmReadImmed8()
4951 IN VM_CONTEXT *VmPtr, in VmReadImmed16() argument
4958 if (IS_ALIGNED ((UINTN) VmPtr->Ip + Offset, sizeof (INT16))) { in VmReadImmed16()
4959 return * (INT16 *) (VmPtr->Ip + Offset); in VmReadImmed16()
4967 VmPtr in VmReadImmed16()
4973 return (INT16) (*(UINT8 *) (VmPtr->Ip + Offset) + (*(UINT8 *) (VmPtr->Ip + Offset + 1) << 8)); in VmReadImmed16()
4993 IN VM_CONTEXT *VmPtr, in VmReadImmed32() argument
5002 if (IS_ALIGNED ((UINTN) VmPtr->Ip + Offset, sizeof (UINT32))) { in VmReadImmed32()
5003 return * (INT32 *) (VmPtr->Ip + Offset); in VmReadImmed32()
5008 Data = (UINT32) VmReadCode16 (VmPtr, Offset); in VmReadImmed32()
5009 Data |= (UINT32)(VmReadCode16 (VmPtr, Offset + 2) << 16); in VmReadImmed32()
5030 IN VM_CONTEXT *VmPtr, in VmReadImmed64() argument
5041 if (IS_ALIGNED ((UINTN) VmPtr->Ip + Offset, sizeof (UINT64))) { in VmReadImmed64()
5042 return * (UINT64 *) (VmPtr->Ip + Offset); in VmReadImmed64()
5048 Data32 = VmReadCode32 (VmPtr, Offset); in VmReadImmed64()
5051 Data32 = VmReadCode32 (VmPtr, Offset + sizeof (UINT32)); in VmReadImmed64()
5071 IN VM_CONTEXT *VmPtr, in VmReadCode16() argument
5078 if (IS_ALIGNED ((UINTN) VmPtr->Ip + Offset, sizeof (UINT16))) { in VmReadCode16()
5079 return * (UINT16 *) (VmPtr->Ip + Offset); in VmReadCode16()
5087 VmPtr in VmReadCode16()
5093 return (UINT16) (*(UINT8 *) (VmPtr->Ip + Offset) + (*(UINT8 *) (VmPtr->Ip + Offset + 1) << 8)); in VmReadCode16()
5111 IN VM_CONTEXT *VmPtr, in VmReadCode32() argument
5119 if (IS_ALIGNED ((UINTN) VmPtr->Ip + Offset, sizeof (UINT32))) { in VmReadCode32()
5120 return * (UINT32 *) (VmPtr->Ip + Offset); in VmReadCode32()
5125 Data = (UINT32) VmReadCode16 (VmPtr, Offset); in VmReadCode32()
5126 Data |= (VmReadCode16 (VmPtr, Offset + 2) << 16); in VmReadCode32()
5145 IN VM_CONTEXT *VmPtr, in VmReadCode64() argument
5156 if (IS_ALIGNED ((UINTN) VmPtr->Ip + Offset, sizeof (UINT64))) { in VmReadCode64()
5157 return * (UINT64 *) (VmPtr->Ip + Offset); in VmReadCode64()
5163 Data32 = VmReadCode32 (VmPtr, Offset); in VmReadCode64()
5166 Data32 = VmReadCode32 (VmPtr, Offset + sizeof (UINT32)); in VmReadCode64()
5183 IN VM_CONTEXT *VmPtr, in VmReadMem8() argument
5190 Addr = ConvertStackAddr (VmPtr, Addr); in VmReadMem8()
5208 IN VM_CONTEXT *VmPtr, in VmReadMem16() argument
5215 Addr = ConvertStackAddr (VmPtr, Addr); in VmReadMem16()
5239 IN VM_CONTEXT *VmPtr, in VmReadMem32() argument
5248 Addr = ConvertStackAddr (VmPtr, Addr); in VmReadMem32()
5258 Data = (UINT32) VmReadMem16 (VmPtr, Addr); in VmReadMem32()
5259 Data |= (VmReadMem16 (VmPtr, Addr + 2) << 16); in VmReadMem32()
5274 IN VM_CONTEXT *VmPtr, in VmReadMem64() argument
5284 Addr = ConvertStackAddr (VmPtr, Addr); in VmReadMem64()
5295 Data32 = VmReadMem32 (VmPtr, Addr); in VmReadMem64()
5296 Data = (UINT64) VmReadMem32 (VmPtr, Addr + sizeof (UINT32)); in VmReadMem64()
5323 IN VM_CONTEXT *VmPtr, in ConvertStackAddr() argument
5327 ASSERT(((Addr < VmPtr->LowStackTop) || (Addr > VmPtr->HighStackBottom))); in ConvertStackAddr()
5343 IN VM_CONTEXT *VmPtr, in VmReadMemN() argument
5354 Addr = ConvertStackAddr (VmPtr, Addr); in VmReadMemN()