
From: Paul Mackerras <paulus@samba.org>

This patch makes the necessary pte_to_pgprot/pgoff_prot_to_pte changes for
-mm2 to compile and run on ppc64.


---

 25-akpm/arch/ppc/kernel/misc.S      |    4 +++-
 25-akpm/arch/ppc64/kernel/misc.S    |    8 ++++++--
 25-akpm/include/asm-ppc/unistd.h    |    6 ++++--
 25-akpm/include/asm-ppc64/mman.h    |    1 +
 25-akpm/include/asm-ppc64/pgtable.h |   12 +++++++++---
 25-akpm/include/asm-ppc64/unistd.h  |    6 ++++--
 6 files changed, 27 insertions(+), 10 deletions(-)

diff -puN include/asm-ppc64/mman.h~remap-file-pages-prot-ppc64 include/asm-ppc64/mman.h
--- 25/include/asm-ppc64/mman.h~remap-file-pages-prot-ppc64	2004-04-01 01:04:25.252066464 -0800
+++ 25-akpm/include/asm-ppc64/mman.h	2004-04-01 01:04:25.258065552 -0800
@@ -38,6 +38,7 @@
 
 #define MAP_POPULATE	0x8000		/* populate (prefault) pagetables */
 #define MAP_NONBLOCK	0x10000		/* do not block on IO */
+#define MAP_INHERIT	0x20000		/* inherit prot of underlying vma */
 
 #define MADV_NORMAL	0x0		/* default page-in behavior */
 #define MADV_RANDOM	0x1		/* page-in minimum required */
diff -puN include/asm-ppc64/pgtable.h~remap-file-pages-prot-ppc64 include/asm-ppc64/pgtable.h
--- 25/include/asm-ppc64/pgtable.h~remap-file-pages-prot-ppc64	2004-04-01 01:04:25.254066160 -0800
+++ 25-akpm/include/asm-ppc64/pgtable.h	2004-04-01 01:04:25.259065400 -0800
@@ -79,8 +79,8 @@
  */
 #define _PAGE_PRESENT	0x0001 /* software: pte contains a translation */
 #define _PAGE_USER	0x0002 /* matches one of the PP bits */
-#define _PAGE_FILE	0x0002 /* (!present only) software: pte holds file offset */
 #define _PAGE_RW	0x0004 /* software: user write access allowed */
+#define _PAGE_FILE	0x0008 /* !present: pte holds file offset */
 #define _PAGE_GUARDED	0x0008
 #define _PAGE_COHERENT	0x0010 /* M: enforce memory coherence (SMP systems) */
 #define _PAGE_NO_CACHE	0x0020 /* I: cache inhibit */
