 698ba7b5a3
			
		
	
	
	698ba7b5a3
	
	
	
		
			
			Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze omission seems like an error to me, so let's kill this ifdef and make sure we are the same everywhere. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Hugh Dickins <hugh.dickins@tiscali.co.uk> Cc: <linux-arch@vger.kernel.org> Cc: Michal Simek <michal.simek@petalogix.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			142 lines
		
	
	
	
		
			5.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
	
		
			5.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /* elf.h: FR-V ELF definitions
 | |
|  *
 | |
|  * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
 | |
|  * Written by David Howells (dhowells@redhat.com)
 | |
|  * - Derived from include/asm-m68knommu/elf.h
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public License
 | |
|  * as published by the Free Software Foundation; either version
 | |
|  * 2 of the License, or (at your option) any later version.
 | |
|  */
 | |
| #ifndef __ASM_ELF_H
 | |
| #define __ASM_ELF_H
 | |
| 
 | |
| #include <asm/ptrace.h>
 | |
| #include <asm/user.h>
 | |
| 
 | |
| struct elf32_hdr;
 | |
| 
 | |
| /*
 | |
|  * ELF header e_flags defines.
 | |
|  */
 | |
| #define EF_FRV_GPR_MASK         0x00000003 /* mask for # of gprs */
 | |
| #define EF_FRV_GPR32		0x00000001 /* Only uses GR on 32-register */
 | |
| #define EF_FRV_GPR64		0x00000002 /* Only uses GR on 64-register */
 | |
| #define EF_FRV_FPR_MASK         0x0000000c /* mask for # of fprs */
 | |
| #define EF_FRV_FPR32		0x00000004 /* Only uses FR on 32-register */
 | |
| #define EF_FRV_FPR64		0x00000008 /* Only uses FR on 64-register */
 | |
| #define EF_FRV_FPR_NONE		0x0000000C /* Uses software floating-point */
 | |
| #define EF_FRV_DWORD_MASK       0x00000030 /* mask for dword support */
 | |
| #define EF_FRV_DWORD_YES	0x00000010 /* Assumes stack aligned to 8-byte boundaries. */
 | |
| #define EF_FRV_DWORD_NO		0x00000020 /* Assumes stack aligned to 4-byte boundaries. */
 | |
| #define EF_FRV_DOUBLE		0x00000040 /* Uses double instructions. */
 | |
| #define EF_FRV_MEDIA		0x00000080 /* Uses media instructions. */
 | |
| #define EF_FRV_PIC		0x00000100 /* Uses position independent code. */
 | |
| #define EF_FRV_NON_PIC_RELOCS	0x00000200 /* Does not use position Independent code. */
 | |
| #define EF_FRV_MULADD           0x00000400 /* -mmuladd */
 | |
| #define EF_FRV_BIGPIC           0x00000800 /* -fPIC */
 | |
| #define EF_FRV_LIBPIC           0x00001000 /* -mlibrary-pic */
 | |
| #define EF_FRV_G0               0x00002000 /* -G 0, no small data ptr */
 | |
| #define EF_FRV_NOPACK           0x00004000 /* -mnopack */
 | |
| #define EF_FRV_FDPIC            0x00008000 /* -mfdpic */
 | |
| #define EF_FRV_CPU_MASK         0xff000000 /* specific cpu bits */
 | |
| #define EF_FRV_CPU_GENERIC	0x00000000 /* Set CPU type is FR-V */
 | |
| #define EF_FRV_CPU_FR500	0x01000000 /* Set CPU type is FR500 */
 | |
| #define EF_FRV_CPU_FR300	0x02000000 /* Set CPU type is FR300 */
 | |
| #define EF_FRV_CPU_SIMPLE       0x03000000 /* SIMPLE */
 | |
| #define EF_FRV_CPU_TOMCAT       0x04000000 /* Tomcat, FR500 prototype */
 | |
| #define EF_FRV_CPU_FR400	0x05000000 /* Set CPU type is FR400 */
 | |
