Browse Source

Merge tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming

Pull c6x updates from Mark Salter:
 "Clean up some c6x Kconfig items and add support for Elf FDPIC loader."

* tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming:
  C6X: remove unused config items
  C6X: add support to build with BINFMT_ELF_FDPIC
  C6X: change main arch kbuild symbol
Linus Torvalds 13 years ago
parent
commit
cd975ae0ce
5 changed files with 24 additions and 15 deletions
  1. 1 13
      arch/c6x/Kconfig
  2. 13 1
      arch/c6x/include/asm/elf.h
  3. 4 0
      arch/c6x/include/asm/mmu.h
  4. 5 0
      arch/c6x/include/asm/ptrace.h
  5. 1 1
      fs/Kconfig.binfmt

+ 1 - 13
arch/c6x/Kconfig

@@ -3,7 +3,7 @@
 # see Documentation/kbuild/kconfig-language.txt.
 # see Documentation/kbuild/kconfig-language.txt.
 #
 #
 
 
-config TMS320C6X
+config C6X
 	def_bool y
 	def_bool y
 	select CLKDEV_LOOKUP
 	select CLKDEV_LOOKUP
 	select GENERIC_IRQ_SHOW
 	select GENERIC_IRQ_SHOW
@@ -19,24 +19,12 @@ config TMS320C6X
 config MMU
 config MMU
 	def_bool n
 	def_bool n
 
 
-config ZONE_DMA
-	def_bool y
-
 config FPU
 config FPU
 	def_bool n
 	def_bool n
 
 
-config HIGHMEM
-	def_bool n
-
-config NUMA
-	def_bool n
-
 config RWSEM_GENERIC_SPINLOCK
 config RWSEM_GENERIC_SPINLOCK
 	def_bool y
 	def_bool y
 
 
-config RWSEM_XCHGADD_ALGORITHM
-	def_bool n
-
 config GENERIC_CALIBRATE_DELAY
 config GENERIC_CALIBRATE_DELAY
 	def_bool y
 	def_bool y
 
 

+ 13 - 1
arch/c6x/include/asm/elf.h

@@ -30,7 +30,19 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
  */
  */
 #define elf_check_arch(x) ((x)->e_machine == EM_TI_C6000)
 #define elf_check_arch(x) ((x)->e_machine == EM_TI_C6000)
 
 
-#define elf_check_const_displacement(x) (1)
+#define elf_check_fdpic(x) (1)
+#define elf_check_const_displacement(x) (0)
+
+#define ELF_FDPIC_PLAT_INIT(_regs, _exec_map, _interp_map, _dynamic_addr) \
+do {								\
+	_regs->b4	= (_exec_map);				\
+	_regs->a6	= (_interp_map);			\
+	_regs->b6	= (_dynamic_addr);			\
+} while (0)
+
+#define ELF_FDPIC_CORE_EFLAGS	0
+
+#define ELF_CORE_COPY_FPREGS(...) 0 /* No FPU regs to copy */
 
 
 /*
 /*
  * These are used to set parameters in the core dumps.
  * These are used to set parameters in the core dumps.

+ 4 - 0
arch/c6x/include/asm/mmu.h

@@ -13,6 +13,10 @@
 
 
 typedef struct {
 typedef struct {
 	unsigned long		end_brk;
 	unsigned long		end_brk;
+#ifdef CONFIG_BINFMT_ELF_FDPIC
+	unsigned long	exec_fdpic_loadmap;
+	unsigned long	interp_fdpic_loadmap;
+#endif
 } mm_context_t;
 } mm_context_t;
 
 
 #endif /* _ASM_C6X_MMU_H */
 #endif /* _ASM_C6X_MMU_H */

+ 5 - 0
arch/c6x/include/asm/ptrace.h

@@ -97,6 +97,11 @@
 #define PT_DP	   PT_B14  /* Data Segment Pointer (B14) */
 #define PT_DP	   PT_B14  /* Data Segment Pointer (B14) */
 #define PT_SP	   PT_B15  /* Stack Pointer (B15)  */
 #define PT_SP	   PT_B15  /* Stack Pointer (B15)  */
 
 
+#define PTRACE_GETFDPIC		31	/* get the ELF fdpic loadmap address */
+
+#define PTRACE_GETFDPIC_EXEC	0	/* [addr] request the executable loadmap */
+#define PTRACE_GETFDPIC_INTERP	1	/* [addr] request the interpreter loadmap */
+
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 
 #ifdef _BIG_ENDIAN
 #ifdef _BIG_ENDIAN

+ 1 - 1
fs/Kconfig.binfmt

@@ -33,7 +33,7 @@ config ARCH_BINFMT_ELF_RANDOMIZE_PIE
 config BINFMT_ELF_FDPIC
 config BINFMT_ELF_FDPIC
 	bool "Kernel support for FDPIC ELF binaries"
 	bool "Kernel support for FDPIC ELF binaries"
 	default y
 	default y
-	depends on (FRV || BLACKFIN || (SUPERH32 && !MMU))
+	depends on (FRV || BLACKFIN || (SUPERH32 && !MMU) || C6X)
 	help
 	help
 	  ELF FDPIC binaries are based on ELF, but allow the individual load
 	  ELF FDPIC binaries are based on ELF, but allow the individual load
 	  segments of a binary to be located in memory independently of each
 	  segments of a binary to be located in memory independently of each