1951a39d68df598db08dfced8b4707755864a0492Ying Wang/****************************************************************************
2951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
3951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
4951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   This header was automatically generated from a Linux kernel header
5951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   of the same name, to make information necessary for userspace to
6951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   call into the kernel available to libc.  It contains only constants,
7951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   structures, and macros generated from the original header, and thus,
8951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   contains no copyrightable information.
9951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
10951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/
12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef __ASMARM_ELF_H
13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __ASMARM_ELF_H
14951a39d68df598db08dfced8b4707755864a0492Ying Wang
15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/ptrace.h>
16951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/user.h>
17951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifdef __KERNEL
18951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/procinfo.h>
19951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
20951a39d68df598db08dfced8b4707755864a0492Ying Wang
21951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef unsigned long elf_greg_t;
22951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef unsigned long elf_freg_t[3];
23951a39d68df598db08dfced8b4707755864a0492Ying Wang
24951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EM_ARM 40
25951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EF_ARM_APCS26 0x08
26951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EF_ARM_SOFT_FLOAT 0x200
27951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EF_ARM_EABI_MASK 0xFF000000
28951a39d68df598db08dfced8b4707755864a0492Ying Wang
29951a39d68df598db08dfced8b4707755864a0492Ying Wang#define R_ARM_NONE 0
30951a39d68df598db08dfced8b4707755864a0492Ying Wang#define R_ARM_PC24 1
31951a39d68df598db08dfced8b4707755864a0492Ying Wang#define R_ARM_ABS32 2
32951a39d68df598db08dfced8b4707755864a0492Ying Wang#define R_ARM_CALL 28
33951a39d68df598db08dfced8b4707755864a0492Ying Wang#define R_ARM_JUMP24 29
34951a39d68df598db08dfced8b4707755864a0492Ying Wang
35951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
36951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef elf_greg_t elf_gregset_t[ELF_NGREG];
37951a39d68df598db08dfced8b4707755864a0492Ying Wang
38951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct user_fp elf_fpregset_t;
39951a39d68df598db08dfced8b4707755864a0492Ying Wang
40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elf_check_arch(x) ( ((x)->e_machine == EM_ARM) && (ELF_PROC_OK((x))) )
41951a39d68df598db08dfced8b4707755864a0492Ying Wang
42951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_CLASS ELFCLASS32
43951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifdef __ARMEB__
44951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_DATA ELFDATA2MSB
45951a39d68df598db08dfced8b4707755864a0492Ying Wang#else
46951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_DATA ELFDATA2LSB
47951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
48951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_ARCH EM_ARM
49951a39d68df598db08dfced8b4707755864a0492Ying Wang
50951a39d68df598db08dfced8b4707755864a0492Ying Wang#define USE_ELF_CORE_DUMP
51951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_EXEC_PAGESIZE 4096
52951a39d68df598db08dfced8b4707755864a0492Ying Wang
53951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
54951a39d68df598db08dfced8b4707755864a0492Ying Wang
55951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0
56951a39d68df598db08dfced8b4707755864a0492Ying Wang
57951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_HWCAP (elf_hwcap)
58951a39d68df598db08dfced8b4707755864a0492Ying Wang
59951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_PLATFORM_SIZE 8
60951a39d68df598db08dfced8b4707755864a0492Ying Wang
61951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_PLATFORM (elf_platform)
62951a39d68df598db08dfced8b4707755864a0492Ying Wang
63951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
64