mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
mmu-hash*: Add header file for definitions
Currently cpu.h contains a number of definitions relating to the 64-bit hash MMU. Some are used in the MMU emulation code, but some are only used in the spapr MMU management hcall implementations. This patch moves these definitions (except for a few that are needed more widely) into mmu-hash64.h header, shared between the MMU emulation code and the spapr hcall code. The MMU emulation code is also updated to actually use a number of those definitions in place of hard coded constants. Similarly, we add new analogous definitions to mmu-hash32.h and use those in place of many hard-coded constants in mmu-hash32.c Signed-off-by: David Gibson <david@gibson.dropbear.id.au> [agraf: fix 32-bit hosts] Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
5dc68eb0e4
commit
d5aea6f367
7 changed files with 190 additions and 141 deletions
|
@ -394,36 +394,12 @@ union ppc_tlb_t {
|
|||
#define SDR_64_HTABSIZE 0x000000000000001FULL
|
||||
#endif /* defined(TARGET_PPC64 */
|
||||
|
||||
#define HASH_PTE_SIZE_32 8
|
||||
#define HASH_PTE_SIZE_64 16
|
||||
|
||||
typedef struct ppc_slb_t ppc_slb_t;
|
||||
struct ppc_slb_t {
|
||||
uint64_t esid;
|
||||
uint64_t vsid;
|
||||
};
|
||||
|
||||
/* Bits in the SLB ESID word */
|
||||
#define SLB_ESID_ESID 0xFFFFFFFFF0000000ULL
|
||||
#define SLB_ESID_V 0x0000000008000000ULL /* valid */
|
||||
|
||||
/* Bits in the SLB VSID word */
|
||||
#define SLB_VSID_SHIFT 12
|
||||
#define SLB_VSID_SHIFT_1T 24
|
||||
#define SLB_VSID_SSIZE_SHIFT 62
|
||||
#define SLB_VSID_B 0xc000000000000000ULL
|
||||
#define SLB_VSID_B_256M 0x0000000000000000ULL
|
||||
#define SLB_VSID_B_1T 0x4000000000000000ULL
|
||||
#define SLB_VSID_VSID 0x3FFFFFFFFFFFF000ULL
|
||||
#define SLB_VSID_PTEM (SLB_VSID_B | SLB_VSID_VSID)
|
||||
#define SLB_VSID_KS 0x0000000000000800ULL
|
||||
#define SLB_VSID_KP 0x0000000000000400ULL
|
||||
#define SLB_VSID_N 0x0000000000000200ULL /* no-execute */
|
||||
#define SLB_VSID_L 0x0000000000000100ULL
|
||||
#define SLB_VSID_C 0x0000000000000080ULL /* class */
|
||||
#define SLB_VSID_LP 0x0000000000000030ULL
|
||||
#define SLB_VSID_ATTR 0x0000000000000FFFULL
|
||||
|
||||
#define SEGMENT_SHIFT_256M 28
|
||||
#define SEGMENT_MASK_256M (~((1ULL << SEGMENT_SHIFT_256M) - 1))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue