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-sh / elf.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.5 KB  |  123 lines

  1. #ifndef __ASM_SH_ELF_H
  2. #define __ASM_SH_ELF_H
  3.  
  4. /* SH relocation types  */
  5. #define    R_SH_NONE        0
  6. #define    R_SH_DIR32        1
  7. #define    R_SH_REL32        2
  8. #define    R_SH_DIR8WPN        3
  9. #define    R_SH_IND12W        4
  10. #define    R_SH_DIR8WPL        5
  11. #define    R_SH_DIR8WPZ        6
  12. #define    R_SH_DIR8BP        7
  13. #define    R_SH_DIR8W        8
  14. #define    R_SH_DIR8L        9
  15. #define    R_SH_SWITCH16        25
  16. #define    R_SH_SWITCH32        26
  17. #define    R_SH_USES        27
  18. #define    R_SH_COUNT        28
  19. #define    R_SH_ALIGN        29
  20. #define    R_SH_CODE        30
  21. #define    R_SH_DATA        31
  22. #define    R_SH_LABEL        32
  23. #define    R_SH_SWITCH8        33
  24. #define    R_SH_GNU_VTINHERIT    34
  25. #define    R_SH_GNU_VTENTRY    35
  26. #define    R_SH_TLS_GD_32        144
  27. #define    R_SH_TLS_LD_32        145
  28. #define    R_SH_TLS_LDO_32        146
  29. #define    R_SH_TLS_IE_32        147
  30. #define    R_SH_TLS_LE_32        148
  31. #define    R_SH_TLS_DTPMOD32    149
  32. #define    R_SH_TLS_DTPOFF32    150
  33. #define    R_SH_TLS_TPOFF32    151
  34. #define    R_SH_GOT32        160
  35. #define    R_SH_PLT32        161
  36. #define    R_SH_COPY        162
  37. #define    R_SH_GLOB_DAT        163
  38. #define    R_SH_JMP_SLOT        164
  39. #define    R_SH_RELATIVE        165
  40. #define    R_SH_GOTOFF        166
  41. #define    R_SH_GOTPC        167
  42. /* Keep this the last entry.  */
  43. #define    R_SH_NUM        256
  44.  
  45. /*
  46.  * ELF register definitions..
  47.  */
  48.  
  49. #include <asm/ptrace.h>
  50. #include <asm/user.h>
  51.  
  52. typedef unsigned long elf_greg_t;
  53.  
  54. #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
  55. typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  56.  
  57. typedef struct user_fpu_struct elf_fpregset_t;
  58.  
  59. /*
  60.  * This is used to ensure we don't load something for the wrong architecture.
  61.  */
  62. #define elf_check_arch(x) ( (x)->e_machine == EM_SH )
  63.  
  64. /*
  65.  * These are used to set parameters in the core dumps.
  66.  */
  67. #define ELF_CLASS    ELFCLASS32
  68. #ifdef __LITTLE_ENDIAN__
  69. #define ELF_DATA    ELFDATA2LSB
  70. #else
  71. #define ELF_DATA    ELFDATA2MSB
  72. #endif
  73. #define ELF_ARCH    EM_SH
  74.  
  75. #define USE_ELF_CORE_DUMP
  76. #define ELF_EXEC_PAGESIZE    4096
  77.  
  78. /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
  79.    use of this is to invoke "./ld.so someprog" to test out a new version of
  80.    the loader.  We need to make sure that it is out of the way of the program
  81.    that it will "exec", and that there is sufficient room for the brk.  */
  82.  
  83. #define ELF_ET_DYN_BASE         (2 * TASK_SIZE / 3)
  84.  
  85.  
  86. #define ELF_CORE_COPY_REGS(_dest,_regs)                \
  87.     memcpy((char *) &_dest, (char *) _regs,            \
  88.            sizeof(struct pt_regs));
  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. #define ELF_PLAT_INIT(_r, load_addr) \
  106.   do { _r->regs[0]=0; _r->regs[1]=0; _r->regs[2]=0; _r->regs[3]=0; \
  107.        _r->regs[4]=0; _r->regs[5]=0; _r->regs[6]=0; _r->regs[7]=0; \
  108.        _r->regs[8]=0; _r->regs[9]=0; _r->regs[10]=0; _r->regs[11]=0; \
  109.        _r->regs[12]=0; _r->regs[13]=0; _r->regs[14]=0; \
  110.        _r->sr = SR_FD; } while (0)
  111.  
  112. #ifdef __KERNEL__
  113. #define SET_PERSONALITY(ex, ibcs2) set_personality(PER_LINUX_32BIT)
  114. struct task_struct;
  115. extern int dump_task_regs (struct task_struct *, elf_gregset_t *);
  116. extern int dump_task_fpu (struct task_struct *, elf_fpregset_t *);
  117.  
  118. #define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk, elf_regs)
  119. #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs)
  120. #endif
  121.  
  122. #endif /* __ASM_SH_ELF_H */
  123.