|
@@ -242,8 +242,8 @@ static inline int is_module_addr(void *addr)
|
|
* swap .11..ttttt.0
|
|
* swap .11..ttttt.0
|
|
* prot-none, clean, old .11.xx0000.1
|
|
* prot-none, clean, old .11.xx0000.1
|
|
* prot-none, clean, young .11.xx0001.1
|
|
* prot-none, clean, young .11.xx0001.1
|
|
- * prot-none, dirty, old .10.xx0010.1
|
|
|
|
- * prot-none, dirty, young .10.xx0011.1
|
|
|
|
|
|
+ * prot-none, dirty, old .11.xx0010.1
|
|
|
|
+ * prot-none, dirty, young .11.xx0011.1
|
|
* read-only, clean, old .11.xx0100.1
|
|
* read-only, clean, old .11.xx0100.1
|
|
* read-only, clean, young .01.xx0101.1
|
|
* read-only, clean, young .01.xx0101.1
|
|
* read-only, dirty, old .11.xx0110.1
|
|
* read-only, dirty, old .11.xx0110.1
|
|
@@ -323,8 +323,8 @@ static inline int is_module_addr(void *addr)
|
|
#define _SEGMENT_ENTRY_DIRTY 0x2000 /* SW segment dirty bit */
|
|
#define _SEGMENT_ENTRY_DIRTY 0x2000 /* SW segment dirty bit */
|
|
#define _SEGMENT_ENTRY_YOUNG 0x1000 /* SW segment young bit */
|
|
#define _SEGMENT_ENTRY_YOUNG 0x1000 /* SW segment young bit */
|
|
#define _SEGMENT_ENTRY_LARGE 0x0400 /* STE-format control, large page */
|
|
#define _SEGMENT_ENTRY_LARGE 0x0400 /* STE-format control, large page */
|
|
-#define _SEGMENT_ENTRY_READ 0x0002 /* SW segment read bit */
|
|
|
|
-#define _SEGMENT_ENTRY_WRITE 0x0001 /* SW segment write bit */
|
|
|
|
|
|
+#define _SEGMENT_ENTRY_WRITE 0x0002 /* SW segment write bit */
|
|
|
|
+#define _SEGMENT_ENTRY_READ 0x0001 /* SW segment read bit */
|
|
|
|
|
|
#ifdef CONFIG_MEM_SOFT_DIRTY
|
|
#ifdef CONFIG_MEM_SOFT_DIRTY
|
|
#define _SEGMENT_ENTRY_SOFT_DIRTY 0x4000 /* SW segment soft dirty bit */
|
|
#define _SEGMENT_ENTRY_SOFT_DIRTY 0x4000 /* SW segment soft dirty bit */
|
|
@@ -335,15 +335,15 @@ static inline int is_module_addr(void *addr)
|
|
/*
|
|
/*
|
|
* Segment table and region3 table entry encoding
|
|
* Segment table and region3 table entry encoding
|
|
* (R = read-only, I = invalid, y = young bit):
|
|
* (R = read-only, I = invalid, y = young bit):
|
|
- * dy..R...I...rw
|
|
|
|
|
|
+ * dy..R...I...wr
|
|
* prot-none, clean, old 00..1...1...00
|
|
* prot-none, clean, old 00..1...1...00
|
|
* prot-none, clean, young 01..1...1...00
|
|
* prot-none, clean, young 01..1...1...00
|
|
* prot-none, dirty, old 10..1...1...00
|
|
* prot-none, dirty, old 10..1...1...00
|
|
* prot-none, dirty, young 11..1...1...00
|
|
* prot-none, dirty, young 11..1...1...00
|
|
- * read-only, clean, old 00..1...1...10
|
|
|
|
- * read-only, clean, young 01..1...0...10
|
|
|
|
- * read-only, dirty, old 10..1...1...10
|
|
|
|
- * read-only, dirty, young 11..1...0...10
|
|
|
|
|
|
+ * read-only, clean, old 00..1...1...01
|
|
|
|
+ * read-only, clean, young 01..1...0...01
|
|
|
|
+ * read-only, dirty, old 10..1...1...01
|
|
|
|
+ * read-only, dirty, young 11..1...0...01
|
|
* read-write, clean, old 00..1...1...11
|
|
* read-write, clean, old 00..1...1...11
|
|
* read-write, clean, young 01..1...0...11
|
|
* read-write, clean, young 01..1...0...11
|
|
* read-write, dirty, old 10..0...1...11
|
|
* read-write, dirty, old 10..0...1...11
|
|
@@ -382,7 +382,7 @@ static inline int is_module_addr(void *addr)
|
|
/*
|
|
/*
|
|
* Page protection definitions.
|
|
* Page protection definitions.
|
|
*/
|
|
*/
|
|
-#define PAGE_NONE __pgprot(_PAGE_PRESENT | _PAGE_INVALID)
|
|
|
|
|
|
+#define PAGE_NONE __pgprot(_PAGE_PRESENT | _PAGE_INVALID | _PAGE_PROTECT)
|
|
#define PAGE_READ __pgprot(_PAGE_PRESENT | _PAGE_READ | \
|
|
#define PAGE_READ __pgprot(_PAGE_PRESENT | _PAGE_READ | \
|
|
_PAGE_INVALID | _PAGE_PROTECT)
|
|
_PAGE_INVALID | _PAGE_PROTECT)
|
|
#define PAGE_WRITE __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \
|
|
#define PAGE_WRITE __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \
|