109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef __ASM_AVR32_ELF_H
 | 
						|
#define __ASM_AVR32_ELF_H
 | 
						|
 | 
						|
/* AVR32 relocation numbers */
 | 
						|
#define R_AVR32_NONE		0
 | 
						|
#define R_AVR32_32		1
 | 
						|
#define R_AVR32_16		2
 | 
						|
#define R_AVR32_8		3
 | 
						|
#define R_AVR32_32_PCREL	4
 | 
						|
#define R_AVR32_16_PCREL	5
 | 
						|
#define R_AVR32_8_PCREL		6
 | 
						|
#define R_AVR32_DIFF32		7
 | 
						|
#define R_AVR32_DIFF16		8
 | 
						|
#define R_AVR32_DIFF8		9
 | 
						|
#define R_AVR32_GOT32		10
 | 
						|
#define R_AVR32_GOT16		11
 | 
						|
#define R_AVR32_GOT8		12
 | 
						|
#define R_AVR32_21S		13
 | 
						|
#define R_AVR32_16U		14
 | 
						|
#define R_AVR32_16S		15
 | 
						|
#define R_AVR32_8S		16
 | 
						|
#define R_AVR32_8S_EXT		17
 | 
						|
#define R_AVR32_22H_PCREL	18
 | 
						|
#define R_AVR32_18W_PCREL	19
 | 
						|
#define R_AVR32_16B_PCREL	20
 | 
						|
#define R_AVR32_16N_PCREL	21
 | 
						|
#define R_AVR32_14UW_PCREL	22
 | 
						|
#define R_AVR32_11H_PCREL	23
 | 
						|
#define R_AVR32_10UW_PCREL	24
 | 
						|
#define R_AVR32_9H_PCREL	25
 | 
						|
#define R_AVR32_9UW_PCREL	26
 | 
						|
#define R_AVR32_HI16		27
 | 
						|
#define R_AVR32_LO16		28
 | 
						|
#define R_AVR32_GOTPC		29
 | 
						|
#define R_AVR32_GOTCALL		30
 | 
						|
#define R_AVR32_LDA_GOT		31
 | 
						|
#define R_AVR32_GOT21S		32
 | 
						|
#define R_AVR32_GOT18SW		33
 | 
						|
#define R_AVR32_GOT16S		34
 | 
						|
#define R_AVR32_GOT7UW		35
 | 
						|
#define R_AVR32_32_CPENT	36
 | 
						|
#define R_AVR32_CPCALL		37
 | 
						|
#define R_AVR32_16_CP		38
 | 
						|
#define R_AVR32_9W_CP		39
 | 
						|
#define R_AVR32_RELATIVE	40
 | 
						|
#define R_AVR32_GLOB_DAT	41
 | 
						|
#define R_AVR32_JMP_SLOT	42
 | 
						|
#define R_AVR32_ALIGN		43
 | 
						|
 | 
						|
/*
 | 
						|
 * ELF register definitions..
 | 
						|
 */
 | 
						|
 | 
						|
#include <asm/ptrace.h>
 | 
						|
#include <asm/user.h>
 | 
						|
 | 
						|
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_fpu_struct elf_fpregset_t;
 | 
						|
 | 
						|
/*
 | 
						|
 * This is used to ensure we don't load something for the wrong architecture.
 | 
						|
 */
 | 
						|
#define elf_check_arch(x) ( (x)->e_machine == EM_AVR32 )
 | 
						|
 | 
						|
/*
 | 
						|
 * These are used to set parameters in the core dumps.
 | 
						|
 */
 | 
						|
#define ELF_CLASS	ELFCLASS32
 | 
						|
#ifdef __LITTLE_ENDIAN__
 | 
						|
#define ELF_DATA	ELFDATA2LSB
 | 
						|
#else
 | 
						|
#define ELF_DATA	ELFDATA2MSB
 | 
						|
#endif
 | 
						|
#define ELF_ARCH	EM_AVR32
 | 
						|
 | 
						|
#define USE_ELF_CORE_DUMP
 | 
						|
#define ELF_EXEC_PAGESIZE	4096
 | 
						|
 | 
						|
/* 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         (2 * TASK_SIZE / 3)
 | 
						|
 | 
						|
 | 
						|
/* This yields a mask that user programs can use to figure out what
 | 
						|
   instruction set this CPU supports.  This could be done in user space,
 | 
						|
   but it's not easy, and we've already done it here.  */
 | 
						|
 | 
						|
#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.
 | 
						|
 | 
						|
   For the moment, we have only optimizations for the Intel generations,
 | 
						|
   but that could change... */
 | 
						|
 | 
						|
#define ELF_PLATFORM  (NULL)
 | 
						|
 | 
						|
#define SET_PERSONALITY(ex) set_personality(PER_LINUX_32BIT)
 | 
						|
 | 
						|
#endif /* __ASM_AVR32_ELF_H */
 |