Changeset 106745 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Oct 28, 2024 12:07:28 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/DBGFR3Flow.cpp
r106743 r106745 251 251 * @returns Flag whether the given instruction is a call. 252 252 * @param uOpc The opcode value from the disassembler. 253 */ 254 DECL_FORCE_INLINE(bool) dbgfR3FlowDisOpcIsCall(uint16_t uOpc) 253 * @param fOpType The opcode type flags for the given opcode. 254 */ 255 DECL_FORCE_INLINE(bool) dbgfR3FlowDisOpcIsCall(uint16_t uOpc, uint32_t fOpType) 255 256 { 256 257 #ifdef VBOX_VMM_TARGET_ARMV8 … … 263 264 return true; 264 265 266 /* Treat instructions like svc/hvc as calls. */ 267 if (fOpType & DISOPTYPE_INTERRUPT) 268 return true; 269 265 270 return false; 266 271 #else 272 RT_NOREF(fOpType); 267 273 return uOpc == OP_CALL; 268 274 #endif … … 1318 1324 uint16_t uOpc = DisState.pCurInstr->uOpcode; 1319 1325 1320 if (dbgfR3FlowDisOpcIsCall(uOpc ))1326 if (dbgfR3FlowDisOpcIsCall(uOpc, DisState.pCurInstr->fOpType)) 1321 1327 pThis->cCallInsns++; 1322 1328 … … 1369 1375 } 1370 1376 } 1371 else if (!dbgfR3FlowDisOpcIsCall(uOpc ))1377 else if (!dbgfR3FlowDisOpcIsCall(uOpc, DisState.pCurInstr->fOpType)) 1372 1378 { 1373 1379 Assert(DisState.pCurInstr->fOpType & DISOPTYPE_COND_CONTROLFLOW); … … 1427 1433 1428 1434 /* Quit disassembling. */ 1429 if ( ( !dbgfR3FlowDisOpcIsCall(uOpc )1435 if ( ( !dbgfR3FlowDisOpcIsCall(uOpc, DisState.pCurInstr->fOpType) 1430 1436 || (pThis->fFlags & DBGF_FLOW_CREATE_F_CALL_INSN_SEPARATE_BB)) 1431 1437 || RT_FAILURE(rc))
Note:
See TracChangeset
for help on using the changeset viewer.