| #define EF_FRV_CPU_FR550        0x06000000 /* Set CPU type is FR550 */
 | |
| #define EF_FRV_CPU_FR405	0x07000000 /* Set CPU type is FR405 */
 | |
| #define EF_FRV_CPU_FR450	0x08000000 /* Set CPU type is FR450 */
 | |
| 
 | |
| /*
 | |
|  * FR-V ELF relocation types
 | |
|  */
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * ELF register definitions..
 | |
|  */
 | |
| typedef unsigned long elf_greg_t;
 | |
| 
 | |
| #define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
 | |
| typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 | |
| 
 | |
| typedef struct user_fpmedia_regs elf_fpregset_t;
 | |
| 
 | |
| /*
 | |
|  * This is used to ensure we don't load something for the wrong architecture.
 | |
|  */
 | |
| extern int elf_check_arch(const struct elf32_hdr *hdr);
 | |
| 
 | |
| #define elf_check_fdpic(x) ((x)->e_flags & EF_FRV_FDPIC && !((x)->e_flags & EF_FRV_NON_PIC_RELOCS))
 | |
| #define elf_check_const_displacement(x) ((x)->e_flags & EF_FRV_PIC)
 | |
| 
 | |
| /*
 | |
|  * These are used to set parameters in the core dumps.
 | |
|  */
 | |
| #define ELF_CLASS	ELFCLASS32
 | |
| #define ELF_DATA	ELFDATA2MSB
 | |
| #define ELF_ARCH	EM_FRV
 | |
| 
 | |
| #define ELF_PLAT_INIT(_r)			\
 | |
| do {						\
 | |
| 	__kernel_frame0_ptr->gr16	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr17	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr18	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr19	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr20	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr21	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr22	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr23	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr24	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr25	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr26	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr27	= 0;	\
 | |
| 	__kernel_frame0_ptr->gr29	= 0;	\
 | |
| } while(0)
 | |
| 
 | |
| #define ELF_FDPIC_PLAT_INIT(_regs, _exec_map_addr, _interp_map_addr, _dynamic_addr)	\
 | |
| do {											\
 | |
| 	__kernel_frame0_ptr->gr16	= _exec_map_addr;				\
 | |
| 	__kernel_frame0_ptr->gr17	= _interp_map_addr;				\
 | |
| 	__kernel_frame0_ptr->gr18	= _dynamic_addr;				\
 | |
| 	__kernel_frame0_ptr->gr19	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr20	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr21	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr22	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr23	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr24	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr25	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr26	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr27	= 0;						\
 | |
| 	__kernel_frame0_ptr->gr29	= 0;						\
 | |
| } while(0)
 | |
| 
 | |
| #define CORE_DUMP_USE_REGSET
 | |
| #define ELF_FDPIC_CORE_EFLAGS	EF_FRV_FDPIC
 | |
| #define ELF_EXEC_PAGESIZE	16384
 | |
| 
 | |
| /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
 | |
|    use of this is to invoke "./ld.so someprog" to test out a new version of
 | |
|    the loader.  We need to make sure that it is out of the way of the program
 | |
|    that it will "exec", and that there is sufficient room for the brk.  */
 | |
| 
 | |
| #define ELF_ET_DYN_BASE         0x08000000UL
 | |
| 
 | |
| /* This yields a mask that user programs can use to figure out what
 | |
|    instruction set this cpu supports.  */
 | |
| 
 | |
| #define ELF_HWCAP	(0)
 | |
| 
 | |
| /* This yields a string that ld.so will use to load implementation
 | |
|    specific libraries for optimization.  This is more specific in
 | |
|    intent than poking at uname or /proc/cpuinfo.  */
 | |
| 
 | |
| #define ELF_PLATFORM  (NULL)
 | |
| 
 | |
| #define SET_PERSONALITY(ex) set_personality(PER_LINUX)
 | |
| 
 | |
| #endif
 |