ARC: split elf.h into uapi and export it for userspace

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
diff --git a/arch/arc/include/asm/elf.h b/arch/arc/include/asm/elf.h
index 265d030..f4c8d36 100644
--- a/arch/arc/include/asm/elf.h
+++ b/arch/arc/include/asm/elf.h
@@ -9,39 +9,19 @@
 #ifndef __ASM_ARC_ELF_H
 #define __ASM_ARC_ELF_H
 
-#include <asm/ptrace.h>
+#include <linux/types.h>
+#include <uapi/asm/elf.h>
 
+/* These ELF defines belong to uapi but libc elf.h already defines them */
 #define EM_ARCOMPACT		93
 
-/* Machine specific ELF Hdr flags */
-#define EF_ARC_OSABI_MSK	0x00000f00
-#define EF_ARC_OSABI_ORIG	0x00000000   /* MUST be zero for back-compat */
-#define EF_ARC_OSABI_CURRENT	0x00000300   /* v3 (no legacy syscalls) */
-
 /* ARC Relocations (kernel Modules only) */
 #define  R_ARC_32		0x4
 #define  R_ARC_32_ME		0x1B
 #define  R_ARC_S25H_PCREL	0x10
 #define  R_ARC_S25W_PCREL	0x11
 
-typedef unsigned long elf_greg_t;
-typedef unsigned long elf_fpregset_t;
-
-#define ELF_NGREG	(sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
-typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
-/*
- * To ensure that
- *  -we don't load something for the wrong architecture.
- *  -The userspace is using the correct syscall ABI
- */
-struct elf32_hdr;
-extern int elf_check_arch(const struct elf32_hdr *);
-#define elf_check_arch	elf_check_arch
-
-/*
- * These are used to set parameters in the core dumps.
- */
+/*to set parameters in the core dumps */
 #define ELF_ARCH		EM_ARCOMPACT
 #define ELF_CLASS		ELFCLASS32
 
@@ -51,7 +31,14 @@
 #define ELF_DATA		ELFDATA2LSB
 #endif
 
-#ifdef __KERNEL__
+/*
+ * To ensure that
+ *  -we don't load something for the wrong architecture.
+ *  -The userspace is using the correct syscall ABI
+ */
+struct elf32_hdr;
+extern int elf_check_arch(const struct elf32_hdr *);
+#define elf_check_arch	elf_check_arch
 
 #define CORE_DUMP_USE_REGSET
 
@@ -88,6 +75,4 @@
 #define SET_PERSONALITY(ex) \
 	set_personality(PER_LINUX | (current->personality & (~PER_MASK)))
 
-#endif  /* __KERNEL__ */
-
 #endif
diff --git a/arch/arc/include/uapi/asm/Kbuild b/arch/arc/include/uapi/asm/Kbuild
index 2736244..18fefae 100644
--- a/arch/arc/include/uapi/asm/Kbuild
+++ b/arch/arc/include/uapi/asm/Kbuild
@@ -1,5 +1,6 @@
 # UAPI Header export list
 include include/uapi/asm-generic/Kbuild.asm
+header-y += elf.h
 header-y += page.h
 header-y += setup.h
 header-y += byteorder.h
diff --git a/arch/arc/include/uapi/asm/elf.h b/arch/arc/include/uapi/asm/elf.h
new file mode 100644
index 0000000..0f99ac8
--- /dev/null
+++ b/arch/arc/include/uapi/asm/elf.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _UAPI__ASM_ARC_ELF_H
+#define _UAPI__ASM_ARC_ELF_H
+
+#include <asm/ptrace.h>		/* for user_regs_struct */
+
+/* Machine specific ELF Hdr flags */
+#define EF_ARC_OSABI_MSK	0x00000f00
+#define EF_ARC_OSABI_ORIG	0x00000000   /* MUST be zero for back-compat */
+#define EF_ARC_OSABI_CURRENT	0x00000300   /* v3 (no legacy syscalls) */
+
+typedef unsigned long elf_greg_t;
+typedef unsigned long elf_fpregset_t;
+
+#define ELF_NGREG	(sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
+
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+#endif