diff options
| author | Paul Burton <paul.burton@imgtec.com> | 2016-04-19 04:25:03 -0400 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2016-05-13 09:30:25 -0400 |
| commit | 780602d740fc0b723ea3a05bd7f35d2d7f31aa68 (patch) | |
| tree | eced5aa8deff316978714f31096fa323b160d824 /arch/mips/include/asm/pgtable-bits.h | |
| parent | 694977006a7ba71e33e1f5df4f66ffd5ae19ec84 (diff) | |
MIPS: mm: Standardise on _PAGE_NO_READ, drop _PAGE_READ
Ever since support for RI/XI was implemented by commit 6dd9344cfc41
("MIPS: Implement Read Inhibit/eXecute Inhibit") we've had a mixture of
_PAGE_READ & _PAGE_NO_READ bits. Rather than keep both around, switch
away from using _PAGE_READ to determine page presence & instead invert
the use to _PAGE_NO_READ. Wherever we formerly had no definition for
_PAGE_NO_READ, change what was _PAGE_READ to _PAGE_NO_READ. The end
result is that we consistently use _PAGE_NO_READ to determine whether a
page is readable, regardless of whether RI/XI is implemented.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Reviewed-by: James Hogan <james.hogan@imgtec.com>
Cc: David Daney <david.daney@cavium.com>
Cc: Huacai Chen <chenhc@lemote.com>
Cc: Maciej W. Rozycki <macro@linux-mips.org>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Alex Smith <alex.smith@imgtec.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/13116/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/include/asm/pgtable-bits.h')
| -rw-r--r-- | arch/mips/include/asm/pgtable-bits.h | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/arch/mips/include/asm/pgtable-bits.h b/arch/mips/include/asm/pgtable-bits.h index c81fc1703c8a..5bc663d330d2 100644 --- a/arch/mips/include/asm/pgtable-bits.h +++ b/arch/mips/include/asm/pgtable-bits.h | |||
| @@ -49,7 +49,6 @@ enum pgtable_bits { | |||
| 49 | 49 | ||
| 50 | /* Used only by software (masked out before writing EntryLo*) */ | 50 | /* Used only by software (masked out before writing EntryLo*) */ |
| 51 | _PAGE_PRESENT_SHIFT = 24, | 51 | _PAGE_PRESENT_SHIFT = 24, |
| 52 | _PAGE_READ_SHIFT, | ||
| 53 | _PAGE_WRITE_SHIFT, | 52 | _PAGE_WRITE_SHIFT, |
| 54 | _PAGE_ACCESSED_SHIFT, | 53 | _PAGE_ACCESSED_SHIFT, |
| 55 | _PAGE_MODIFIED_SHIFT, | 54 | _PAGE_MODIFIED_SHIFT, |
| @@ -66,7 +65,7 @@ enum pgtable_bits { | |||
| 66 | enum pgtable_bits { | 65 | enum pgtable_bits { |
| 67 | /* Used only by software (writes to EntryLo ignored) */ | 66 | /* Used only by software (writes to EntryLo ignored) */ |
| 68 | _PAGE_PRESENT_SHIFT, | 67 | _PAGE_PRESENT_SHIFT, |
| 69 | _PAGE_READ_SHIFT, | 68 | _PAGE_NO_READ_SHIFT, |
| 70 | _PAGE_WRITE_SHIFT, | 69 | _PAGE_WRITE_SHIFT, |
| 71 | _PAGE_ACCESSED_SHIFT, | 70 | _PAGE_ACCESSED_SHIFT, |
| 72 | _PAGE_MODIFIED_SHIFT, | 71 | _PAGE_MODIFIED_SHIFT, |
| @@ -85,7 +84,7 @@ enum pgtable_bits { | |||
| 85 | /* Used only by software (masked out before writing EntryLo*) */ | 84 | /* Used only by software (masked out before writing EntryLo*) */ |
| 86 | _PAGE_PRESENT_SHIFT, | 85 | _PAGE_PRESENT_SHIFT, |
| 87 | #if !defined(CONFIG_CPU_MIPSR2) && !defined(CONFIG_CPU_MIPSR6) | 86 | #if !defined(CONFIG_CPU_MIPSR2) && !defined(CONFIG_CPU_MIPSR6) |
| 88 | _PAGE_READ_SHIFT, | 87 | _PAGE_NO_READ_SHIFT, |
| 89 | #endif | 88 | #endif |
| 90 | _PAGE_WRITE_SHIFT, | 89 | _PAGE_WRITE_SHIFT, |
| 91 | _PAGE_ACCESSED_SHIFT, | 90 | _PAGE_ACCESSED_SHIFT, |
| @@ -98,7 +97,6 @@ enum pgtable_bits { | |||
| 98 | #if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) | 97 | #if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) |
| 99 | _PAGE_NO_EXEC_SHIFT, | 98 | _PAGE_NO_EXEC_SHIFT, |
| 100 | _PAGE_NO_READ_SHIFT, | 99 | _PAGE_NO_READ_SHIFT, |
| 101 | _PAGE_READ_SHIFT = _PAGE_NO_READ_SHIFT, | ||
| 102 | #endif | 100 | #endif |
| 103 | _PAGE_GLOBAL_SHIFT, | 101 | _PAGE_GLOBAL_SHIFT, |
| 104 | _PAGE_VALID_SHIFT, | 102 | _PAGE_VALID_SHIFT, |
| @@ -110,11 +108,6 @@ enum pgtable_bits { | |||
| 110 | 108 | ||
| 111 | /* Used only by software */ | 109 | /* Used only by software */ |
| 112 | #define _PAGE_PRESENT (1 << _PAGE_PRESENT_SHIFT) | 110 | #define _PAGE_PRESENT (1 << _PAGE_PRESENT_SHIFT) |
| 113 | #if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) | ||
| 114 | # define _PAGE_READ (cpu_has_rixi ? 0 : (1 << _PAGE_READ_SHIFT)) | ||
| 115 | #else | ||
| 116 | # define _PAGE_READ (1 << _PAGE_READ_SHIFT) | ||
| 117 | #endif | ||
| 118 | #define _PAGE_WRITE (1 << _PAGE_WRITE_SHIFT) | 111 | #define _PAGE_WRITE (1 << _PAGE_WRITE_SHIFT) |
| 119 | #define _PAGE_ACCESSED (1 << _PAGE_ACCESSED_SHIFT) | 112 | #define _PAGE_ACCESSED (1 << _PAGE_ACCESSED_SHIFT) |
| 120 | #define _PAGE_MODIFIED (1 << _PAGE_MODIFIED_SHIFT) | 113 | #define _PAGE_MODIFIED (1 << _PAGE_MODIFIED_SHIFT) |
| @@ -125,11 +118,10 @@ enum pgtable_bits { | |||
| 125 | /* Used by TLB hardware (placed in EntryLo*) */ | 118 | /* Used by TLB hardware (placed in EntryLo*) */ |
| 126 | #if (defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32)) | 119 | #if (defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32)) |
| 127 | # define _PAGE_NO_EXEC (1 << _PAGE_NO_EXEC_SHIFT) | 120 | # define _PAGE_NO_EXEC (1 << _PAGE_NO_EXEC_SHIFT) |
| 128 | # define _PAGE_NO_READ (1 << _PAGE_NO_READ_SHIFT) | ||
| 129 | #elif defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) | 121 | #elif defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) |
| 130 | # define _PAGE_NO_EXEC (cpu_has_rixi ? (1 << _PAGE_NO_EXEC_SHIFT) : 0) | 122 | # define _PAGE_NO_EXEC (cpu_has_rixi ? (1 << _PAGE_NO_EXEC_SHIFT) : 0) |
| 131 | # define _PAGE_NO_READ (cpu_has_rixi ? (1 << _PAGE_NO_READ_SHIFT) : 0) | ||
| 132 | #endif | 123 | #endif |
| 124 | #define _PAGE_NO_READ (1 << _PAGE_NO_READ_SHIFT) | ||
| 133 | #define _PAGE_GLOBAL (1 << _PAGE_GLOBAL_SHIFT) | 125 | #define _PAGE_GLOBAL (1 << _PAGE_GLOBAL_SHIFT) |
| 134 | #define _PAGE_VALID (1 << _PAGE_VALID_SHIFT) | 126 | #define _PAGE_VALID (1 << _PAGE_VALID_SHIFT) |
| 135 | #define _PAGE_DIRTY (1 << _PAGE_DIRTY_SHIFT) | 127 | #define _PAGE_DIRTY (1 << _PAGE_DIRTY_SHIFT) |
| @@ -145,9 +137,6 @@ enum pgtable_bits { | |||
| 145 | #ifndef _PAGE_NO_EXEC | 137 | #ifndef _PAGE_NO_EXEC |
| 146 | #define _PAGE_NO_EXEC 0 | 138 | #define _PAGE_NO_EXEC 0 |
| 147 | #endif | 139 | #endif |
| 148 | #ifndef _PAGE_NO_READ | ||
| 149 | #define _PAGE_NO_READ 0 | ||
| 150 | #endif | ||
| 151 | 140 | ||
| 152 | #define _PAGE_SILENT_READ _PAGE_VALID | 141 | #define _PAGE_SILENT_READ _PAGE_VALID |
| 153 | #define _PAGE_SILENT_WRITE _PAGE_DIRTY | 142 | #define _PAGE_SILENT_WRITE _PAGE_DIRTY |
| @@ -245,7 +234,7 @@ static inline uint64_t pte_to_entrylo(unsigned long pte_val) | |||
| 245 | #define _CACHE_UNCACHED_ACCELERATED (7<<_CACHE_SHIFT) | 234 | #define _CACHE_UNCACHED_ACCELERATED (7<<_CACHE_SHIFT) |
| 246 | #endif | 235 | #endif |
| 247 | 236 | ||
| 248 | #define __READABLE (_PAGE_SILENT_READ | _PAGE_READ | _PAGE_ACCESSED) | 237 | #define __READABLE (_PAGE_SILENT_READ | _PAGE_ACCESSED) |
| 249 | #define __WRITEABLE (_PAGE_SILENT_WRITE | _PAGE_WRITE | _PAGE_MODIFIED) | 238 | #define __WRITEABLE (_PAGE_SILENT_WRITE | _PAGE_WRITE | _PAGE_MODIFIED) |
| 250 | 239 | ||
| 251 | #define _PAGE_CHG_MASK (_PAGE_ACCESSED | _PAGE_MODIFIED | \ | 240 | #define _PAGE_CHG_MASK (_PAGE_ACCESSED | _PAGE_MODIFIED | \ |
