Commit | Line | Data |
---|---|---|
3be80aae VG |
1 | /* |
2 | * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or modify | |
5 | * it under the terms of the GNU General Public License version 2 as | |
6 | * published by the Free Software Foundation. | |
7 | */ | |
8 | ||
9 | #ifndef __ASM_ARC_ELF_H | |
10 | #define __ASM_ARC_ELF_H | |
11 | ||
8ccfe667 VG |
12 | #include <linux/types.h> |
13 | #include <uapi/asm/elf.h> | |
3be80aae | 14 | |
8ccfe667 | 15 | /* These ELF defines belong to uapi but libc elf.h already defines them */ |
3be80aae VG |
16 | #define EM_ARCOMPACT 93 |
17 | ||
1f6ccfff VG |
18 | #define EM_ARCV2 195 /* ARCv2 Cores */ |
19 | ||
20 | #define EM_ARC_INUSE (IS_ENABLED(CONFIG_ISA_ARCOMPACT) ? \ | |
21 | EM_ARCOMPACT : EM_ARCV2) | |
22 | ||
3be80aae VG |
23 | /* ARC Relocations (kernel Modules only) */ |
24 | #define R_ARC_32 0x4 | |
25 | #define R_ARC_32_ME 0x1B | |
26 | #define R_ARC_S25H_PCREL 0x10 | |
27 | #define R_ARC_S25W_PCREL 0x11 | |
28 | ||
8ccfe667 VG |
29 | /*to set parameters in the core dumps */ |
30 | #define ELF_ARCH EM_ARCOMPACT | |
31 | #define ELF_CLASS ELFCLASS32 | |
3be80aae | 32 | |
8ccfe667 VG |
33 | #ifdef CONFIG_CPU_BIG_ENDIAN |
34 | #define ELF_DATA ELFDATA2MSB | |
35 | #else | |
36 | #define ELF_DATA ELFDATA2LSB | |
37 | #endif | |
3be80aae VG |
38 | |
39 | /* | |
40 | * To ensure that | |
41 | * -we don't load something for the wrong architecture. | |
42 | * -The userspace is using the correct syscall ABI | |
43 | */ | |
44 | struct elf32_hdr; | |
45 | extern int elf_check_arch(const struct elf32_hdr *); | |
46 | #define elf_check_arch elf_check_arch | |
47 | ||
3be80aae VG |
48 | #define CORE_DUMP_USE_REGSET |
49 | ||
50 | #define ELF_EXEC_PAGESIZE PAGE_SIZE | |
51 | ||
52 | /* | |
53 | * This is the location that an ET_DYN program is loaded if exec'ed. Typical | |
54 | * use of this is to invoke "./ld.so someprog" to test out a new version of | |
55 | * the loader. We need to make sure that it is out of the way of the program | |
56 | * that it will "exec", and that there is sufficient room for the brk. | |
57 | */ | |
58 | #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) | |
59 | ||
60 | /* | |
61 | * When the program starts, a1 contains a pointer to a function to be | |
62 | * registered with atexit, as per the SVR4 ABI. A value of 0 means we | |
63 | * have no such handler. | |
64 | */ | |
65 | #define ELF_PLAT_INIT(_r, load_addr) ((_r)->r0 = 0) | |
66 | ||
67 | /* | |
68 | * This yields a mask that user programs can use to figure out what | |
69 | * instruction set this cpu supports. | |
70 | */ | |
71 | #define ELF_HWCAP (0) | |
72 | ||
73 | /* | |
74 | * This yields a string that ld.so will use to load implementation | |
75 | * specific libraries for optimization. This is more specific in | |
76 | * intent than poking at uname or /proc/cpuinfo. | |
77 | */ | |
78 | #define ELF_PLATFORM (NULL) | |
79 | ||
3be80aae | 80 | #endif |