tlb flush cleanup
Use static empty variable s_cputlb_empty_entry to clear entries, also reset addend member when clearing entries. This helps running with valgrind/memcheck Signed-off-by: igor.v.kovalenko@gmail.com -- Kind regards, Igor V. Kovalenko Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
7d93b1fa18
commit
0873898472
15
exec.c
15
exec.c
@ -1751,6 +1751,13 @@ static inline void tlb_flush_jmp_cache(CPUState *env, target_ulong addr)
|
|||||||
TB_JMP_PAGE_SIZE * sizeof(TranslationBlock *));
|
TB_JMP_PAGE_SIZE * sizeof(TranslationBlock *));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CPUTLBEntry s_cputlb_empty_entry = {
|
||||||
|
.addr_read = -1,
|
||||||
|
.addr_write = -1,
|
||||||
|
.addr_code = -1,
|
||||||
|
.addend = -1,
|
||||||
|
};
|
||||||
|
|
||||||
/* NOTE: if flush_global is true, also flush global entries (not
|
/* NOTE: if flush_global is true, also flush global entries (not
|
||||||
implemented yet) */
|
implemented yet) */
|
||||||
void tlb_flush(CPUState *env, int flush_global)
|
void tlb_flush(CPUState *env, int flush_global)
|
||||||
@ -1767,9 +1774,7 @@ void tlb_flush(CPUState *env, int flush_global)
|
|||||||
for(i = 0; i < CPU_TLB_SIZE; i++) {
|
for(i = 0; i < CPU_TLB_SIZE; i++) {
|
||||||
int mmu_idx;
|
int mmu_idx;
|
||||||
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
|
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
|
||||||
env->tlb_table[mmu_idx][i].addr_read = -1;
|
env->tlb_table[mmu_idx][i] = s_cputlb_empty_entry;
|
||||||
env->tlb_table[mmu_idx][i].addr_write = -1;
|
|
||||||
env->tlb_table[mmu_idx][i].addr_code = -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1791,9 +1796,7 @@ static inline void tlb_flush_entry(CPUTLBEntry *tlb_entry, target_ulong addr)
|
|||||||
(TARGET_PAGE_MASK | TLB_INVALID_MASK)) ||
|
(TARGET_PAGE_MASK | TLB_INVALID_MASK)) ||
|
||||||
addr == (tlb_entry->addr_code &
|
addr == (tlb_entry->addr_code &
|
||||||
(TARGET_PAGE_MASK | TLB_INVALID_MASK))) {
|
(TARGET_PAGE_MASK | TLB_INVALID_MASK))) {
|
||||||
tlb_entry->addr_read = -1;
|
*tlb_entry = s_cputlb_empty_entry;
|
||||||
tlb_entry->addr_write = -1;
|
|
||||||
tlb_entry->addr_code = -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user