home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-m32r / elf.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.7 KB  |  137 lines

  1. #ifndef _ASM_M32R__ELF_H
  2. #define _ASM_M32R__ELF_H
  3.  
  4. /*
  5.  * ELF-specific definitions.
  6.  *
  7.  * Copyright (C) 1999-2004, Renesas Technology Corp.
  8.  *      Hirokazu Takata <takata at linux-m32r.org>
  9.  */
  10.  
  11. #include <asm/ptrace.h>
  12. #include <asm/user.h>
  13. #include <asm/page.h>
  14.  
  15. /* M32R relocation types  */
  16. #define    R_M32R_NONE        0
  17. #define    R_M32R_16        1
  18. #define    R_M32R_32        2
  19. #define    R_M32R_24        3
  20. #define    R_M32R_10_PCREL        4
  21. #define    R_M32R_18_PCREL        5
  22. #define    R_M32R_26_PCREL        6
  23. #define    R_M32R_HI16_ULO        7
  24. #define    R_M32R_HI16_SLO        8
  25. #define    R_M32R_LO16        9
  26. #define    R_M32R_SDA16        10
  27. #define    R_M32R_GNU_VTINHERIT    11
  28. #define    R_M32R_GNU_VTENTRY    12
  29.  
  30. #define R_M32R_16_RELA        33
  31. #define R_M32R_32_RELA        34
  32. #define R_M32R_24_RELA        35
  33. #define R_M32R_10_PCREL_RELA    36
  34. #define R_M32R_18_PCREL_RELA    37
  35. #define R_M32R_26_PCREL_RELA    38
  36. #define R_M32R_HI16_ULO_RELA    39
  37. #define R_M32R_HI16_SLO_RELA    40
  38. #define R_M32R_LO16_RELA    41
  39. #define R_M32R_SDA16_RELA    42
  40. #define    R_M32R_RELA_GNU_VTINHERIT    43
  41. #define    R_M32R_RELA_GNU_VTENTRY    44
  42.  
  43. #define R_M32R_GOT24        48
  44. #define R_M32R_26_PLTREL    49
  45. #define R_M32R_COPY        50
  46. #define R_M32R_GLOB_DAT        51
  47. #define R_M32R_JMP_SLOT        52
  48. #define R_M32R_RELATIVE        53
  49. #define R_M32R_GOTOFF        54
  50. #define R_M32R_GOTPC24        55
  51. #define R_M32R_GOT16_HI_ULO    56
  52. #define R_M32R_GOT16_HI_SLO    57
  53. #define R_M32R_GOT16_LO        58
  54. #define R_M32R_GOTPC_HI_ULO    59
  55. #define R_M32R_GOTPC_HI_SLO    60
  56. #define R_M32R_GOTPC_LO        61
  57. #define R_M32R_GOTOFF_HI_ULO    62
  58. #define R_M32R_GOTOFF_HI_SLO    63
  59. #define R_M32R_GOTOFF_LO    64
  60.  
  61. #define R_M32R_NUM        256
  62.  
  63. /*
  64.  * ELF register definitions..
  65.  */
  66. #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
  67.  
  68. typedef unsigned long elf_greg_t;
  69. typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  70.  
  71. /* We have no FP mumumu.  */
  72. typedef double elf_fpreg_t;
  73. typedef elf_fpreg_t elf_fpregset_t;
  74.  
  75. /*
  76.  * This is used to ensure we don't load something for the wrong architecture.
  77.  */
  78. #define elf_check_arch(x) \
  79.     (((x)->e_machine == EM_M32R) || ((x)->e_machine == EM_CYGNUS_M32R))
  80.  
  81. /*
  82.  * These are used to set parameters in the core dumps.
  83.  */
  84. #define ELF_CLASS    ELFCLASS32
  85. #if defined(__LITTLE_ENDIAN)
  86. #define ELF_DATA    ELFDATA2LSB
  87. #elif defined(__BIG_ENDIAN)
  88. #define ELF_DATA    ELFDATA2MSB
  89. #else
  90. #error no endian defined
  91. #endif
  92. #define ELF_ARCH    EM_M32R
  93.  
  94. /* r0 is set by ld.so to a pointer to a function which might be
  95.  * registered using 'atexit'.  This provides a mean for the dynamic
  96.  * linker to call DT_FINI functions for shared libraries that have
  97.  * been loaded before the code runs.
  98.  *
  99.  * So that we can use the same startup file with static executables,
  100.  * we start programs with a value of 0 to indicate that there is no
  101.  * such function.
  102.  */
  103. #define ELF_PLAT_INIT(_r, load_addr)    (_r)->r0 = 0
  104.  
  105. #define USE_ELF_CORE_DUMP
  106. #define ELF_EXEC_PAGESIZE    PAGE_SIZE
  107.  
  108. /*
  109.  * This is the location that an ET_DYN program is loaded if exec'ed.
  110.  * Typical use of this is to invoke "./ld.so someprog" to test out a
  111.  * new version of the loader.  We need to make sure that it is out of
  112.  * the way of the program that it will "exec", and that there is
  113.  * sufficient room for the brk.
  114.  */
  115. #define ELF_ET_DYN_BASE         (TASK_SIZE / 3 * 2)
  116.  
  117. /* regs is struct pt_regs, pr_reg is elf_gregset_t (which is
  118.    now struct_user_regs, they are different) */
  119.  
  120. #define ELF_CORE_COPY_REGS(pr_reg, regs)  \
  121.     memcpy((char *)pr_reg, (char *)regs, sizeof (struct pt_regs));
  122.  
  123. /* This yields a mask that user programs can use to figure out what
  124.    instruction set this CPU supports.  */
  125. #define ELF_HWCAP    (0)
  126.  
  127. /* This yields a string that ld.so will use to load implementation
  128.    specific libraries for optimization.  This is more specific in
  129.    intent than poking at uname or /proc/cpuinfo.  */
  130. #define ELF_PLATFORM    (NULL)
  131.  
  132. #ifdef __KERNEL__
  133. #define SET_PERSONALITY(ex, ibcs2) set_personality(PER_LINUX)
  134. #endif
  135.  
  136. #endif  /* _ASM_M32R__ELF_H */
  137.