From 37d11ab8b478ccb7aa2270666603ca2e5ac4c11d Mon Sep 17 00:00:00 2001 From: Mark Salter Date: Wed, 3 Oct 2012 17:39:12 -0400 Subject: [PATCH 1/5] c6x: make dsk6455 the default config C6X had no defconfig, so DSK6455 is as good as any. Signed-off-by: Mark Salter --- arch/c6x/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/c6x/Makefile b/arch/c6x/Makefile index 1d08dd070277..a9eb9597e03c 100644 --- a/arch/c6x/Makefile +++ b/arch/c6x/Makefile @@ -6,6 +6,8 @@ # for more details. # +KBUILD_DEFCONFIG := dsk6455_defconfig + cflags-y += -mno-dsbt -msdata=none cflags-$(CONFIG_C6X_BIG_KERNEL) += -mlong-calls From 890139529d45ebd3c60d541f4eddc60e042fdf98 Mon Sep 17 00:00:00 2001 From: David Howells Date: Thu, 4 Oct 2012 12:10:18 +0100 Subject: [PATCH 2/5] UAPI: Fix the guards on various asm/unistd.h files asm-generic/unistd.h and a number of asm/unistd.h files have been given reinclusion guards that allow the guard to be overridden if __SYSCALL is defined. Unfortunately, these files define __SYSCALL and don't undefine it when they've finished with it, thus rendering the guard ineffective. The reason for this override is to allow the file to be #included multiple times with different settings on __SYSCALL for purposes like generating syscall tables. The following guards are problematic: arch/arm64/include/asm/unistd.h:#if !defined(__ASM_UNISTD_H) || defined(__SYSCALL) arch/arm64/include/asm/unistd32.h:#if !defined(__ASM_UNISTD32_H) || defined(__SYSCALL) arch/c6x/include/asm/unistd.h:#if !defined(_ASM_C6X_UNISTD_H) || defined(__SYSCALL) arch/hexagon/include/asm/unistd.h:#if !defined(_ASM_HEXAGON_UNISTD_H) || defined(__SYSCALL) arch/openrisc/include/asm/unistd.h:#if !defined(__ASM_OPENRISC_UNISTD_H) || defined(__SYSCALL) arch/score/include/asm/unistd.h:#if !defined(_ASM_SCORE_UNISTD_H) || defined(__SYSCALL) arch/tile/include/asm/unistd.h:#if !defined(_ASM_TILE_UNISTD_H) || defined(__SYSCALL) arch/unicore32/include/asm/unistd.h:#if !defined(__UNICORE_UNISTD_H__) || defined(__SYSCALL) include/asm-generic/unistd.h:#if !defined(_ASM_GENERIC_UNISTD_H) || defined(__SYSCALL) On the assumption that the guards' ineffectiveness has passed unnoticed, just remove these guards entirely. Signed-off-by: David Howells Acked-by: Arnd Bergmann Acked-by: Catalin Marinas --- arch/arm64/include/asm/unistd.h | 4 ---- arch/arm64/include/asm/unistd32.h | 4 ---- arch/c6x/include/asm/unistd.h | 4 ---- arch/hexagon/include/asm/unistd.h | 5 ----- arch/openrisc/include/asm/unistd.h | 5 ----- arch/score/include/asm/unistd.h | 5 ----- arch/tile/include/asm/unistd.h | 5 ----- arch/unicore32/include/asm/unistd.h | 4 ---- include/asm-generic/unistd.h | 4 ---- 9 files changed, 40 deletions(-) diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h index fe18a683274f..f55ba3e56c32 100644 --- a/arch/arm64/include/asm/unistd.h +++ b/arch/arm64/include/asm/unistd.h @@ -13,8 +13,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#if !defined(__ASM_UNISTD_H) || defined(__SYSCALL) -#define __ASM_UNISTD_H #ifndef __SYSCALL_COMPAT #include @@ -23,5 +21,3 @@ #if defined(__KERNEL__) && defined(CONFIG_COMPAT) #include #endif - -#endif /* __ASM_UNISTD_H */ diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index a50405f5ee42..3ba1f1a90629 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#if !defined(__ASM_UNISTD32_H) || defined(__SYSCALL) -#define __ASM_UNISTD32_H #ifndef __SYSCALL #define __SYSCALL(x, y) @@ -754,5 +752,3 @@ __SYSCALL(__NR_syncfs, sys_syncfs) #define __ARCH_WANT_SYS_SIGPENDING #define __ARCH_WANT_SYS_SIGPROCMASK #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND - -#endif /* __ASM_UNISTD32_H */ diff --git a/arch/c6x/include/asm/unistd.h b/arch/c6x/include/asm/unistd.h index 6d54ea4262eb..ed2259043eec 100644 --- a/arch/c6x/include/asm/unistd.h +++ b/arch/c6x/include/asm/unistd.h @@ -13,8 +13,6 @@ * NON INFRINGEMENT. See the GNU General Public License for * more details. */ -#if !defined(_ASM_C6X_UNISTD_H) || defined(__SYSCALL) -#define _ASM_C6X_UNISTD_H /* Use the standard ABI for syscalls. */ #include @@ -22,5 +20,3 @@ /* C6X-specific syscalls. */ #define __NR_cache_sync (__NR_arch_specific_syscall + 0) __SYSCALL(__NR_cache_sync, sys_cache_sync) - -#endif /* _ASM_C6X_UNISTD_H */ diff --git a/arch/hexagon/include/asm/unistd.h b/arch/hexagon/include/asm/unistd.h index 4d0ecde3665f..c0d5565030ae 100644 --- a/arch/hexagon/include/asm/unistd.h +++ b/arch/hexagon/include/asm/unistd.h @@ -18,9 +18,6 @@ * 02110-1301, USA. */ -#if !defined(_ASM_HEXAGON_UNISTD_H) || defined(__SYSCALL) -#define _ASM_HEXAGON_UNISTD_H - /* * The kernel pulls this unistd.h in three different ways: * 1. the "normal" way which gets all the __NR defines @@ -32,5 +29,3 @@ #define sys_mmap2 sys_mmap_pgoff #include - -#endif diff --git a/arch/openrisc/include/asm/unistd.h b/arch/openrisc/include/asm/unistd.h index 89af3ab5c2e9..437bdbb61b14 100644 --- a/arch/openrisc/include/asm/unistd.h +++ b/arch/openrisc/include/asm/unistd.h @@ -16,9 +16,6 @@ * (at your option) any later version. */ -#if !defined(__ASM_OPENRISC_UNISTD_H) || defined(__SYSCALL) -#define __ASM_OPENRISC_UNISTD_H - #define __ARCH_HAVE_MMU #define sys_mmap2 sys_mmap_pgoff @@ -27,5 +24,3 @@ #define __NR_or1k_atomic __NR_arch_specific_syscall __SYSCALL(__NR_or1k_atomic, sys_or1k_atomic) - -#endif /* __ASM_OPENRISC_UNISTD_H */ diff --git a/arch/score/include/asm/unistd.h b/arch/score/include/asm/unistd.h index 4aa957364d4d..a862384e9c16 100644 --- a/arch/score/include/asm/unistd.h +++ b/arch/score/include/asm/unistd.h @@ -1,6 +1,3 @@ -#if !defined(_ASM_SCORE_UNISTD_H) || defined(__SYSCALL) -#define _ASM_SCORE_UNISTD_H - #define __ARCH_HAVE_MMU #define __ARCH_WANT_SYSCALL_NO_AT @@ -9,5 +6,3 @@ #define __ARCH_WANT_SYSCALL_DEPRECATED #include - -#endif /* _ASM_SCORE_UNISTD_H */ diff --git a/arch/tile/include/asm/unistd.h b/arch/tile/include/asm/unistd.h index a017246ca0ce..0e1f3e66e492 100644 --- a/arch/tile/include/asm/unistd.h +++ b/arch/tile/include/asm/unistd.h @@ -12,9 +12,6 @@ * more details. */ -#if !defined(_ASM_TILE_UNISTD_H) || defined(__SYSCALL) -#define _ASM_TILE_UNISTD_H - #if !defined(__LP64__) || defined(__SYSCALL_COMPAT) /* Use the flavor of this syscall that matches the 32-bit API better. */ #define __ARCH_WANT_SYNC_FILE_RANGE2 @@ -43,5 +40,3 @@ __SYSCALL(__NR_cmpxchg_badaddr, sys_cmpxchg_badaddr) #endif #define __ARCH_WANT_SYS_NEWFSTATAT #endif - -#endif /* _ASM_TILE_UNISTD_H */ diff --git a/arch/unicore32/include/asm/unistd.h b/arch/unicore32/include/asm/unistd.h index 9b2428019961..2abcf61c615d 100644 --- a/arch/unicore32/include/asm/unistd.h +++ b/arch/unicore32/include/asm/unistd.h @@ -9,10 +9,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ -#if !defined(__UNICORE_UNISTD_H__) || defined(__SYSCALL) -#define __UNICORE_UNISTD_H__ /* Use the standard ABI for syscalls. */ #include - -#endif /* __UNICORE_UNISTD_H__ */ diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h index 3748ec92dcbc..cf22fae8cae1 100644 --- a/include/asm-generic/unistd.h +++ b/include/asm-generic/unistd.h @@ -1,6 +1,3 @@ -#if !defined(_ASM_GENERIC_UNISTD_H) || defined(__SYSCALL) -#define _ASM_GENERIC_UNISTD_H - #include /* @@ -930,4 +927,3 @@ __SYSCALL(__NR_fork, sys_ni_syscall) #endif #endif /* __KERNEL__ */ -#endif /* _ASM_GENERIC_UNISTD_H */ From 1c1e436269fe840cdbecfaf397b21778dd276f26 Mon Sep 17 00:00:00 2001 From: David Howells Date: Thu, 4 Oct 2012 12:10:18 +0100 Subject: [PATCH 3/5] UAPI: Split compound conditionals containing __KERNEL__ in Arm64 Split compound conditionals containing __KERNEL__ in Arm64 where possible to make it easier for the UAPI disintegration scripts to handle them. Signed-off-by: David Howells Acked-by: Catalin Marinas --- arch/arm64/include/asm/hwcap.h | 4 +++- arch/arm64/include/asm/stat.h | 4 +++- arch/arm64/include/asm/unistd.h | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/hwcap.h b/arch/arm64/include/asm/hwcap.h index f8190ba45a3e..db05f9766112 100644 --- a/arch/arm64/include/asm/hwcap.h +++ b/arch/arm64/include/asm/hwcap.h @@ -35,7 +35,8 @@ #define COMPAT_HWCAP_IDIVT (1 << 18) #define COMPAT_HWCAP_IDIV (COMPAT_HWCAP_IDIVA|COMPAT_HWCAP_IDIVT) -#if defined(__KERNEL__) && !defined(__ASSEMBLY__) +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ /* * This yields a mask that user programs can use to figure out what * instruction set this cpu supports. @@ -49,5 +50,6 @@ extern unsigned int elf_hwcap; #endif +#endif #endif diff --git a/arch/arm64/include/asm/stat.h b/arch/arm64/include/asm/stat.h index d87225cbead8..a9f580c28f7b 100644 --- a/arch/arm64/include/asm/stat.h +++ b/arch/arm64/include/asm/stat.h @@ -18,7 +18,8 @@ #include -#if defined(__KERNEL__) && defined(CONFIG_COMPAT) +#ifdef __KERNEL__ +#ifdef CONFIG_COMPAT #include @@ -57,6 +58,7 @@ struct stat64 { compat_u64 st_ino; }; +#endif #endif #endif diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h index f55ba3e56c32..8f03dee066ed 100644 --- a/arch/arm64/include/asm/unistd.h +++ b/arch/arm64/include/asm/unistd.h @@ -18,6 +18,8 @@ #include #endif -#if defined(__KERNEL__) && defined(CONFIG_COMPAT) +#ifdef __KERNEL__ +#ifdef CONFIG_COMPAT #include #endif +#endif From 2e919f76e31309d441021f73b4bd9bb2ccfb3972 Mon Sep 17 00:00:00 2001 From: Mark Salter Date: Thu, 4 Oct 2012 12:22:08 -0400 Subject: [PATCH 4/5] c6x: remove c6x signal.h The c6x signal.h includes the asm-generic version and provides a couple of extern declarations. David Howells pointed out that the externs needed to be protected by ifdef __KERNEL__. As it turns out, the externs aren't really needed since the functions are only called from asm code. So this patch gets rid of the c6x signal.h and uses just the asm-generic version. Signed-off-by: Mark Salter --- arch/c6x/include/asm/Kbuild | 1 + arch/c6x/include/asm/signal.h | 17 ----------------- 2 files changed, 1 insertion(+), 17 deletions(-) delete mode 100644 arch/c6x/include/asm/signal.h diff --git a/arch/c6x/include/asm/Kbuild b/arch/c6x/include/asm/Kbuild index f08e89183cda..277f1a4ecb09 100644 --- a/arch/c6x/include/asm/Kbuild +++ b/arch/c6x/include/asm/Kbuild @@ -40,6 +40,7 @@ generic-y += sembuf.h generic-y += shmbuf.h generic-y += shmparam.h generic-y += siginfo.h +generic-y += signal.h generic-y += socket.h generic-y += sockios.h generic-y += stat.h diff --git a/arch/c6x/include/asm/signal.h b/arch/c6x/include/asm/signal.h deleted file mode 100644 index f1cd870596a3..000000000000 --- a/arch/c6x/include/asm/signal.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _ASM_C6X_SIGNAL_H -#define _ASM_C6X_SIGNAL_H - -#include - -#ifndef __ASSEMBLY__ -#include - -struct pt_regs; - -extern asmlinkage int do_rt_sigreturn(struct pt_regs *regs); -extern asmlinkage void do_notify_resume(struct pt_regs *regs, - u32 thread_info_flags, - int syscall); -#endif - -#endif /* _ASM_C6X_SIGNAL_H */ From f3dfd599af993385b40fc7a1c947afc12729bc4d Mon Sep 17 00:00:00 2001 From: David Howells Date: Thu, 4 Oct 2012 18:16:47 +0100 Subject: [PATCH 5/5] UAPI: Fix conditional header installation handling (notably kvm_para.h on m68k) The m68k arch doesn't have a kvm_para.h (unlike most or maybe all other arches), but there is one in asm-generic. This means that: ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h \ $(srctree)/include/asm-$(SRCARCH)/kvm_para.h \ $(INSTALL_HDR_PATH)/include/asm-*/kvm_para.h),) header-y += kvm_para.h endif gets it wrong because it is invoked twice during the header installation - and on the second occasion, asm-generic/kvm_para.h has been installed in usr/, thus triggering a attempt to install asm-m68k/kvm_para.h which will fail. There are three headers with this sort of conditional logic: a.out.h, kvm.h and kvm_para.h. For all three of them, change the logic to be something like: ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h \ $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h),) which finds the header in only the two places it should be found, and doesn't get incorrectly triggered by the installation of asm-generic's version. Signed-off-by: David Howells --- include/linux/Kbuild | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/include/linux/Kbuild b/include/linux/Kbuild index e149e8be9065..aab5c85879b2 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild @@ -21,18 +21,15 @@ header-y += usb/ header-y += wimax/ ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/a.out.h \ - $(srctree)/include/asm-$(SRCARCH)/a.out.h \ - $(INSTALL_HDR_PATH)/include/asm-*/a.out.h),) + $(srctree)/arch/$(SRCARCH)/include/uapi/asm/a.out.h),) header-y += a.out.h endif ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm.h \ - $(srctree)/include/asm-$(SRCARCH)/kvm.h \ - $(INSTALL_HDR_PATH)/include/asm-*/kvm.h),) + $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm.h),) header-y += kvm.h endif ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h \ - $(srctree)/include/asm-$(SRCARCH)/kvm_para.h \ - $(INSTALL_HDR_PATH)/include/asm-*/kvm_para.h),) + $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h),) header-y += kvm_para.h endif