- Timestamp:
- Oct 28, 2020 10:44:37 AM (4 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/Makefile.kmk
r86699 r86730 506 506 VMMRZ/CPUMRZ.cpp \ 507 507 VMMRZ/CPUMRZA.asm \ 508 VMMRZ/DBGFRZ.cpp \509 508 VMMRZ/VMMRZ.cpp \ 510 509 VMMAll/APICAll.cpp \ … … 512 511 VMMAll/CPUMAllMsrs.cpp \ 513 512 VMMAll/DBGFAll.cpp \ 513 VMMAll/DBGFAllBp.cpp \ 514 514 $(if-expr defined(VBOX_WITH_DBGF_TRACING), VMMAll/DBGFAllTracer.cpp,) \ 515 515 VMMAll/EMAll.cpp \ -
trunk/src/VBox/VMM/VMMAll/DBGFAllBp.cpp
r86729 r86730 1 1 /* $Id$ */ 2 2 /** @file 3 * DBGF - Debugger Facility, RZpart.3 * DBGF - Debugger Facility, All Context breakpoint management part. 4 4 */ 5 5 … … 65 65 return &pBpChunk->paBpBaseSharedR0[idxEntry]; 66 66 } 67 # endif68 67 69 68 … … 79 78 * @param pBpR0 The ring-0 only breakpoint state. 80 79 */ 81 DECLINLINE(int) dbgfR ZBpHit(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame,80 DECLINLINE(int) dbgfR0BpHit(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame, 82 81 DBGFBP hBp, PDBGFBPINT pBp, PDBGFBPINTR0 pBpR0) 83 82 { … … 103 102 * @note The content of the resolved L2 table entry is not validated!. 104 103 */ 105 DECLINLINE(PCDBGFBPL2ENTRY) dbgfR ZBpL2GetByIdx(PVMCC pVM, uint32_t idxL2)104 DECLINLINE(PCDBGFBPL2ENTRY) dbgfR0BpL2GetByIdx(PVMCC pVM, uint32_t idxL2) 106 105 { 107 106 uint32_t idChunk = DBGF_BP_L2_IDX_GET_CHUNK_ID(idxL2); … … 128 127 * @param GCPtrKey The key to search for. 129 128 */ 130 static int dbgf RZBpL2Walk(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame,131 129 static int dbgfBpL2Walk(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame, 130 uint32_t idxL2Root, RTGCUINTPTR GCPtrKey) 132 131 { 133 132 /** @todo We don't use the depth right now but abort the walking after a fixed amount of levels. */ 134 133 uint8_t iDepth = 32; 135 PCDBGFBPL2ENTRY pL2Entry = dbgfR ZBpL2GetByIdx(pVM, idxL2Root);134 PCDBGFBPL2ENTRY pL2Entry = dbgfR0BpL2GetByIdx(pVM, idxL2Root); 136 135 137 136 while (RT_LIKELY( iDepth-- > 0 … … 153 152 if ( pBp 154 153 && DBGF_BP_PUB_GET_TYPE(pBp->Pub.fFlagsAndType) == DBGFBPTYPE_INT3) 155 return dbgfR ZBpHit(pVM, pVCpu, pRegFrame, hBp, pBp, pBpR0);154 return dbgfR0BpHit(pVM, pVCpu, pRegFrame, hBp, pBp, pBpR0); 156 155 157 156 /* The entry got corrupted, just abort. */ … … 167 166 return VINF_EM_RAW_GUEST_TRAP; 168 167 169 pL2Entry = dbgfR ZBpL2GetByIdx(pVM, idxL2Next);168 pL2Entry = dbgfR0BpL2GetByIdx(pVM, idxL2Next); 170 169 } 171 170 172 171 return VERR_DBGF_BP_L2_LOOKUP_FAILED; 173 172 } 173 # endif /* !IN_RING0 */ 174 174 #endif /* !VBOX_WITH_LOTS_OF_DBGF_BPS */ 175 175 … … 188 188 * @param fAltStepping Alternative stepping indicator. 189 189 */ 190 VMM RZ_INT_DECL(int) DBGFRZTrap01Handler(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, RTGCUINTREG uDr6, bool fAltStepping)190 VMM_INT_DECL(int) DBGFTrap01Handler(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, RTGCUINTREG uDr6, bool fAltStepping) 191 191 { 192 192 /** @todo Intel docs say that X86_DR6_BS has the highest priority... */ … … 256 256 * @param pRegFrame Pointer to the register frame for the trap. 257 257 */ 258 VMM RZ_INT_DECL(int) DBGFRZTrap03Handler(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame)258 VMM_INT_DECL(int) DBGFTrap03Handler(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame) 259 259 { 260 260 #ifndef VBOX_WITH_LOTS_OF_DBGF_BPS … … 290 290 } 291 291 #else 292 #ifndef IN_RING0 293 # error "Todo" 294 #endif 292 295 if (pVM->dbgfr0.s.CTX_SUFF(paBpLocL1)) 293 296 { … … 317 320 { 318 321 if (pBp->Pub.u.Int3.GCPtr == (RTGCUINTPTR)GCPtrBp) 319 rc = dbgfR ZBpHit(pVM, pVCpu, pRegFrame, hBp, pBp, pBpR0);322 rc = dbgfR0BpHit(pVM, pVCpu, pRegFrame, hBp, pBp, pBpR0); 320 323 /* else: Genuine guest trap. */ 321 324 } … … 324 327 } 325 328 else if (u8Type == DBGF_BP_INT3_L1_ENTRY_TYPE_L2_IDX) 326 rc = dbgf RZBpL2Walk(pVM, pVCpu, pRegFrame, DBGF_BP_INT3_L1_ENTRY_GET_L2_IDX(u32L1Entry),327 329 rc = dbgfBpL2Walk(pVM, pVCpu, pRegFrame, DBGF_BP_INT3_L1_ENTRY_GET_L2_IDX(u32L1Entry), 330 DBGF_BP_INT3_L2_KEY_EXTRACT_FROM_ADDR((RTGCUINTPTR)GCPtrBp)); 328 331 else /* Some invalid type. */ 329 332 rc = VERR_DBGF_BP_L1_LOOKUP_FAILED; -
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r86186 r86730 7414 7414 PSVMVMCB pVmcb = pVCpu->hm.s.svm.pVmcb; 7415 7415 PCPUMCTX pCtx = &pVCpu->cpum.GstCtx; 7416 int rc = DBGF RZTrap01Handler(pVM, pVCpu, CPUMCTX2CORE(pCtx), pVmcb->guest.u64DR6, pVCpu->hm.s.fSingleInstruction);7416 int rc = DBGFTrap01Handler(pVM, pVCpu, CPUMCTX2CORE(pCtx), pVmcb->guest.u64DR6, pVCpu->hm.s.fSingleInstruction); 7417 7417 if (rc == VINF_EM_RAW_GUEST_TRAP) 7418 7418 { … … 7478 7478 7479 7479 PCPUMCTX pCtx = &pVCpu->cpum.GstCtx; 7480 int rc = DBGF RZTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx));7480 int rc = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx)); 7481 7481 if (rc == VINF_EM_RAW_GUEST_TRAP) 7482 7482 { -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r85974 r86730 13938 13938 13939 13939 if (!pVmxTransient->fIsNestedGuest) 13940 rc = DBGF RZTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(&pVCpu->cpum.GstCtx));13940 rc = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(&pVCpu->cpum.GstCtx)); 13941 13941 else 13942 13942 rc = VINF_EM_RAW_GUEST_TRAP; … … 13995 13995 if (!pVmxTransient->fIsNestedGuest) 13996 13996 { 13997 rc = DBGF RZTrap01Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx), uDR6, pVCpu->hm.s.fSingleInstruction);13997 rc = DBGFTrap01Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx), uDR6, pVCpu->hm.s.fSingleInstruction); 13998 13998 13999 13999 /*
Note:
See TracChangeset
for help on using the changeset viewer.