Changeset 15774 in vbox
- Timestamp:
- Dec 31, 2008 10:57:14 AM (16 years ago)
- Location:
- trunk/src/recompiler_new
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler_new/VBoxRecompiler.c
r15761 r15774 1313 1313 return (void *)((uintptr_t)pv | 2); 1314 1314 return pv; 1315 //return (void *)((uintptr_t)pv | 2);1316 1315 } 1317 1316 … … 2975 2974 * @param pTLBEntry The TLB entry. 2976 2975 */ 2977 target_ulong remR3PhysGetPhysicalAddressCode(CPUState *env, target_ulong addr, CPUTLBEntry *pTLBEntry) 2976 target_ulong remR3PhysGetPhysicalAddressCode(CPUState* env, 2977 target_ulong addr, 2978 CPUTLBEntry* pTLBEntry, 2979 target_phys_addr_t ioTLBEntry) 2978 2980 { 2979 2981 PVM pVM = env->pVM; 2980 if ((pTLBEntry->addr_code & ~TARGET_PAGE_MASK) == pVM->rem.s.iHandlerMemType) 2981 { 2982 target_ulong ret = pTLBEntry->addend + addr; 2983 AssertMsg2("remR3PhysGetPhysicalAddressCode: addr=%RGv addr_code=%RGv addend=%RGp ret=%RGp\n", 2984 (RTGCPTR)addr, (RTGCPTR)pTLBEntry->addr_code, (RTGCPHYS)pTLBEntry->addend, ret); 2982 2983 if ((ioTLBEntry & ~TARGET_PAGE_MASK) == pVM->rem.s.iHandlerMemType) 2984 { 2985 /* If code memory is being monitored, appropriate IOTLB entry will have 2986 handler IO type, and addend will provide real physical address, no 2987 matter if we store VA in TLB or not, as handlers are always passed PA */ 2988 target_ulong ret = (ioTLBEntry & TARGET_PAGE_MASK) + addr; 2985 2989 return ret; 2986 2990 } 2987 LogRel(("\nTrying to execute code with memory type addr_code=%RGv addend=%RGp at %RGv! (iHandlerMemType=%#x iMMIOMemType=%#x )\n"2991 LogRel(("\nTrying to execute code with memory type addr_code=%RGv addend=%RGp at %RGv! (iHandlerMemType=%#x iMMIOMemType=%#x IOTLB=%RGp)\n" 2988 2992 "*** handlers\n", 2989 (RTGCPTR)pTLBEntry->addr_code, (RTGCPHYS)pTLBEntry->addend, (RTGCPTR)addr, pVM->rem.s.iHandlerMemType, pVM->rem.s.iMMIOMemType ));2993 (RTGCPTR)pTLBEntry->addr_code, (RTGCPHYS)pTLBEntry->addend, (RTGCPTR)addr, pVM->rem.s.iHandlerMemType, pVM->rem.s.iMMIOMemType, (RTGCPHYS)ioTLBEntry)); 2990 2994 DBGFR3Info(pVM, "handlers", NULL, DBGFR3InfoLogRelHlp()); 2991 2995 LogRel(("*** mmio\n")); -
trunk/src/recompiler_new/exec-all.h
r14969 r15774 382 382 #else 383 383 # ifdef VBOX 384 target_ulong remR3PhysGetPhysicalAddressCode(CPUState *env, target_ulong addr, CPUTLBEntry *pTLBEntry );384 target_ulong remR3PhysGetPhysicalAddressCode(CPUState *env, target_ulong addr, CPUTLBEntry *pTLBEntry, target_phys_addr_t ioTLBEntry); 385 385 # if !defined(REM_PHYS_ADDR_IN_TLB) 386 386 target_ulong remR3HCVirt2GCPhys(CPUState *env1, void *addr); … … 408 408 # ifdef VBOX 409 409 /* deal with non-MMIO access handlers. */ 410 return remR3PhysGetPhysicalAddressCode(env1, addr, &env1->tlb_table[mmu_idx][page_index]); 410 return remR3PhysGetPhysicalAddressCode(env1, addr, 411 &env1->tlb_table[mmu_idx][page_index], 412 env1->iotlb[mmu_idx][page_index]); 411 413 # elif defined(TARGET_SPARC) || defined(TARGET_MIPS) 412 414 do_unassigned_access(addr, 0, 1, 0, 4);
Note:
See TracChangeset
for help on using the changeset viewer.