diff options
Diffstat (limited to 'include/asm-ppc64')
-rw-r--r-- | include/asm-ppc64/iSeries/HvReleaseData.h | 11 | ||||
-rw-r--r-- | include/asm-ppc64/iSeries/LparMap.h | 23 | ||||
-rw-r--r-- | include/asm-ppc64/mmu.h | 5 |
3 files changed, 26 insertions, 13 deletions
diff --git a/include/asm-ppc64/iSeries/HvReleaseData.h b/include/asm-ppc64/iSeries/HvReleaseData.h index 01a1f13ea4a0..c8162e5ccb21 100644 --- a/include/asm-ppc64/iSeries/HvReleaseData.h +++ b/include/asm-ppc64/iSeries/HvReleaseData.h | |||
@@ -39,6 +39,11 @@ | |||
39 | * know that this PLIC does not support running an OS "that old". | 39 | * know that this PLIC does not support running an OS "that old". |
40 | */ | 40 | */ |
41 | 41 | ||
42 | #define HVREL_TAGSINACTIVE 0x8000 | ||
43 | #define HVREL_32BIT 0x4000 | ||
44 | #define HVREL_NOSHAREDPROCS 0x2000 | ||
45 | #define HVREL_NOHMT 0x1000 | ||
46 | |||
42 | struct HvReleaseData { | 47 | struct HvReleaseData { |
43 | u32 xDesc; /* Descriptor "HvRD" ebcdic x00-x03 */ | 48 | u32 xDesc; /* Descriptor "HvRD" ebcdic x00-x03 */ |
44 | u16 xSize; /* Size of this control block x04-x05 */ | 49 | u16 xSize; /* Size of this control block x04-x05 */ |
@@ -46,11 +51,7 @@ struct HvReleaseData { | |||
46 | struct naca_struct *xSlicNacaAddr; /* Virt addr of SLIC NACA x08-x0F */ | 51 | struct naca_struct *xSlicNacaAddr; /* Virt addr of SLIC NACA x08-x0F */ |
47 | u32 xMsNucDataOffset; /* Offset of Linux Mapping Data x10-x13 */ | 52 | u32 xMsNucDataOffset; /* Offset of Linux Mapping Data x10-x13 */ |
48 | u32 xRsvd1; /* Reserved x14-x17 */ | 53 | u32 xRsvd1; /* Reserved x14-x17 */ |
49 | u16 xTagsMode:1; /* 0 == tags active, 1 == tags inactive */ | 54 | u16 xFlags; |
50 | u16 xAddressSize:1; /* 0 == 64-bit, 1 == 32-bit */ | ||
51 | u16 xNoSharedProcs:1; /* 0 == shared procs, 1 == no shared */ | ||
52 | u16 xNoHMT:1; /* 0 == allow HMT, 1 == no HMT */ | ||
53 | u16 xRsvd2:12; /* Reserved x18-x19 */ | ||
54 | u16 xVrmIndex; /* VRM Index of OS image x1A-x1B */ | 55 | u16 xVrmIndex; /* VRM Index of OS image x1A-x1B */ |
55 | u16 xMinSupportedPlicVrmIndex; /* Min PLIC level (soft) x1C-x1D */ | 56 | u16 xMinSupportedPlicVrmIndex; /* Min PLIC level (soft) x1C-x1D */ |
56 | u16 xMinCompatablePlicVrmIndex; /* Min PLIC levelP (hard) x1E-x1F */ | 57 | u16 xMinCompatablePlicVrmIndex; /* Min PLIC levelP (hard) x1E-x1F */ |
diff --git a/include/asm-ppc64/iSeries/LparMap.h b/include/asm-ppc64/iSeries/LparMap.h index 038e5df7e9f8..5c32e38c1c01 100644 --- a/include/asm-ppc64/iSeries/LparMap.h +++ b/include/asm-ppc64/iSeries/LparMap.h | |||
@@ -49,19 +49,26 @@ | |||
49 | * entry to map the Esid to the Vsid. | 49 | * entry to map the Esid to the Vsid. |
50 | */ | 50 | */ |
51 | 51 | ||
52 | #define HvEsidsToMap 2 | ||
53 | #define HvRangesToMap 1 | ||
54 | |||
52 | /* Hypervisor initially maps 32MB of the load area */ | 55 | /* Hypervisor initially maps 32MB of the load area */ |
53 | #define HvPagesToMap 8192 | 56 | #define HvPagesToMap 8192 |
54 | 57 | ||
55 | struct LparMap { | 58 | struct LparMap { |
56 | u64 xNumberEsids; // Number of ESID/VSID pairs (1) | 59 | u64 xNumberEsids; // Number of ESID/VSID pairs |
57 | u64 xNumberRanges; // Number of VA ranges to map (1) | 60 | u64 xNumberRanges; // Number of VA ranges to map |
58 | u64 xSegmentTableOffs; // Page number within load area of seg table (0) | 61 | u64 xSegmentTableOffs; // Page number within load area of seg table |
59 | u64 xRsvd[5]; | 62 | u64 xRsvd[5]; |
60 | u64 xKernelEsid; // Esid used to map kernel load (0x0C00000000) | 63 | struct { |
61 | u64 xKernelVsid; // Vsid used to map kernel load (0x0C00000000) | 64 | u64 xKernelEsid; // Esid used to map kernel load |
62 | u64 xPages; // Number of pages to be mapped (8192) | 65 | u64 xKernelVsid; // Vsid used to map kernel load |
63 | u64 xOffset; // Offset from start of load area (0) | 66 | } xEsids[HvEsidsToMap]; |
64 | u64 xVPN; // Virtual Page Number (0x000C000000000000) | 67 | struct { |
68 | u64 xPages; // Number of pages to be mapped | ||
69 | u64 xOffset; // Offset from start of load area | ||
70 | u64 xVPN; // Virtual Page Number | ||
71 | } xRanges[HvRangesToMap]; | ||
65 | }; | 72 | }; |
66 | 73 | ||
67 | extern struct LparMap xLparMap; | 74 | extern struct LparMap xLparMap; |
diff --git a/include/asm-ppc64/mmu.h b/include/asm-ppc64/mmu.h index 3d07ddd11e3b..70348a851313 100644 --- a/include/asm-ppc64/mmu.h +++ b/include/asm-ppc64/mmu.h | |||
@@ -200,6 +200,8 @@ extern long native_hpte_insert(unsigned long hpte_group, unsigned long va, | |||
200 | unsigned long prpn, | 200 | unsigned long prpn, |
201 | unsigned long vflags, unsigned long rflags); | 201 | unsigned long vflags, unsigned long rflags); |
202 | 202 | ||
203 | extern void stabs_alloc(void); | ||
204 | |||
203 | #endif /* __ASSEMBLY__ */ | 205 | #endif /* __ASSEMBLY__ */ |
204 | 206 | ||
205 | /* | 207 | /* |
@@ -336,6 +338,9 @@ static inline unsigned long get_vsid(unsigned long context, unsigned long ea) | |||
336 | | (ea >> SID_SHIFT)); | 338 | | (ea >> SID_SHIFT)); |
337 | } | 339 | } |
338 | 340 | ||
341 | #define VSID_SCRAMBLE(pvsid) (((pvsid) * VSID_MULTIPLIER) % VSID_MODULUS) | ||
342 | #define KERNEL_VSID(ea) VSID_SCRAMBLE(GET_ESID(ea)) | ||
343 | |||
339 | #endif /* __ASSEMBLY */ | 344 | #endif /* __ASSEMBLY */ |
340 | 345 | ||
341 | #endif /* _PPC64_MMU_H_ */ | 346 | #endif /* _PPC64_MMU_H_ */ |