Logo Search packages:      
Sourcecode: linux version File versions  Download package

elf.h

#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 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 */

Generated by  Doxygen 1.6.0   Back to index