From: Paolo 'Blaisorblade' Giarrusso This patch does some totally trivial compilation fixes. It also restores the debugregs manipulation, which was commented out simply because it doesn't compile on x86_64 (we haven't yet implemented there debugregs handling). Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton --- arch/um/kernel/ptrace.c | 4 +++- arch/um/sys-x86_64/syscalls.c | 2 ++ include/asm-um/ipc.h | 7 +------ include/asm-um/page.h | 3 +++ include/asm-um/pgtable-3level.h | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff -puN arch/um/kernel/ptrace.c~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes arch/um/kernel/ptrace.c --- 25/arch/um/kernel/ptrace.c~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes 2005-05-02 18:59:28.000000000 -0700 +++ 25-akpm/arch/um/kernel/ptrace.c 2005-05-02 18:59:28.000000000 -0700 @@ -98,12 +98,14 @@ long sys_ptrace(long request, long pid, if(addr < MAX_REG_OFFSET){ tmp = getreg(child, addr); } +#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT) else if((addr >= offsetof(struct user, u_debugreg[0])) && (addr <= offsetof(struct user, u_debugreg[7]))){ addr -= offsetof(struct user, u_debugreg[0]); addr = addr >> 2; tmp = child->thread.arch.debugregs[addr]; } +#endif ret = put_user(tmp, (unsigned long __user *) data); break; } @@ -127,7 +129,7 @@ long sys_ptrace(long request, long pid, ret = putreg(child, addr, data); break; } -#if 0 /* XXX x86_64 */ +#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT) else if((addr >= offsetof(struct user, u_debugreg[0])) && (addr <= offsetof(struct user, u_debugreg[7]))){ addr -= offsetof(struct user, u_debugreg[0]); diff -puN arch/um/sys-x86_64/syscalls.c~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes arch/um/sys-x86_64/syscalls.c --- 25/arch/um/sys-x86_64/syscalls.c~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes 2005-05-02 18:59:28.000000000 -0700 +++ 25-akpm/arch/um/sys-x86_64/syscalls.c 2005-05-02 18:59:28.000000000 -0700 @@ -7,6 +7,8 @@ #include "linux/linkage.h" #include "linux/slab.h" #include "linux/shm.h" +#include "linux/utsname.h" +#include "linux/personality.h" #include "asm/uaccess.h" #define __FRAME_OFFSETS #include "asm/ptrace.h" diff -puN include/asm-um/ipc.h~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes include/asm-um/ipc.h --- 25/include/asm-um/ipc.h~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes 2005-05-02 18:59:28.000000000 -0700 +++ 25-akpm/include/asm-um/ipc.h 2005-05-02 18:59:28.000000000 -0700 @@ -1,6 +1 @@ -#ifndef __UM_IPC_H -#define __UM_IPC_H - -#include "asm/arch/ipc.h" - -#endif +#include diff -puN include/asm-um/page.h~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes include/asm-um/page.h --- 25/include/asm-um/page.h~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes 2005-05-02 18:59:28.000000000 -0700 +++ 25-akpm/include/asm-um/page.h 2005-05-02 18:59:28.000000000 -0700 @@ -45,6 +45,9 @@ typedef struct { unsigned long pgd; } pg ({ (pte).pte_high = (phys) >> 32; \ (pte).pte_low = (phys) | pgprot_val(prot); }) +#define pmd_val(x) ((x).pmd) +#define __pmd(x) ((pmd_t) { (x) } ) + typedef unsigned long long pfn_t; typedef unsigned long long phys_t; diff -puN include/asm-um/pgtable-3level.h~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes include/asm-um/pgtable-3level.h --- 25/include/asm-um/pgtable-3level.h~uml-obvious-compile-fixes-for-x86-64-subarch-and-x86-regression-fixes 2005-05-02 18:59:28.000000000 -0700 +++ 25-akpm/include/asm-um/pgtable-3level.h 2005-05-02 18:59:28.000000000 -0700 @@ -149,7 +149,7 @@ static inline pmd_t pfn_pmd(pfn_t page_n #define pte_to_pgoff(p) ((p).pte >> 32) -#define pgoff_to_pte(off) ((pte_t) { ((off) < 32) | _PAGE_FILE }) +#define pgoff_to_pte(off) ((pte_t) { ((off) << 32) | _PAGE_FILE }) #else _