1#ifndef __ASM_AVR32_ELF_H 2#define __ASM_AVR32_ELF_H 3 4/* AVR32 relocation numbers */ 5#define R_AVR32_NONE 0 6#define R_AVR32_32 1 7#define R_AVR32_16 2 8#define R_AVR32_8 3 9#define R_AVR32_32_PCREL 4 10#define R_AVR32_16_PCREL 5 11#define R_AVR32_8_PCREL 6 12#define R_AVR32_DIFF32 7 13#define R_AVR32_DIFF16 8 14#define R_AVR32_DIFF8 9 15#define R_AVR32_GOT32 10 16#define R_AVR32_GOT16 11 17#define R_AVR32_GOT8 12 18#define R_AVR32_21S 13 19#define R_AVR32_16U 14 20#define R_AVR32_16S 15 21#define R_AVR32_8S 16 22#define R_AVR32_8S_EXT 17 23#define R_AVR32_22H_PCREL 18 24#define R_AVR32_18W_PCREL 19 25#define R_AVR32_16B_PCREL 20 26#define R_AVR32_16N_PCREL 21 27#define R_AVR32_14UW_PCREL 22 28#define R_AVR32_11H_PCREL 23 29#define R_AVR32_10UW_PCREL 24 30#define R_AVR32_9H_PCREL 25 31#define R_AVR32_9UW_PCREL 26 32#define R_AVR32_HI16 27 33#define R_AVR32_LO16 28 34#define R_AVR32_GOTPC 29 35#define R_AVR32_GOTCALL 30 36#define R_AVR32_LDA_GOT 31 37#define R_AVR32_GOT21S 32 38#define R_AVR32_GOT18SW 33 39#define R_AVR32_GOT16S 34 40#define R_AVR32_GOT7UW 35 41#define R_AVR32_32_CPENT 36 42#define R_AVR32_CPCALL 37 43#define R_AVR32_16_CP 38 44#define R_AVR32_9W_CP 39 45#define R_AVR32_RELATIVE 40 46#define R_AVR32_GLOB_DAT 41 47#define R_AVR32_JMP_SLOT 42 48#define R_AVR32_ALIGN 43 49 50/* 51 * ELF register definitions.. 52 */ 53 54#include <asm/ptrace.h> 55#include <asm/user.h> 56 57typedef unsigned long elf_greg_t; 58 59#define ELF_NGREG (sizeof (struct pt_regs) / sizeof (elf_greg_t)) 60typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 61 62typedef struct user_fpu_struct elf_fpregset_t; 63 64/* 65 * This is used to ensure we don't load something for the wrong architecture. 66 */ 67#define elf_check_arch(x) ( (x)->e_machine == EM_AVR32 ) 68 69/* 70 * These are used to set parameters in the core dumps. 71 */ 72#define ELF_CLASS ELFCLASS32 73#ifdef __LITTLE_ENDIAN__ 74#define ELF_DATA ELFDATA2LSB 75#else 76#define ELF_DATA ELFDATA2MSB 77#endif 78#define ELF_ARCH EM_AVR32 79 80#define ELF_EXEC_PAGESIZE 4096 81 82/* This is the location that an ET_DYN program is loaded if exec'ed. Typical 83 use of this is to invoke "./ld.so someprog" to test out a new version of 84 the loader. We need to make sure that it is out of the way of the program 85 that it will "exec", and that there is sufficient room for the brk. */ 86 87#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) 88 89 90/* This yields a mask that user programs can use to figure out what 91 instruction set this CPU supports. This could be done in user space, 92 but it's not easy, and we've already done it here. */ 93 94#define ELF_HWCAP (0) 95 96/* This yields a string that ld.so will use to load implementation 97 specific libraries for optimization. This is more specific in 98 intent than poking at uname or /proc/cpuinfo. 99 100 For the moment, we have only optimizations for the Intel generations, 101 but that could change... */ 102 103#define ELF_PLATFORM (NULL) 104 105#endif /* __ASM_AVR32_ELF_H */ 106