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