1
2 #ifndef __ASMm68k_ELF_H
3 #define __ASMm68k_ELF_H
4
5
6
7
8
9 #include <asm/ptrace.h>
10 #include <asm/user.h>
11
12
13
14
15 #define R_68K_NONE 0
16 #define R_68K_32 1
17 #define R_68K_16 2
18 #define R_68K_8 3
19 #define R_68K_PC32 4
20 #define R_68K_PC16 5
21 #define R_68K_PC8 6
22 #define R_68K_GOT32 7
23 #define R_68K_GOT16 8
24 #define R_68K_GOT8 9
25 #define R_68K_GOT32O 10
26 #define R_68K_GOT16O 11
27 #define R_68K_GOT8O 12
28 #define R_68K_PLT32 13
29 #define R_68K_PLT16 14
30 #define R_68K_PLT8 15
31 #define R_68K_PLT32O 16
32 #define R_68K_PLT16O 17
33 #define R_68K_PLT8O 18
34 #define R_68K_COPY 19
35 #define R_68K_GLOB_DAT 20
36 #define R_68K_JMP_SLOT 21
37 #define R_68K_RELATIVE 22
38
39 typedef unsigned long elf_greg_t;
40
41 #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
42 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
43
44 typedef struct user_m68kfp_struct elf_fpregset_t;
45
46
47
48
49 #define elf_check_arch(x) ((x)->e_machine == EM_68K)
50
51
52
53
54 #define ELF_CLASS ELFCLASS32
55 #define ELF_DATA ELFDATA2MSB
56 #define ELF_ARCH EM_68K
57
58
59
60
61 #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0
62
63 #if defined(CONFIG_SUN3) || defined(CONFIG_COLDFIRE)
64 #define ELF_EXEC_PAGESIZE 8192
65 #else
66 #define ELF_EXEC_PAGESIZE 4096
67 #endif
68
69
70
71
72
73
74 #ifndef CONFIG_SUN3
75 #define ELF_ET_DYN_BASE 0xD0000000UL
76 #else
77 #define ELF_ET_DYN_BASE 0x0D800000UL
78 #endif
79
80 #define ELF_CORE_COPY_REGS(pr_reg, regs) \
81 \
82 pr_reg[0] = regs->d1; \
83 pr_reg[1] = regs->d2; \
84 pr_reg[2] = regs->d3; \
85 pr_reg[3] = regs->d4; \
86 pr_reg[4] = regs->d5; \
87 pr_reg[7] = regs->a0; \
88 pr_reg[8] = regs->a1; \
89 pr_reg[9] = regs->a2; \
90 pr_reg[14] = regs->d0; \
91 pr_reg[15] = rdusp(); \
92 pr_reg[16] = regs->orig_d0; \
93 pr_reg[17] = regs->sr; \
94 pr_reg[18] = regs->pc; \
95 pr_reg[19] = (regs->format << 12) | regs->vector; \
96 { \
97 struct switch_stack *sw = ((struct switch_stack *)regs) - 1; \
98 pr_reg[5] = sw->d6; \
99 pr_reg[6] = sw->d7; \
100 pr_reg[10] = sw->a3; \
101 pr_reg[11] = sw->a4; \
102 pr_reg[12] = sw->a5; \
103 pr_reg[13] = sw->a6; \
104 }
105
106
107
108
109 #define ELF_HWCAP (0)
110
111
112
113
114
115 #define ELF_PLATFORM (NULL)
116
117 #endif