|
@@ -74,15 +74,15 @@ static inline int is_zero_pfn(unsigned long pfn)
|
|
* table can map
|
|
* table can map
|
|
* PGDIR_SHIFT determines what a third-level page table entry can map
|
|
* PGDIR_SHIFT determines what a third-level page table entry can map
|
|
*/
|
|
*/
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
# define PMD_SHIFT 20
|
|
# define PMD_SHIFT 20
|
|
# define PUD_SHIFT 20
|
|
# define PUD_SHIFT 20
|
|
# define PGDIR_SHIFT 20
|
|
# define PGDIR_SHIFT 20
|
|
-#else /* __s390x__ */
|
|
|
|
|
|
+#else /* CONFIG_64BIT */
|
|
# define PMD_SHIFT 20
|
|
# define PMD_SHIFT 20
|
|
# define PUD_SHIFT 31
|
|
# define PUD_SHIFT 31
|
|
# define PGDIR_SHIFT 42
|
|
# define PGDIR_SHIFT 42
|
|
-#endif /* __s390x__ */
|
|
|
|
|
|
+#endif /* CONFIG_64BIT */
|
|
|
|
|
|
#define PMD_SIZE (1UL << PMD_SHIFT)
|
|
#define PMD_SIZE (1UL << PMD_SHIFT)
|
|
#define PMD_MASK (~(PMD_SIZE-1))
|
|
#define PMD_MASK (~(PMD_SIZE-1))
|
|
@@ -98,13 +98,13 @@ static inline int is_zero_pfn(unsigned long pfn)
|
|
* that leads to 1024 pte per pgd
|
|
* that leads to 1024 pte per pgd
|
|
*/
|
|
*/
|
|
#define PTRS_PER_PTE 256
|
|
#define PTRS_PER_PTE 256
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
#define PTRS_PER_PMD 1
|
|
#define PTRS_PER_PMD 1
|
|
#define PTRS_PER_PUD 1
|
|
#define PTRS_PER_PUD 1
|
|
-#else /* __s390x__ */
|
|
|
|
|
|
+#else /* CONFIG_64BIT */
|
|
#define PTRS_PER_PMD 2048
|
|
#define PTRS_PER_PMD 2048
|
|
#define PTRS_PER_PUD 2048
|
|
#define PTRS_PER_PUD 2048
|
|
-#endif /* __s390x__ */
|
|
|
|
|
|
+#endif /* CONFIG_64BIT */
|
|
#define PTRS_PER_PGD 2048
|
|
#define PTRS_PER_PGD 2048
|
|
|
|
|
|
#define FIRST_USER_ADDRESS 0
|
|
#define FIRST_USER_ADDRESS 0
|
|
@@ -276,7 +276,7 @@ extern struct page *vmemmap;
|
|
* swap pte is 1011 and 0001, 0011, 0101, 0111 are invalid.
|
|
* swap pte is 1011 and 0001, 0011, 0101, 0111 are invalid.
|
|
*/
|
|
*/
|
|
|
|
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
|
|
|
|
/* Bits in the segment table address-space-control-element */
|
|
/* Bits in the segment table address-space-control-element */
|
|
#define _ASCE_SPACE_SWITCH 0x80000000UL /* space switch event */
|
|
#define _ASCE_SPACE_SWITCH 0x80000000UL /* space switch event */
|
|
@@ -308,7 +308,7 @@ extern struct page *vmemmap;
|
|
#define KVM_UR_BIT 0x00008000UL
|
|
#define KVM_UR_BIT 0x00008000UL
|
|
#define KVM_UC_BIT 0x00004000UL
|
|
#define KVM_UC_BIT 0x00004000UL
|
|
|
|
|
|
-#else /* __s390x__ */
|
|
|
|
|
|
+#else /* CONFIG_64BIT */
|
|
|
|
|
|
/* Bits in the segment/region table address-space-control-element */
|
|
/* Bits in the segment/region table address-space-control-element */
|
|
#define _ASCE_ORIGIN ~0xfffUL/* segment table origin */
|
|
#define _ASCE_ORIGIN ~0xfffUL/* segment table origin */
|
|
@@ -363,7 +363,7 @@ extern struct page *vmemmap;
|
|
#define KVM_UR_BIT 0x0000800000000000UL
|
|
#define KVM_UR_BIT 0x0000800000000000UL
|
|
#define KVM_UC_BIT 0x0000400000000000UL
|
|
#define KVM_UC_BIT 0x0000400000000000UL
|
|
|
|
|
|
-#endif /* __s390x__ */
|
|
|
|
|
|
+#endif /* CONFIG_64BIT */
|
|
|
|
|
|
/*
|
|
/*
|
|
* A user page table pointer has the space-switch-event bit, the
|
|
* A user page table pointer has the space-switch-event bit, the
|
|
@@ -424,7 +424,7 @@ static inline int mm_has_pgste(struct mm_struct *mm)
|
|
/*
|
|
/*
|
|
* pgd/pmd/pte query functions
|
|
* pgd/pmd/pte query functions
|
|
*/
|
|
*/
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
|
|
|
|
static inline int pgd_present(pgd_t pgd) { return 1; }
|
|
static inline int pgd_present(pgd_t pgd) { return 1; }
|
|
static inline int pgd_none(pgd_t pgd) { return 0; }
|
|
static inline int pgd_none(pgd_t pgd) { return 0; }
|
|
@@ -434,7 +434,7 @@ static inline int pud_present(pud_t pud) { return 1; }
|
|
static inline int pud_none(pud_t pud) { return 0; }
|
|
static inline int pud_none(pud_t pud) { return 0; }
|
|
static inline int pud_bad(pud_t pud) { return 0; }
|
|
static inline int pud_bad(pud_t pud) { return 0; }
|
|
|
|
|
|
-#else /* __s390x__ */
|
|
|
|
|
|
+#else /* CONFIG_64BIT */
|
|
|
|
|
|
static inline int pgd_present(pgd_t pgd)
|
|
static inline int pgd_present(pgd_t pgd)
|
|
{
|
|
{
|
|
@@ -490,7 +490,7 @@ static inline int pud_bad(pud_t pud)
|
|
return (pud_val(pud) & mask) != 0;
|
|
return (pud_val(pud) & mask) != 0;
|
|
}
|
|
}
|
|
|
|
|
|
-#endif /* __s390x__ */
|
|
|
|
|
|
+#endif /* CONFIG_64BIT */
|
|
|
|
|
|
static inline int pmd_present(pmd_t pmd)
|
|
static inline int pmd_present(pmd_t pmd)
|
|
{
|
|
{
|
|
@@ -741,7 +741,7 @@ static inline int pte_young(pte_t pte)
|
|
|
|
|
|
static inline void pgd_clear(pgd_t *pgd)
|
|
static inline void pgd_clear(pgd_t *pgd)
|
|
{
|
|
{
|
|
-#ifdef __s390x__
|
|
|
|
|
|
+#ifdef CONFIG_64BIT
|
|
if ((pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R2)
|
|
if ((pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R2)
|
|
pgd_val(*pgd) = _REGION2_ENTRY_EMPTY;
|
|
pgd_val(*pgd) = _REGION2_ENTRY_EMPTY;
|
|
#endif
|
|
#endif
|
|
@@ -749,7 +749,7 @@ static inline void pgd_clear(pgd_t *pgd)
|
|
|
|
|
|
static inline void pud_clear(pud_t *pud)
|
|
static inline void pud_clear(pud_t *pud)
|
|
{
|
|
{
|
|
-#ifdef __s390x__
|
|
|
|
|
|
+#ifdef CONFIG_64BIT
|
|
if ((pud_val(*pud) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3)
|
|
if ((pud_val(*pud) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3)
|
|
pud_val(*pud) = _REGION3_ENTRY_EMPTY;
|
|
pud_val(*pud) = _REGION3_ENTRY_EMPTY;
|
|
#endif
|
|
#endif
|
|
@@ -921,7 +921,7 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
|
|
static inline void __ptep_ipte(unsigned long address, pte_t *ptep)
|
|
static inline void __ptep_ipte(unsigned long address, pte_t *ptep)
|
|
{
|
|
{
|
|
if (!(pte_val(*ptep) & _PAGE_INVALID)) {
|
|
if (!(pte_val(*ptep) & _PAGE_INVALID)) {
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
/* pto must point to the start of the segment table */
|
|
/* pto must point to the start of the segment table */
|
|
pte_t *pto = (pte_t *) (((unsigned long) ptep) & 0x7ffffc00);
|
|
pte_t *pto = (pte_t *) (((unsigned long) ptep) & 0x7ffffc00);
|
|
#else
|
|
#else
|
|
@@ -1116,7 +1116,7 @@ static inline pte_t mk_pte(struct page *page, pgprot_t pgprot)
|
|
#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address))
|
|
#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address))
|
|
#define pgd_offset_k(address) pgd_offset(&init_mm, address)
|
|
#define pgd_offset_k(address) pgd_offset(&init_mm, address)
|
|
|
|
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
|
|
|
|
#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN)
|
|
#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN)
|
|
#define pud_deref(pmd) ({ BUG(); 0UL; })
|
|
#define pud_deref(pmd) ({ BUG(); 0UL; })
|
|
@@ -1125,7 +1125,7 @@ static inline pte_t mk_pte(struct page *page, pgprot_t pgprot)
|
|
#define pud_offset(pgd, address) ((pud_t *) pgd)
|
|
#define pud_offset(pgd, address) ((pud_t *) pgd)
|
|
#define pmd_offset(pud, address) ((pmd_t *) pud + pmd_index(address))
|
|
#define pmd_offset(pud, address) ((pmd_t *) pud + pmd_index(address))
|
|
|
|
|
|
-#else /* __s390x__ */
|
|
|
|
|
|
+#else /* CONFIG_64BIT */
|
|
|
|
|
|
#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN)
|
|
#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN)
|
|
#define pud_deref(pud) (pud_val(pud) & _REGION_ENTRY_ORIGIN)
|
|
#define pud_deref(pud) (pud_val(pud) & _REGION_ENTRY_ORIGIN)
|
|
@@ -1147,7 +1147,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
|
|
return pmd + pmd_index(address);
|
|
return pmd + pmd_index(address);
|
|
}
|
|
}
|
|
|
|
|
|
-#endif /* __s390x__ */
|
|
|
|
|
|
+#endif /* CONFIG_64BIT */
|
|
|
|
|
|
#define pfn_pte(pfn,pgprot) mk_pte_phys(__pa((pfn) << PAGE_SHIFT),(pgprot))
|
|
#define pfn_pte(pfn,pgprot) mk_pte_phys(__pa((pfn) << PAGE_SHIFT),(pgprot))
|
|
#define pte_pfn(x) (pte_val(x) >> PAGE_SHIFT)
|
|
#define pte_pfn(x) (pte_val(x) >> PAGE_SHIFT)
|
|
@@ -1196,7 +1196,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
|
|
* 0000000000111111111122222222223333333333444444444455 5555 5 55566 66
|
|
* 0000000000111111111122222222223333333333444444444455 5555 5 55566 66
|
|
* 0123456789012345678901234567890123456789012345678901 2345 6 78901 23
|
|
* 0123456789012345678901234567890123456789012345678901 2345 6 78901 23
|
|
*/
|
|
*/
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
#define __SWP_OFFSET_MASK (~0UL >> 12)
|
|
#define __SWP_OFFSET_MASK (~0UL >> 12)
|
|
#else
|
|
#else
|
|
#define __SWP_OFFSET_MASK (~0UL >> 11)
|
|
#define __SWP_OFFSET_MASK (~0UL >> 11)
|
|
@@ -1217,11 +1217,11 @@ static inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
|
|
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
|
|
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
|
|
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
|
|
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
|
|
|
|
|
|
-#ifndef __s390x__
|
|
|
|
|
|
+#ifndef CONFIG_64BIT
|
|
# define PTE_FILE_MAX_BITS 26
|
|
# define PTE_FILE_MAX_BITS 26
|
|
-#else /* __s390x__ */
|
|
|
|
|
|
+#else /* CONFIG_64BIT */
|
|
# define PTE_FILE_MAX_BITS 59
|
|
# define PTE_FILE_MAX_BITS 59
|
|
-#endif /* __s390x__ */
|
|
|
|
|
|
+#endif /* CONFIG_64BIT */
|
|
|
|
|
|
#define pte_to_pgoff(__pte) \
|
|
#define pte_to_pgoff(__pte) \
|
|
((((__pte).pte >> 12) << 7) + (((__pte).pte >> 1) & 0x7f))
|
|
((((__pte).pte >> 12) << 7) + (((__pte).pte >> 1) & 0x7f))
|