elf.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _ASM_IA64_ELF_H
  2. #define _ASM_IA64_ELF_H
  3. /*
  4.  * ELF archtecture specific definitions.
  5.  *
  6.  * Copyright (C) 1998, 1999 Hewlett-Packard Co
  7.  * Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com>
  8.  */
  9. #include <asm/fpu.h>
  10. #include <asm/page.h>
  11. /*
  12.  * This is used to ensure we don't load something for the wrong architecture.
  13.  */
  14. #define elf_check_arch(x) ((x)->e_machine == EM_IA_64)
  15. /*
  16.  * These are used to set parameters in the core dumps.
  17.  */
  18. #define ELF_CLASS ELFCLASS64
  19. #define ELF_DATA ELFDATA2LSB
  20. #define ELF_ARCH EM_IA_64
  21. #define USE_ELF_CORE_DUMP
  22. /* always align to 64KB to allow for future page sizes of up to 64KB: */
  23. #define ELF_EXEC_PAGESIZE PAGE_SIZE
  24. /*
  25.  * This is the location that an ET_DYN program is loaded if exec'ed.
  26.  * Typical use of this is to invoke "./ld.so someprog" to test out a
  27.  * new version of the loader.  We need to make sure that it is out of
  28.  * the way of the program that it will "exec", and that there is
  29.  * sufficient room for the brk.
  30.  */
  31. #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
  32. /*
  33.  * We use (abuse?) this macro to insert the (empty) vm_area that is
  34.  * used to map the register backing store.  I don't see any better
  35.  * place to do this, but we should discuss this with Linus once we can
  36.  * talk to him...
  37.  */
  38. extern void ia64_init_addr_space (void);
  39. #define ELF_PLAT_INIT(_r) ia64_init_addr_space()
  40. /* ELF register definitions.  This is needed for core dump support.  */
  41. /*
  42.  * elf_gregset_t contains the application-level state in the following order:
  43.  * r0-r31
  44.  * NaT bits (for r0-r31; bit N == 1 iff rN is a NaT)
  45.  * predicate registers (p0-p63)
  46.  * b0-b7
  47.  * ip cfm psr
  48.  * ar.rsc ar.bsp ar.bspstore ar.rnat
  49.  * ar.ccv ar.unat ar.fpsr ar.pfs ar.lc ar.ec
  50.  */
  51. #define ELF_NGREG 128 /* we really need just 72 but let's leave some headroom... */
  52. #define ELF_NFPREG 128 /* f0 and f1 could be omitted, but so what... */
  53. typedef unsigned long elf_greg_t;
  54. typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  55. typedef struct ia64_fpreg elf_fpreg_t;
  56. typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
  57. struct pt_regs; /* forward declaration... */
  58. extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst);
  59. #define ELF_CORE_COPY_REGS(_dest,_regs) ia64_elf_core_copy_regs(_regs, _dest);
  60. /* This macro yields a bitmask that programs can use to figure out
  61.    what instruction set this CPU supports.  */
  62. #define ELF_HWCAP  0
  63. /* This macro yields a string that ld.so will use to load
  64.    implementation specific libraries for optimization.  Not terribly
  65.    relevant until we have real hardware to play with... */
  66. #define ELF_PLATFORM 0
  67. #ifdef __KERNEL__
  68. #define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
  69. #endif
  70. #endif /* _ASM_IA64_ELF_H */