From: Paul Mackerras 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 _