mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
cputlb: Change tlb_flush() argument to CPUState
Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
31b030d4ab
commit
00c8cb0a36
41 changed files with 143 additions and 87 deletions
|
@ -871,7 +871,7 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, uint64_t val, int asi,
|
|||
case 2: /* flush region (16M) */
|
||||
case 3: /* flush context (4G) */
|
||||
case 4: /* flush entire */
|
||||
tlb_flush(env, 1);
|
||||
tlb_flush(CPU(cpu), 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -896,7 +896,7 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, uint64_t val, int asi,
|
|||
disabled mode are invalid in normal mode */
|
||||
if ((oldreg & (MMU_E | MMU_NF | env->def->mmu_bm)) !=
|
||||
(env->mmuregs[reg] & (MMU_E | MMU_NF | env->def->mmu_bm))) {
|
||||
tlb_flush(env, 1);
|
||||
tlb_flush(CPU(cpu), 1);
|
||||
}
|
||||
break;
|
||||
case 1: /* Context Table Pointer Register */
|
||||
|
@ -907,7 +907,7 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, uint64_t val, int asi,
|
|||
if (oldreg != env->mmuregs[reg]) {
|
||||
/* we flush when the MMU context changes because
|
||||
QEMU has no MMU context support */
|
||||
tlb_flush(env, 1);
|
||||
tlb_flush(CPU(cpu), 1);
|
||||
}
|
||||
break;
|
||||
case 3: /* Synchronous Fault Status Register with Clear */
|
||||
|
@ -1663,7 +1663,9 @@ uint64_t helper_ld_asi(CPUSPARCState *env, target_ulong addr, int asi, int size,
|
|||
void helper_st_asi(CPUSPARCState *env, target_ulong addr, target_ulong val,
|
||||
int asi, int size)
|
||||
{
|
||||
CPUState *cs = CPU(sparc_env_get_cpu(env));
|
||||
SPARCCPU *cpu = sparc_env_get_cpu(env);
|
||||
CPUState *cs = CPU(cpu);
|
||||
|
||||
#ifdef DEBUG_ASI
|
||||
dump_asi("write", addr, asi, size, val);
|
||||
#endif
|
||||
|
@ -1872,7 +1874,7 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, target_ulong val,
|
|||
#ifdef DEBUG_MMU
|
||||
dump_mmu(stdout, fprintf, env);
|
||||
#endif
|
||||
tlb_flush(env, 1);
|
||||
tlb_flush(CPU(cpu), 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -1961,13 +1963,13 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, target_ulong val,
|
|||
env->dmmu.mmu_primary_context = val;
|
||||
/* can be optimized to only flush MMU_USER_IDX
|
||||
and MMU_KERNEL_IDX entries */
|
||||
tlb_flush(env, 1);
|
||||
tlb_flush(CPU(cpu), 1);
|
||||
break;
|
||||
case 2: /* Secondary context */
|
||||
env->dmmu.mmu_secondary_context = val;
|
||||
/* can be optimized to only flush MMU_USER_SECONDARY_IDX
|
||||
and MMU_KERNEL_SECONDARY_IDX entries */
|
||||
tlb_flush(env, 1);
|
||||
tlb_flush(CPU(cpu), 1);
|
||||
break;
|
||||
case 5: /* TSB access */
|
||||
DPRINTF_MMU("dmmu TSB write: 0x%016" PRIx64 " -> 0x%016"
|
||||
|
@ -2397,7 +2399,7 @@ void sparc_cpu_unassigned_access(CPUState *cs, hwaddr addr,
|
|||
/* flush neverland mappings created during no-fault mode,
|
||||
so the sequential MMU faults report proper fault types */
|
||||
if (env->mmuregs[0] & MMU_NF) {
|
||||
tlb_flush(env, 1);
|
||||
tlb_flush(cs, 1);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue