mirror of
https://github.com/yuzu-emu/unicorn
synced 2024-11-25 09:29:11 +00:00
softmmu: provide tlb_vaddr_to_host function for user mode
To avoid to many #ifdef in target code, provide a tlb_vaddr_to_host for both user and softmmu modes. In the first case the function always succeed and just call the g2h function. Backports commit 2e83c496261c799b0fe6b8e18ac80cdc0a5c97ce from qemu
This commit is contained in:
parent
13db196792
commit
93df793d4d
1 changed files with 6 additions and 2 deletions
|
@ -457,6 +457,8 @@ uint64_t helper_ldq_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||||
#undef MEMSUFFIX
|
#undef MEMSUFFIX
|
||||||
#undef SOFTMMU_CODE_ACCESS
|
#undef SOFTMMU_CODE_ACCESS
|
||||||
|
|
||||||
|
#endif /* defined(CONFIG_USER_ONLY) */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tlb_vaddr_to_host:
|
* tlb_vaddr_to_host:
|
||||||
* @env: CPUArchState
|
* @env: CPUArchState
|
||||||
|
@ -475,6 +477,9 @@ uint64_t helper_ldq_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||||
static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr,
|
static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr,
|
||||||
int access_type, int mmu_idx)
|
int access_type, int mmu_idx)
|
||||||
{
|
{
|
||||||
|
#if defined(CONFIG_USER_ONLY)
|
||||||
|
return g2h(vaddr);
|
||||||
|
#else
|
||||||
int index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
|
int index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
|
||||||
CPUTLBEntry *tlbentry = &env->tlb_table[mmu_idx][index];
|
CPUTLBEntry *tlbentry = &env->tlb_table[mmu_idx][index];
|
||||||
target_ulong tlb_addr;
|
target_ulong tlb_addr;
|
||||||
|
@ -507,8 +512,7 @@ static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr,
|
||||||
|
|
||||||
haddr = (uintptr_t)(addr + env->tlb_table[mmu_idx][index].addend);
|
haddr = (uintptr_t)(addr + env->tlb_table[mmu_idx][index].addend);
|
||||||
return (void *)haddr;
|
return (void *)haddr;
|
||||||
|
#endif /* defined(CONFIG_USER_ONLY) */
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* defined(CONFIG_USER_ONLY) */
|
|
||||||
|
|
||||||
#endif /* CPU_LDST_H */
|
#endif /* CPU_LDST_H */
|
||||||
|
|
Loading…
Reference in a new issue