diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-05 22:06:02 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-05 22:06:02 +0000 |
commit | 12de9a396acbc95e25c5d60ed097cc55777eaaed (patch) | |
tree | 93029d051b9adb4f250c2be5b2ba3bb86095a463 /target-ppc/cpu.h | |
parent | 5bfb56b264d18be57f16c519464fc1919db44372 (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.h | 14 |
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); |