Fix tlb_vaddr_to_host with CONFIG_USER_ONLY
PATCH 1/1 Fix tlb_vaddr_to_host with CONFIG_USER_ONLY
We use the wrong argument name for the g2h() macro !
The result ends up being something like (target_ulong)(uint64) + guest_base which is obviously wrong.
Signed-off-by Benjamin Herrenschmidt <[email protected]>
--- include/exec/cpu_ldst.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/exec/cpu_ldst.h +1 -1
@@ -401,7 +401,7 @@ static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr, int access_type, int mmu_idx) {#if defined(CONFIG_USER_ONLY ) -return g2h (vaddr); +return g2h (addr);#else int index = (addr >>TARGET_PAGE_BITS ) & (CPU_TLB_SIZE -1 );CPUTLBEntry *tlbentry = &env->tlb_table[mmu_idx][index];
Quoted 6 lines · Benjamin Herrenschmidt
We use the wrong argument name for the
g2h()macro !The result ends up being something like (target_ulong)(uint64) +
guest_basewhich is obviously wrong.Signed-off-by Benjamin Herrenschmidt <[email protected]>
Reviewed-by Laurent Vivier <[email protected]>
Tested-by; Laurent Vivier <[email protected]>
Your original mail has the R-b from pmaydell, my duplicate patch from aurel32.
And according to get_maintainer script, maintainers are: pbonzini, crosthwaite.peter, [email protected]
Thanks,
Laurent
Quoted 19 lines
--- include/exec/cpu_ldst.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)include/exec/cpu_ldst.h +1
-1@@ -401,7 +401,7 @@ static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr, int access_type, int mmu_idx) {#if defined(CONFIG_USER_ONLY ) -return g2h (vaddr); +return g2h (addr);#else int index = (addr >>TARGET_PAGE_BITS ) & (CPU_TLB_SIZE -1 );CPUTLBEntry *tlbentry = &env->tlb_table[mmu_idx][index];