patch-2.2.18 linux/include/asm-s390/pgtable.h

Next file: linux/include/asm-s390/processor.h
Previous file: linux/include/asm-s390/page.h
Back to the patch index
Back to the overall index

diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/include/asm-s390/pgtable.h linux/include/asm-s390/pgtable.h
@@ -33,7 +33,7 @@
 #define flush_cache_page(vma, vmaddr)           do { } while (0)
 #define flush_page_to_ram(page)                 do { } while (0)
 #define flush_icache_range(start, end)          do { } while (0)
-#define flush_dcache_page(page)			do { } while (0)
+#define flush_dcache_page(page)                 do { } while (0)
 
 /*
  * TLB flushing:
@@ -80,7 +80,7 @@
 }
 
 #if 0 /* Arggh, ipte doesn't work correctly !! */
-static inline void flush_tlb_page(struct vm_area_struct *vma,
+static inline void flush_tlb_page(struct vm_area_struct * vma,
         unsigned long va)
 {
         __flush_tlb_one(vma->vm_mm,va);
@@ -304,7 +304,7 @@
  * The Kernel segment-tables includes the User segment-table
  */
 
-#define _SEGMENT_TABLE  (_USER_SEG_TABLE_LEN|0x80000000)
+#define _SEGMENT_TABLE  (_USER_SEG_TABLE_LEN|0x80000000|0x100)
 #define _KERNSEG_TABLE  (_KERNEL_SEG_TABLE_LEN)
 
 /*
@@ -397,7 +397,7 @@
 
 #define SET_PAGE_DIR(tsk,pgdir)                                                 \
 do {                                                                            \
-        unsigned long __pgdir = (__pa(pgdir) & PAGE_MASK ) | _SEGMENT_TABLE; \
+        unsigned long __pgdir = (__pa(pgdir) & PAGE_MASK ) | _SEGMENT_TABLE;  \
         (tsk)->tss.user_seg = __pgdir;                                        \
         if ((tsk) == current) {                                               \
                 __asm__ __volatile__("lctl  7,7,%0": :"m" (__pgdir));         \
@@ -477,8 +477,9 @@
 #define mk_pte_phys(physpage, pgprot) \
 ({ pte_t __pte; pte_val(__pte) = physpage + pgprot_val(pgprot); __pte; })
 
+#define _PAGE_CHG_MASK  (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
 extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
-{ pte_val(pte) = (pte_val(pte) & PAGE_MASK) | pgprot_val(newprot); return pte; }
+{ pte_val(pte) = __pte_set_ro( (pte_val(pte) & _PAGE_CHG_MASK) | pgprot_val(newprot) ); return pte; }
 
 #define pte_page(pte) \
 ((unsigned long) __va(pte_val(pte) & PAGE_MASK))

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)