[PATCH 2.6.10-rc3-mm1] m32r: Support PAGE_NONE (1/3)

From: Hirokazu Takata
Date: Thu Dec 16 2004 - 23:09:39 EST


[PATCH 2.6.10-rc3-mm1] m32r: Support PAGE_NONE (1/3)
- Support PAGE_NONE attribute for memory protection.
- Add _PAGE_PROTNONE bit to pte (software bit).

Signed-off-by: NIIBE Yutaka <gniibe@xxxxxxxx>
Signed-off-by: Hirokazu Takata <takata@xxxxxxxxxxxxxx>
---

include/asm-m32r/pgtable-2level.h | 7 +++----
include/asm-m32r/pgtable.h | 12 +++++++-----
2 files changed, 10 insertions(+), 9 deletions(-)


diff -ruNp a/include/asm-m32r/pgtable-2level.h b/include/asm-m32r/pgtable-2level.h
--- a/include/asm-m32r/pgtable-2level.h 2004-12-16 15:10:31.000000000 +0900
+++ b/include/asm-m32r/pgtable-2level.h 2004-12-16 15:18:46.000000000 +0900
@@ -68,10 +68,9 @@ static __inline__ pmd_t *pmd_offset(pgd_
#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
#define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))

-/* M32R_FIXME : PTE_FILE_MAX_BITS, pte_to_pgoff, pgoff_to_pte */
-#define PTE_FILE_MAX_BITS 31
-#define pte_to_pgoff(pte) (pte_val(pte) >> 1)
-#define pgoff_to_pte(off) ((pte_t) { ((off) << 1) | _PAGE_FILE })
+#define PTE_FILE_MAX_BITS 29
+#define pte_to_pgoff(pte) (((pte_val(pte) >> 2) & 0xff) | (((pte_val(pte) >> 11)) << 8))
+#define pgoff_to_pte(off) ((pte_t) { (((off) & 0xff) << 2) | (((off) >> 8) << 11) | _PAGE_FILE })

#endif /* _ASM_M32R_PGTABLE_2LEVEL_H */

diff -ruNp a/include/asm-m32r/pgtable.h b/include/asm-m32r/pgtable.h
--- a/include/asm-m32r/pgtable.h 2004-12-16 15:13:39.000000000 +0900
+++ b/include/asm-m32r/pgtable.h 2004-12-16 15:19:12.000000000 +0900
@@ -88,6 +88,7 @@ extern unsigned long empty_zero_page[102
#define _PAGE_BIT_USER 8 /* software: user space access
allowed */
#define _PAGE_BIT_ACCESSED 9 /* software: page referenced */
+#define _PAGE_BIT_PROTNONE 10 /* software: if not present */

#define _PAGE_DIRTY (1UL << _PAGE_BIT_DIRTY)
#define _PAGE_FILE (1UL << _PAGE_BIT_FILE)
@@ -100,6 +101,7 @@ extern unsigned long empty_zero_page[102
#define _PAGE_NONCACHABLE (1UL << _PAGE_BIT_NONCACHABLE)
#define _PAGE_USER (1UL << _PAGE_BIT_USER)
#define _PAGE_ACCESSED (1UL << _PAGE_BIT_ACCESSED)
+#define _PAGE_PROTNONE (1UL << _PAGE_BIT_PROTNONE)

#define _PAGE_TABLE \
( _PAGE_PRESENT | _PAGE_WRITE | _PAGE_READ | _PAGE_USER \
@@ -112,7 +114,7 @@ extern unsigned long empty_zero_page[102

#ifdef CONFIG_MMU
#define PAGE_NONE \
- __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED)
+ __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
#define PAGE_SHARED \
__pgprot(_PAGE_PRESENT | _PAGE_WRITE | _PAGE_READ | _PAGE_USER \
| _PAGE_ACCESSED)
@@ -177,7 +179,7 @@ extern unsigned long empty_zero_page[102

/* page table for 0-4MB for everybody */

-#define pte_present(x) (pte_val(x) & _PAGE_PRESENT)
+#define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE))
#define pte_clear(xp) do { set_pte(xp, __pte(0)); } while (0)

#define pmd_none(x) (!pmd_val(x))
@@ -376,10 +378,10 @@ static inline void pmd_set(pmd_t * pmdp,
#define pte_unmap_nested(pte) do { } while (0)

/* Encode and de-code a swap entry */
-#define __swp_type(x) (((x).val >> 1) & 0x3f)
-#define __swp_offset(x) ((x).val >> 8)
+#define __swp_type(x) (((x).val >> 2) & 0x3f)
+#define __swp_offset(x) ((x).val >> 11)
#define __swp_entry(type, offset) \
- ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
+ ((swp_entry_t) { ((type) << 2) | ((offset) << 11) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })


--
Hirokazu Takata <takata@xxxxxxxxxxxxxx>
Linux/M32R Project: http://www.linux-m32r.org/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/