1 /* SPDX-License-Identifier: GPL-2.0 */ 1 2 #ifndef __ASMm68k_ELF_H 3 #define __ASMm68k_ELF_H 4 5 /* 6 * ELF register definitions.. 7 */ 8 9 #include <asm/ptrace.h> 10 #include <asm/user.h> 11 12 /* 13 * 68k ELF relocation types 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_str 42 typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 43 44 typedef struct user_m68kfp_struct elf_fpregset 45 46 /* 47 * This is used to ensure we don't load someth 48 */ 49 #define elf_check_arch(x) ((x)->e_machine == E 50 51 /* 52 * These are used to set parameters in the cor 53 */ 54 #define ELF_CLASS ELFCLASS32 55 #define ELF_DATA ELFDATA2MSB 56 #define ELF_ARCH EM_68K 57 58 /* For SVR4/m68k the function pointer to be re 59 passed in %a1. Although my copy of the ABI 60 is actually used on ASV. */ 61 #define ELF_PLAT_INIT(_r, load_addr) _r->a1 62 63 #define ELF_FDPIC_PLAT_INIT(_r, _exec_map_addr 64 do { \ 65 (_r)->d3 = _exec_map_addr; \ 66 (_r)->d4 = _interp_map_addr; \ 67 (_r)->d5 = dynamic_addr; \ 68 } while(0) 69 70 #if defined(CONFIG_SUN3) || defined(CONFIG_COL 71 #define ELF_EXEC_PAGESIZE 8192 72 #else 73 #define ELF_EXEC_PAGESIZE 4096 74 #endif 75 76 /* This is the location that an ET_DYN program 77 use of this is to invoke "./ld.so someprog" 78 the loader. We need to make sure that it i 79 that it will "exec", and that there is suff 80 81 #ifndef CONFIG_SUN3 82 #define ELF_ET_DYN_BASE 0xD0000000UL 83 #else 84 #define ELF_ET_DYN_BASE 0x0D800000UL 85 #endif 86 87 #define ELF_CORE_COPY_REGS(pr_reg, regs) 88 /* Bleech. */ 89 pr_reg[0] = regs->d1; 90 pr_reg[1] = regs->d2; 91 pr_reg[2] = regs->d3; 92 pr_reg[3] = regs->d4; 93 pr_reg[4] = regs->d5; 94 pr_reg[7] = regs->a0; 95 pr_reg[8] = regs->a1; 96 pr_reg[9] = regs->a2; 97 pr_reg[14] = regs->d0; 98 pr_reg[15] = rdusp(); 99 pr_reg[16] = regs->orig_d0; 100 pr_reg[17] = regs->sr; 101 pr_reg[18] = regs->pc; 102 pr_reg[19] = (regs->format << 12) | re 103 { 104 struct switch_stack *sw = ((struct s 105 pr_reg[5] = sw->d6; 106 pr_reg[6] = sw->d7; 107 pr_reg[10] = sw->a3; 108 pr_reg[11] = sw->a4; 109 pr_reg[12] = sw->a5; 110 pr_reg[13] = sw->a6; 111 } 112 113 /* This yields a mask that user programs can u 114 instruction set this cpu supports. */ 115 116 #define ELF_HWCAP (0) 117 118 /* This yields a string that ld.so will use to 119 specific libraries for optimization. This 120 intent than poking at uname or /proc/cpuinf 121 122 #define ELF_PLATFORM (NULL) 123 124 #define ELF_FDPIC_CORE_EFLAGS 0 125 126 #endif 127
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.