@@ -435,6 +435,7 @@ static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
{
cpu->parent_obj.env_ptr = &cpu->env;
cpu->parent_obj.icount_decr_ptr = &cpu->neg.icount_decr;
+ cpu->parent_obj.tlb_ptr = &cpu->neg.tlb;
}
/**
@@ -494,4 +495,15 @@ static inline CPUTLB *env_tlb(CPUArchState *env)
return &env_neg(env)->tlb;
}
+/**
+ * cpu_tlb(cpu)
+ * @cpu: The generic CPUState
+ *
+ * Return the CPUTLB state associated with the cpu.
+ */
+static inline CPUTLB *cpu_tlb(CPUState *cpu)
+{
+ return cpu->tlb_ptr;
+}
+
#endif /* CPU_ALL_H */
@@ -238,7 +238,12 @@ typedef struct SavedIOTLB {
} SavedIOTLB;
#endif
+/* see include/exec/cpu-defs.h */
+struct CPUTLB;
+
+/* see include/sysemu/kvm_int.h */
struct KVMState;
+/* see linux-headers/linux/kvm.h */
struct kvm_run;
/* work queue */
@@ -372,6 +377,7 @@ struct CPUState {
CPUArchState *env_ptr;
IcountDecr *icount_decr_ptr;
+ struct CPUTLB *tlb_ptr;
CPUJumpCache *tb_jmp_cache;
Adds a CPUTLB * field to CPUState in order to access the TLB without knowledge of the ArchCPU struct layout. A cpu_tlb(CPUState *) function is added for ease of access. Signed-off-by: Anton Johansson <anjo@rev.ng> --- include/exec/cpu-all.h | 12 ++++++++++++ include/hw/core/cpu.h | 6 ++++++ 2 files changed, 18 insertions(+)