1
2#ifndef __ASM_METAG_ELF_H
3#define __ASM_METAG_ELF_H
4
5#define EM_METAG 174
6
7
8#define R_METAG_HIADDR16 0
9#define R_METAG_LOADDR16 1
10#define R_METAG_ADDR32 2
11#define R_METAG_NONE 3
12#define R_METAG_RELBRANCH 4
13#define R_METAG_GETSETOFF 5
14
15
16#define R_METAG_REG32OP1 6
17#define R_METAG_REG32OP2 7
18#define R_METAG_REG32OP3 8
19#define R_METAG_REG16OP1 9
20#define R_METAG_REG16OP2 10
21#define R_METAG_REG16OP3 11
22#define R_METAG_REG32OP4 12
23
24#define R_METAG_HIOG 13
25#define R_METAG_LOOG 14
26
27
28#define R_METAG_GNU_VTINHERIT 30
29#define R_METAG_GNU_VTENTRY 31
30
31
32#define R_METAG_HI16_GOTOFF 32
33#define R_METAG_LO16_GOTOFF 33
34#define R_METAG_GETSET_GOTOFF 34
35#define R_METAG_GETSET_GOT 35
36#define R_METAG_HI16_GOTPC 36
37#define R_METAG_LO16_GOTPC 37
38#define R_METAG_HI16_PLT 38
39#define R_METAG_LO16_PLT 39
40#define R_METAG_RELBRANCH_PLT 40
41#define R_METAG_GOTOFF 41
42#define R_METAG_PLT 42
43#define R_METAG_COPY 43
44#define R_METAG_JMP_SLOT 44
45#define R_METAG_RELATIVE 45
46#define R_METAG_GLOB_DAT 46
47
48
49
50
51
52#include <asm/page.h>
53#include <asm/processor.h>
54#include <asm/ptrace.h>
55#include <asm/user.h>
56
57typedef unsigned long elf_greg_t;
58
59#define ELF_NGREG (sizeof(struct user_gp_regs) / sizeof(elf_greg_t))
60typedef elf_greg_t elf_gregset_t[ELF_NGREG];
61
62typedef unsigned long elf_fpregset_t;
63
64
65
66
67#define elf_check_arch(x) ((x)->e_machine == EM_METAG)
68
69
70
71
72#define ELF_CLASS ELFCLASS32
73#define ELF_DATA ELFDATA2LSB
74#define ELF_ARCH EM_METAG
75
76#define ELF_PLAT_INIT(_r, load_addr) \
77 do { _r->ctx.AX[0].U0 = 0; } while (0)
78
79#define USE_ELF_CORE_DUMP
80#define CORE_DUMP_USE_REGSET
81#define ELF_EXEC_PAGESIZE PAGE_SIZE
82
83
84
85
86
87
88#define ELF_ET_DYN_BASE 0x08000000UL
89
90#define ELF_CORE_COPY_REGS(_dest, _regs) \
91 memcpy((char *)&_dest, (char *)_regs, sizeof(struct pt_regs));
92
93
94
95
96#define ELF_HWCAP (0)
97
98
99
100
101
102#define ELF_PLATFORM (NULL)
103
104#define STACK_RND_MASK (0)
105
106#ifdef CONFIG_METAG_USER_TCM
107
108struct elf32_phdr;
109struct file;
110
111unsigned long __metag_elf_map(struct file *filep, unsigned long addr,
112 struct elf32_phdr *eppnt, int prot, int type,
113 unsigned long total_size);
114
115static inline unsigned long metag_elf_map(struct file *filep,
116 unsigned long addr,
117 struct elf32_phdr *eppnt, int prot,
118 int type, unsigned long total_size)
119{
120 return __metag_elf_map(filep, addr, eppnt, prot, type, total_size);
121}
122#define elf_map metag_elf_map
123
124#endif
125
126#endif
127