aboutsummaryrefslogtreecommitdiff
path: root/target-ppc/cpu.h
diff options
context:
space:
mode:
authorj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-10-05 22:06:02 +0000
committerj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-10-05 22:06:02 +0000
commit12de9a396acbc95e25c5d60ed097cc55777eaaed (patch)
tree93029d051b9adb4f250c2be5b2ba3bb86095a463 /target-ppc/cpu.h
parent5bfb56b264d18be57f16c519464fc1919db44372 (diff)
Full implementation of PowerPC 64 MMU, just missing support for 1 TB
memory segments. Remove the PowerPC 64 "bridge" MMU model and implement segment registers emulation using SLB entries instead. Make SLB area size implementation dependant. Improve TLB & SLB search debug traces. Temporary hack to make PowerPC 970 boot from ROM instead of RAM. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3335 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/cpu.h')
-rw-r--r--target-ppc/cpu.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 03942bf4bd..5824526beb 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -105,10 +105,8 @@ enum {
/* BookE FSL MMU model */
POWERPC_MMU_BOOKE_FSL,
#if defined(TARGET_PPC64)
- /* Standard 64 bits PowerPC MMU */
+ /* 64 bits PowerPC MMU */
POWERPC_MMU_64B,
- /* 64 bits "bridge" PowerPC MMU */
- POWERPC_MMU_64BRIDGE,
#endif /* defined(TARGET_PPC64) */
};
@@ -514,6 +512,8 @@ struct CPUPPCState {
ppc_tlb_t *tlb; /* TLB is optional. Allocate them only if needed */
/* 403 dedicated access protection registers */
target_ulong pb[4];
+ /* PowerPC 64 SLB area */
+ int slb_nr;
int dcache_line_size;
int icache_line_size;
@@ -606,10 +606,14 @@ void do_store_sdr1 (CPUPPCState *env, target_ulong value);
#if defined(TARGET_PPC64)
target_ulong ppc_load_asr (CPUPPCState *env);
void ppc_store_asr (CPUPPCState *env, target_ulong value);
-#endif
+target_ulong ppc_load_slb (CPUPPCState *env, int slb_nr);
+void ppc_store_slb (CPUPPCState *env, int slb_nr, target_ulong rs);
+#endif /* defined(TARGET_PPC64) */
+#if 0 // Unused
target_ulong do_load_sr (CPUPPCState *env, int srnum);
-void do_store_sr (CPUPPCState *env, int srnum, target_ulong value);
#endif
+void do_store_sr (CPUPPCState *env, int srnum, target_ulong value);
+#endif /* !defined(CONFIG_USER_ONLY) */
target_ulong ppc_load_xer (CPUPPCState *env);
void ppc_store_xer (CPUPPCState *env, target_ulong value);
target_ulong do_load_msr (CPUPPCState *env);