Changeset 98972 in vbox
- Timestamp:
- Mar 15, 2023 9:39:29 AM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 156321
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/types.h
r98103 r98972 1190 1190 /** The usual invalid zero entry. */ 1191 1191 CPUMMODE_INVALID = 0, 1192 /** Real mode . */1192 /** Real mode - x86/amd64. */ 1193 1193 CPUMMODE_REAL, 1194 /** Protected mode (32-bit) . */1194 /** Protected mode (32-bit) - x86/amd64. */ 1195 1195 CPUMMODE_PROTECTED, 1196 /** Long mode (64-bit). */ 1197 CPUMMODE_LONG 1196 /** Long mode (64-bit) - x86/amd64. */ 1197 CPUMMODE_LONG, 1198 /** ARMv8 - AARCH64 mode. */ 1199 CPUMMODE_ARMV8_AARCH64, 1200 /** ARMv8 - AARCH32 mode. */ 1201 CPUMMODE_ARMV8_AARCH32, 1202 /** hack forcing the size of the enum to 32-bits. */ 1203 CPUMMODE_32BIT_HACK = 0x7fffffff 1198 1204 } CPUMMODE; 1199 1205 -
trunk/include/VBox/vmm/cpum-x86-amd64.h
r98970 r98972 2989 2989 /** @} */ 2990 2990 2991 VMMDECL(PCPUMCTX) CPUMQueryGuestCtxPtr(PVMCPU pVCpu);2992 2991 #ifdef VBOX_INCLUDED_vmm_cpumctx_h 2993 2992 VMM_INT_DECL(PCPUMCTXMSRS) CPUMQueryGuestCtxMsrsPtr(PVMCPU pVCpu); … … 3040 3039 VMMDECL(bool) CPUMIsHyperDebugStateActive(PVMCPU pVCpu); 3041 3040 VMMDECL(uint32_t) CPUMGetGuestCPL(PVMCPU pVCpu); 3042 VMMDECL(CPUMMODE) CPUMGetGuestMode(PVMCPU pVCpu);3043 3041 VMMDECL(uint32_t) CPUMGetGuestCodeBits(PVMCPU pVCpu); 3044 3042 VMMDECL(DISCPUMODE) CPUMGetGuestDisMode(PVMCPU pVCpu); -
trunk/include/VBox/vmm/cpum.h
r98970 r98972 61 61 #ifndef VBOX_FOR_DTRACE_LIB 62 62 63 VMMDECL(PCPUMCTX) CPUMQueryGuestCtxPtr(PVMCPU pVCpu); 64 VMMDECL(CPUMMODE) CPUMGetGuestMode(PVMCPU pVCpu); 65 63 66 /** @name Guest Register Getters. 64 67 * @{ */ -
trunk/include/VBox/vmm/cpumctx-armv8.h
r98970 r98972 186 186 /** The SP register values are kept externally. */ 187 187 #define CPUMCTX_EXTRN_SP UINT64_C(0x0000000000000020) 188 /** The PSTATE value is kept externally. */ 189 #define CPUMCTX_EXTRN_PSTATE UINT64_C(0x0000000000000040) 190 /** @todo RSVD. */ 191 #define CPUMCTX_EXTRN_RSVD UINT64_C(0x0000000000000080) 188 192 189 193 /** The X0 register value is kept externally. */ 190 #define CPUMCTX_EXTRN_X0 UINT64_C(0x0000000000000 040)191 /** The X 0register value is kept externally. */192 #define CPUMCTX_EXTRN_X1 UINT64_C(0x0000000000000 080)193 /** The X 0register value is kept externally. */194 #define CPUMCTX_EXTRN_X2 UINT64_C(0x0000000000000 100)195 /** The X 0register value is kept externally. */196 #define CPUMCTX_EXTRN_X3 UINT64_C(0x0000000000000 200)194 #define CPUMCTX_EXTRN_X0 UINT64_C(0x0000000000000100) 195 /** The X1 register value is kept externally. */ 196 #define CPUMCTX_EXTRN_X1 UINT64_C(0x0000000000000200) 197 /** The X2 register value is kept externally. */ 198 #define CPUMCTX_EXTRN_X2 UINT64_C(0x0000000000000400) 199 /** The X3 register value is kept externally. */ 200 #define CPUMCTX_EXTRN_X3 UINT64_C(0x0000000000000800) 197 201 /** The LR (X30) register value is kept externally. */ 198 #define CPUMCTX_EXTRN_LR UINT64_C(0x000000000000 0400)202 #define CPUMCTX_EXTRN_LR UINT64_C(0x0000000000001000) 199 203 /** The FP (X29) register value is kept externally. */ 200 #define CPUMCTX_EXTRN_FP UINT64_C(0x000000000000 0800)204 #define CPUMCTX_EXTRN_FP UINT64_C(0x0000000000002000) 201 205 /** The X4 through X28 register values are kept externally. */ 202 #define CPUMCTX_EXTRN_X4_X28 UINT64_C(0x000000000000 1000)206 #define CPUMCTX_EXTRN_X4_X28 UINT64_C(0x0000000000004000) 203 207 /** General purpose registers mask. */ 204 #define CPUMCTX_EXTRN_GPRS_MASK UINT64_C(0x000000000000 1fc0)208 #define CPUMCTX_EXTRN_GPRS_MASK UINT64_C(0x0000000000007f00) 205 209 206 210 /** The NEON SIMD & FP registers V0 through V31 are kept externally. */ -
trunk/src/VBox/VMM/VMMR3/DBGFCpu.cpp
r98103 r98972 55 55 Assert(idCpu == VMMGetCpuId(pVM)); 56 56 PVMCPU pVCpu = VMMGetCpuById(pVM, idCpu); 57 #if defined(VBOX_VMM_TARGET_ARMV8) 58 CPUM_IMPORT_EXTRN_RET(pVCpu, CPUMCTX_EXTRN_PSTATE); 59 #else 57 60 CPUM_IMPORT_EXTRN_RET(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_EFER); 61 #endif 58 62 *penmMode = CPUMGetGuestMode(pVCpu); 59 63 return VINF_SUCCESS; … … 94 98 Assert(idCpu == VMMGetCpuId(pVM)); 95 99 PVMCPU pVCpu = VMMGetCpuById(pVM, idCpu); 100 #if defined(VBOX_VMM_TARGET_ARMV8) 101 CPUM_IMPORT_EXTRN_RET(pVCpu, CPUMCTX_EXTRN_PSTATE); 102 #else 96 103 CPUM_IMPORT_EXTRN_RET(pVCpu, CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_EFER); 104 #endif 97 105 *pfIn64BitCode = CPUMIsGuestIn64BitCode(pVCpu); 98 106 return VINF_SUCCESS; … … 121 129 122 130 131 #if !defined(VBOX_VMM_TARGET_ARMV8) 123 132 /** 124 133 * Wrapper around CPUMIsGuestInV86Code. … … 137 146 return VINF_SUCCESS; 138 147 } 148 #endif 139 149 140 150 … … 152 162 AssertReturn(idCpu < pUVM->pVM->cCpus, false); 153 163 164 #if defined(VBOX_VMM_TARGET_ARMV8) 165 /* This is a public visible API, so we need to fill in a stub. */ 166 return false; 167 #else 154 168 bool fInV86Code; 155 169 int rc = VMR3ReqPriorityCallWaitU(pUVM, idCpu, (PFNRT)dbgfR3CpuInV86Code, 3, pUVM->pVM, idCpu, &fInV86Code); … … 157 171 return false; 158 172 return fInV86Code; 173 #endif 159 174 } 160 175 -
trunk/src/VBox/VMM/VMMR3/DBGFDisas.cpp
r98103 r98972 94 94 * Internal Functions * 95 95 *********************************************************************************************************************************/ 96 #if !defined(VBOX_VMM_TARGET_ARMV8) 96 97 static FNDISREADBYTES dbgfR3DisasInstrRead; 97 98 … … 352 353 return rc; 353 354 } 355 #endif /* VBOX_VMM_TARGET_ARMV8 */ 354 356 355 357 … … 380 382 int rc; 381 383 384 #if defined(VBOX_VMM_TARGET_ARMV8) 385 RT_NOREF(pVM, Sel, GCPtr, rc, fFlags, pszOutput, cbOutput, pcbInstr, pDisState); 386 AssertReleaseFailed(); /** @todo */ 387 return VERR_NOT_IMPLEMENTED; 388 #else 382 389 /* 383 390 * Get the Sel and GCPtr if fFlags requests that. … … 610 617 dbgfR3DisasInstrDone(&State); 611 618 return VINF_SUCCESS; 619 #endif /* !VBOX_VMM_TARGET_ARMV8*/ 612 620 } 613 621 -
trunk/src/VBox/VMM/VMMR3/DBGFMem.cpp
r98103 r98972 586 586 else 587 587 { 588 #if defined(VBOX_VMM_TARGET_ARMV8) 589 AssertReleaseFailed(); 590 #else 588 591 if (fFlags & DBGFPGDMP_FLAGS_CURRENT_CR3) 589 592 cr3 = CPUMGetGuestCR3(pVCpu); … … 595 598 fFlags |= CPUMGetGuestEFER(pVCpu) & (MSR_K6_EFER_LME | MSR_K6_EFER_NXE); 596 599 } 600 #endif 597 601 } 598 602 } -
trunk/src/VBox/VMM/VMMR3/DBGFStack.cpp
r98103 r98972 82 82 if (pInitialCtx) 83 83 { 84 #if defined(VBOX_VMM_TARGET_ARMV8) 85 AssertReleaseFailed(); 86 #else 84 87 m_State.u.x86.auRegs[X86_GREG_xAX] = pInitialCtx->rax; 85 88 m_State.u.x86.auRegs[X86_GREG_xCX] = pInitialCtx->rcx; … … 107 110 m_State.u.x86.auSegs[X86_SREG_FS] = pInitialCtx->fs.Sel; 108 111 m_State.u.x86.fRealOrV86 = CPUMIsGuestInRealOrV86ModeEx(pInitialCtx); 112 #endif 109 113 } 110 114 else if (hAs == DBGF_AS_R0) … … 816 820 817 821 int rc = VINF_SUCCESS; 822 #if defined(VBOX_VMM_TARGET_ARMV8) 823 if (pAddrPC) 824 pCur->AddrPC = *pAddrPC; 825 else 826 DBGFR3AddrFromFlat(pUVM, &pCur->AddrPC, pCtx->Pc.u64); 827 #else 818 828 if (pAddrPC) 819 829 pCur->AddrPC = *pAddrPC; … … 822 832 else 823 833 rc = DBGFR3AddrFromSelOff(pUVM, idCpu, &pCur->AddrPC, pCtx->cs.Sel, pCtx->rip); 834 #endif 824 835 if (RT_SUCCESS(rc)) 825 836 { … … 875 886 876 887 888 #if defined(VBOX_VMM_TARGET_ARMV8) 889 RT_NOREF(pAddrFrame, pAddrStack); 890 AssertReleaseFailed(); 891 rc = VERR_NOT_IMPLEMENTED; 892 #else 877 893 if (pAddrStack) 878 894 pCur->AddrStack = *pAddrStack; … … 889 905 else if (RT_SUCCESS(rc)) 890 906 rc = DBGFR3AddrFromSelOff(pUVM, idCpu, &pCur->AddrFrame, pCtx->ss.Sel, pCtx->rbp & fAddrMask); 907 #endif 891 908 892 909 /*
Note:
See TracChangeset
for help on using the changeset viewer.