From afb48e9fc543a4ca8adbdd0d60d3740f56f072fd Mon Sep 17 00:00:00 2001 From: Peter Crosthwaite <crosthwaitepeter@gmail.com> Date: Thu, 15 Feb 2018 15:36:15 -0500 Subject: [PATCH] cputlb: Change tlb_set_dirty() arg to cpu Change tlb_set_dirty() to accept a CPU instead of an env pointer. This allows for removal of another CPUArchState usage from prototypes that need to be QOMified. Backports commit bcae01e468d961ad9afaf4148329147e4be209ab from qemu --- qemu/cputlb.c | 3 ++- qemu/exec.c | 3 +-- qemu/include/exec/cputlb.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qemu/cputlb.c b/qemu/cputlb.c index cf146b89..c194dad5 100644 --- a/qemu/cputlb.c +++ b/qemu/cputlb.c @@ -159,8 +159,9 @@ void cpu_tlb_reset_dirty_all(struct uc_struct *uc, /* update the TLB corresponding to virtual page vaddr so that it is no longer dirty */ -void tlb_set_dirty(CPUArchState *env, target_ulong vaddr) +void tlb_set_dirty(CPUState *cpu, target_ulong vaddr) { + CPUArchState *env = cpu->env_ptr; int i; int mmu_idx; diff --git a/qemu/exec.c b/qemu/exec.c index 91a74c94..8f160000 100644 --- a/qemu/exec.c +++ b/qemu/exec.c @@ -1382,8 +1382,7 @@ static void notdirty_mem_write(struct uc_struct* uc, void *opaque, hwaddr ram_ad /* we remove the notdirty callback only if the code has been flushed */ if (!cpu_physical_memory_is_clean(uc, ram_addr)) { - CPUArchState *env = uc->current_cpu->env_ptr; - tlb_set_dirty(env, uc->current_cpu->mem_io_vaddr); + tlb_set_dirty(uc->current_cpu, uc->current_cpu->mem_io_vaddr); } } diff --git a/qemu/include/exec/cputlb.h b/qemu/include/exec/cputlb.h index 0d8e6c16..0d0720cd 100644 --- a/qemu/include/exec/cputlb.h +++ b/qemu/include/exec/cputlb.h @@ -26,7 +26,7 @@ void tlb_unprotect_code(CPUState *cpu, ram_addr_t ram_addr); void tlb_reset_dirty_range(CPUTLBEntry *tlb_entry, uintptr_t start, uintptr_t length); void cpu_tlb_reset_dirty_all(struct uc_struct *uc, ram_addr_t start1, ram_addr_t length); -void tlb_set_dirty(CPUArchState *env, target_ulong vaddr); +void tlb_set_dirty(CPUState *env, target_ulong vaddr); //extern int tlb_flush_count; /* exec.c */