Changeset 101535 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
- Timestamp:
- Oct 20, 2023 9:53:15 PM (15 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r101523 r101535 2960 2960 # error "Port me!" 2961 2961 # endif 2962 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 2962 2963 return off; 2963 2964 } … … 2989 2990 pbCodeBuf[off++] = 0x0b; /* or edx, eax */ 2990 2991 pbCodeBuf[off++] = X86_MODRM_MAKE(X86_MOD_REG, X86_GREG_xDX, X86_GREG_xAX); 2992 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 2991 2993 2992 2994 /* Jump to non-zero status return path. */ … … 3015 3017 # error "port me" 3016 3018 #endif 3019 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 3017 3020 return off; 3018 3021 } … … 3201 3204 * Make the call. 3202 3205 */ 3203 #ifdef RT_ARCH_AMD64 3204 off = iemNativeEmitLoadGprImm64(pReNative, off, X86_GREG_xAX, pfnCImpl); 3205 3206 uint8_t *pbCodeBuf = iemNativeInstrBufEnsure(pReNative, off, 2); 3207 AssertReturn(pbCodeBuf, UINT32_MAX); 3208 pbCodeBuf[off++] = 0xff; /* call rax */ 3209 pbCodeBuf[off++] = X86_MODRM_MAKE(X86_MOD_REG, 2, X86_GREG_xAX); 3210 3211 # if defined(VBOXSTRICTRC_STRICT_ENABLED) && defined(RT_OS_WINDOWS) 3206 off = iemNativeEmitCallImm(pReNative, off, pfnCImpl); 3207 3208 #if defined(RT_ARCH_AMD64) && defined(VBOXSTRICTRC_STRICT_ENABLED) && defined(RT_OS_WINDOWS) 3212 3209 off = iemNativeEmitLoadGprByBpU32(pReNative, off, X86_GREG_xAX, IEMNATIVE_FP_OFF_IN_SHADOW_ARG0); /* rcStrict (see above) */ 3213 # endif3214 3215 #elif defined(RT_ARCH_ARM64)3216 off = iemNativeEmitLoadGprImm64(pReNative, off, IEMNATIVE_REG_FIXED_TMP0, pfnCImpl);3217 3218 uint32_t *pu32CodeBuf = iemNativeInstrBufEnsure(pReNative, off, 1);3219 AssertReturn(pu32CodeBuf, UINT32_MAX);3220 pu32CodeBuf[off++] = Armv8A64MkInstrBlr(IEMNATIVE_REG_FIXED_TMP0);3221 3222 #else3223 # error "Port me!"3224 3210 #endif 3225 3211 … … 3347 3333 /* iemNativeHlpExecStatusCodeFiddling(PVMCPUCC pVCpu, int rc, uint8_t idxInstr) */ 3348 3334 #ifdef RT_ARCH_AMD64 3349 /*3350 * AMD64:3351 */3352 uint8_t *pbCodeBuf = iemNativeInstrBufEnsure(pReNative, off, 20);3353 AssertReturn(pbCodeBuf, UINT32_MAX);3354 3355 /* Call helper and jump to return point. */3356 3335 # ifdef RT_OS_WINDOWS 3357 3336 # ifdef IEMNATIVE_WITH_INSTRUCTION_COUNTING … … 3371 3350 # endif 3372 3351 3373 #elif defined(RT_ARCH_ARM64) 3374 /* 3375 * ARM64: 3376 */ 3352 #else 3377 3353 off = iemNativeEmitLoadGprFromGpr(pReNative, off, IEMNATIVE_CALL_ARG1_GREG, IEMNATIVE_CALL_RET_GREG); 3378 3354 off = iemNativeEmitLoadGprFromGpr(pReNative, off, IEMNATIVE_CALL_ARG0_GREG, IEMNATIVE_REG_FIXED_PVMCPU); 3379 3355 /* IEMNATIVE_CALL_ARG2_GREG is already set. */ 3380 off = iemNativeEmitLoadGprImm64(pReNative, off, IEMNATIVE_REG_FIXED_TMP0, (uintptr_t)iemNativeHlpExecStatusCodeFiddling);3381 AssertReturn(off != UINT32_MAX, UINT32_MAX);3382 #else3383 # error "port me"3384 3356 #endif 3385 3357 … … 3477 3449 # error "port me" 3478 3450 #endif 3451 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 3479 3452 3480 3453 return iemNativeEmitRcFiddling(pReNative, off, idxReturn); … … 3583 3556 # error "port me" 3584 3557 #endif 3558 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 3585 3559 return off; 3586 3560 }
Note:
See TracChangeset
for help on using the changeset viewer.