@@ -458,9 +458,15 @@ extern void update_mmu_cache(struct vm_a
 #define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
 #define __pte_to_swp_entry(pte)	((swp_entry_t) { pte_val(pte) >> PTE_SHIFT })
 #define __swp_entry_to_pte(x)	((pte_t) { (x).val << PTE_SHIFT })
-#define pte_to_pgoff(pte)	(pte_val(pte) >> PTE_SHIFT)
-#define pgoff_to_pte(off)	((pte_t) {((off) << PTE_SHIFT)|_PAGE_FILE})
+
 #define PTE_FILE_MAX_BITS	(BITS_PER_LONG - PTE_SHIFT)
+#define pte_to_pgoff(pte)	(pte_val(pte) >> PTE_SHIFT)
+#define pte_to_pgprot(pte)	\
+__pgprot((pte_val(pte) & (_PAGE_USER|_PAGE_RW|_PAGE_PRESENT)) | _PAGE_ACCESSED)
+
+#define pgoff_prot_to_pte(off, prot)					\
+	((pte_t) { ((off) << PTE_SHIFT) | _PAGE_FILE			\
+		   | (pgprot_val(prot) & (_PAGE_USER|_PAGE_RW)) })
 
 /*
  * kern_addr_valid is intended to indicate whether an address is a valid
diff -puN arch/ppc64/kernel/misc.S~remap-file-pages-prot-ppc64 arch/ppc64/kernel/misc.S
--- 25/arch/ppc64/kernel/misc.S~remap-file-pages-prot-ppc64	2004-04-01 01:04:28.054640408 -0800
+++ 25-akpm/arch/ppc64/kernel/misc.S	2004-04-01 01:04:28.133628400 -0800
@@ -811,7 +811,7 @@ _GLOBAL(sys_call_table32)
 	.llong .sys_epoll_create
 	.llong .sys_epoll_ctl
 	.llong .sys_epoll_wait
-	.llong .sys_remap_file_pages
+	.llong .old_remap_file_pages
 	.llong .ppc32_timer_create	/* 240 */
 	.llong .compat_timer_settime
 	.llong .compat_timer_gettime
@@ -828,6 +828,8 @@ _GLOBAL(sys_call_table32)
 	.llong .compat_fstatfs64
 	.llong .ppc32_fadvise64_64	/* 32bit only fadvise64_64 */
 	.llong .ppc_rtas		/* 255 */
+	.llong .sys_ni_syscall		/* sys_debug_setcontext */
+	.llong .sys_remap_file_pages
 
 	.balign 8
 _GLOBAL(sys_call_table)
@@ -1070,7 +1072,7 @@ _GLOBAL(sys_call_table)
 	.llong .sys_epoll_create
 	.llong .sys_epoll_ctl
 	.llong .sys_epoll_wait
-	.llong .sys_remap_file_pages
+	.llong .old_remap_file_pages
 	.llong .sys_timer_create	/* 240 */
 	.llong .sys_timer_settime
 	.llong .sys_timer_gettime
@@ -1087,3 +1089,5 @@ _GLOBAL(sys_call_table)
 	.llong .sys_fstatfs64
 	.llong .sys_ni_syscall		/* 32bit only fadvise64_64 */
 	.llong .ppc_rtas		/* 255 */
+	.llong .sys_ni_syscall		/* sys_debug_setcontext */
+	.llong .sys_remap_file_pages
diff -puN arch/ppc/kernel/misc.S~remap-file-pages-prot-ppc64 arch/ppc/kernel/misc.S
--- 25/arch/ppc/kernel/misc.S~remap-file-pages-prot-ppc64	2004-04-01 01:04:28.079636608 -0800
+++ 25-akpm/arch/ppc/kernel/misc.S	2004-04-01 01:04:28.135628096 -0800
@@ -1353,7 +1353,7 @@ _GLOBAL(sys_call_table)
 	.long sys_epoll_create
 	.long sys_epoll_ctl
 	.long sys_epoll_wait
-	.long sys_remap_file_pages
+	.long old_remap_file_pages
 	.long sys_timer_create	/* 240 */
 	.long sys_timer_settime
 	.long sys_timer_gettime
@@ -1370,3 +1370,5 @@ _GLOBAL(sys_call_table)
 	.long sys_fstatfs64
 	.long ppc_fadvise64_64
 	.long sys_ni_syscall	/* 255 - rtas (used on ppc64) */
+	.long sys_ni_syscall	/* sys_set_debug_context */
+	.long sys_remap_file_pages
diff -puN include/asm-ppc64/unistd.h~remap-file-pages-prot-ppc64 include/asm-ppc64/unistd.h
--- 25/include/asm-ppc64/unistd.h~remap-file-pages-prot-ppc64	2004-04-01 01:04:28.104632808 -0800
+++ 25-akpm/include/asm-ppc64/unistd.h	2004-04-01 01:04:28.134628248 -0800
@@ -249,7 +249,7 @@
 #define __NR_epoll_create	236
 #define __NR_epoll_ctl		237
 #define __NR_epoll_wait		238
-#define __NR_remap_file_pages	239
+#define __NR_old_remap_file_pages 239
 #define __NR_timer_create	240
 #define __NR_timer_settime	241
 #define __NR_timer_gettime	242
@@ -266,8 +266,10 @@
 #define __NR_fstatfs64		253
 #define __NR_fadvise64_64	254
 #define __NR_rtas		255
+#define __NR_set_debug_context	256
+#define __NR_remap_file_pages	257
 
-#define __NR_syscalls		256
+#define __NR_syscalls		258
 #ifdef __KERNEL__
 #define NR_syscalls	__NR_syscalls
 #endif
diff -puN include/asm-ppc/unistd.h~remap-file-pages-prot-ppc64 include/asm-ppc/unistd.h
--- 25/include/asm-ppc/unistd.h~remap-file-pages-prot-ppc64	2004-04-01 01:04:28.130628856 -0800
+++ 25-akpm/include/asm-ppc/unistd.h	2004-04-01 01:04:28.135628096 -0800
@@ -243,7 +243,7 @@
 #define __NR_epoll_create	236
 #define __NR_epoll_ctl		237
 #define __NR_epoll_wait		238
-#define __NR_remap_file_pages	239
+#define __NR_old_remap_file_pages 239
 #define __NR_timer_create	240
 #define __NR_timer_settime	241
 #define __NR_timer_gettime	242
@@ -260,8 +260,10 @@
 #define __NR_fstatfs64		253
 #define __NR_fadvise64_64	254
 #define __NR_rtas		255
+#define __NR_set_debug_context	256
+#define __NR_remap_file_pages	257
 
-#define __NR_syscalls		256
+#define __NR_syscalls		258
 
 #define __NR(n)	#n
 

_
