Use new qemu_for_each_cpu(). Signed-off-by: Andreas Färber <afaer...@suse.de> --- cputlb.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-)
diff --git a/cputlb.c b/cputlb.c index f7cc4b4..748d0f6 100644 --- a/cputlb.c +++ b/cputlb.c @@ -173,24 +173,37 @@ static inline void tlb_update_dirty(CPUTLBEntry *tlb_entry) } } -void cpu_tlb_reset_dirty_all(ram_addr_t start1, ram_addr_t length) -{ - CPUArchState *env; +typedef struct CPUTLBResetDirtyData { + ram_addr_t start1; + ram_addr_t length; +} CPUTLBResetDirtyData; - for (env = first_cpu; env != NULL; env = env->next_cpu) { - int mmu_idx; +static void cpu_tlb_reset_dirty_one(CPUState *cpu, void *data) +{ + CPUTLBResetDirtyData *s = data; + CPUArchState *env = cpu->env_ptr; + int mmu_idx; - for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) { - unsigned int i; + for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) { + unsigned int i; - for (i = 0; i < CPU_TLB_SIZE; i++) { - tlb_reset_dirty_range(&env->tlb_table[mmu_idx][i], - start1, length); - } + for (i = 0; i < CPU_TLB_SIZE; i++) { + tlb_reset_dirty_range(&env->tlb_table[mmu_idx][i], + s->start1, s->length); } } } +void cpu_tlb_reset_dirty_all(ram_addr_t start1, ram_addr_t length) +{ + CPUTLBResetDirtyData s = { + .start1 = start1, + .length = length, + }; + + qemu_for_each_cpu(cpu_tlb_reset_dirty_one, &s); +} + static inline void tlb_set_dirty1(CPUTLBEntry *tlb_entry, target_ulong vaddr) { if (tlb_entry->addr_write == (vaddr | TLB_NOTDIRTY)) { -- 1.8.1.4