Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

m68k: use mmu version of elf.h for non-mmu builds as well

Nothing specificly needed to support non-mmu m68k in elf.h,
so just use the mmu one.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>

+117 -232
+117 -3
arch/m68k/include/asm/elf.h
··· 1 - #ifdef __uClinux__ 2 - #include "elf_no.h" 1 + #ifndef __ASMm68k_ELF_H 2 + #define __ASMm68k_ELF_H 3 + 4 + /* 5 + * ELF register definitions.. 6 + */ 7 + 8 + #include <asm/ptrace.h> 9 + #include <asm/user.h> 10 + 11 + /* 12 + * 68k ELF relocation types 13 + */ 14 + #define R_68K_NONE 0 15 + #define R_68K_32 1 16 + #define R_68K_16 2 17 + #define R_68K_8 3 18 + #define R_68K_PC32 4 19 + #define R_68K_PC16 5 20 + #define R_68K_PC8 6 21 + #define R_68K_GOT32 7 22 + #define R_68K_GOT16 8 23 + #define R_68K_GOT8 9 24 + #define R_68K_GOT32O 10 25 + #define R_68K_GOT16O 11 26 + #define R_68K_GOT8O 12 27 + #define R_68K_PLT32 13 28 + #define R_68K_PLT16 14 29 + #define R_68K_PLT8 15 30 + #define R_68K_PLT32O 16 31 + #define R_68K_PLT16O 17 32 + #define R_68K_PLT8O 18 33 + #define R_68K_COPY 19 34 + #define R_68K_GLOB_DAT 20 35 + #define R_68K_JMP_SLOT 21 36 + #define R_68K_RELATIVE 22 37 + 38 + typedef unsigned long elf_greg_t; 39 + 40 + #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) 41 + typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 42 + 43 + typedef struct user_m68kfp_struct elf_fpregset_t; 44 + 45 + /* 46 + * This is used to ensure we don't load something for the wrong architecture. 47 + */ 48 + #define elf_check_arch(x) ((x)->e_machine == EM_68K) 49 + 50 + /* 51 + * These are used to set parameters in the core dumps. 52 + */ 53 + #define ELF_CLASS ELFCLASS32 54 + #define ELF_DATA ELFDATA2MSB 55 + #define ELF_ARCH EM_68K 56 + 57 + /* For SVR4/m68k the function pointer to be registered with `atexit' is 58 + passed in %a1. Although my copy of the ABI has no such statement, it 59 + is actually used on ASV. */ 60 + #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0 61 + 62 + #define USE_ELF_CORE_DUMP 63 + #ifndef CONFIG_SUN3 64 + #define ELF_EXEC_PAGESIZE 4096 3 65 #else 4 - #include "elf_mm.h" 66 + #define ELF_EXEC_PAGESIZE 8192 67 + #endif 68 + 69 + /* This is the location that an ET_DYN program is loaded if exec'ed. Typical 70 + use of this is to invoke "./ld.so someprog" to test out a new version of 71 + the loader. We need to make sure that it is out of the way of the program 72 + that it will "exec", and that there is sufficient room for the brk. */ 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 + /* Bleech. */ \ 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 + /* This yields a mask that user programs can use to figure out what 107 + instruction set this cpu supports. */ 108 + 109 + #define ELF_HWCAP (0) 110 + 111 + /* This yields a string that ld.so will use to load implementation 112 + specific libraries for optimization. This is more specific in 113 + intent than poking at uname or /proc/cpuinfo. */ 114 + 115 + #define ELF_PLATFORM (NULL) 116 + 117 + #define SET_PERSONALITY(ex) set_personality(PER_LINUX) 118 + 5 119 #endif
-119
arch/m68k/include/asm/elf_mm.h
··· 1 - #ifndef __ASMm68k_ELF_H 2 - #define __ASMm68k_ELF_H 3 - 4 - /* 5 - * ELF register definitions.. 6 - */ 7 - 8 - #include <asm/ptrace.h> 9 - #include <asm/user.h> 10 - 11 - /* 12 - * 68k ELF relocation types 13 - */ 14 - #define R_68K_NONE 0 15 - #define R_68K_32 1 16 - #define R_68K_16 2 17 - #define R_68K_8 3 18 - #define R_68K_PC32 4 19 - #define R_68K_PC16 5 20 - #define R_68K_PC8 6 21 - #define R_68K_GOT32 7 22 - #define R_68K_GOT16 8 23 - #define R_68K_GOT8 9 24 - #define R_68K_GOT32O 10 25 - #define R_68K_GOT16O 11 26 - #define R_68K_GOT8O 12 27 - #define R_68K_PLT32 13 28 - #define R_68K_PLT16 14 29 - #define R_68K_PLT8 15 30 - #define R_68K_PLT32O 16 31 - #define R_68K_PLT16O 17 32 - #define R_68K_PLT8O 18 33 - #define R_68K_COPY 19 34 - #define R_68K_GLOB_DAT 20 35 - #define R_68K_JMP_SLOT 21 36 - #define R_68K_RELATIVE 22 37 - 38 - typedef unsigned long elf_greg_t; 39 - 40 - #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) 41 - typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 42 - 43 - typedef struct user_m68kfp_struct elf_fpregset_t; 44 - 45 - /* 46 - * This is used to ensure we don't load something for the wrong architecture. 47 - */ 48 - #define elf_check_arch(x) ((x)->e_machine == EM_68K) 49 - 50 - /* 51 - * These are used to set parameters in the core dumps. 52 - */ 53 - #define ELF_CLASS ELFCLASS32 54 - #define ELF_DATA ELFDATA2MSB 55 - #define ELF_ARCH EM_68K 56 - 57 - /* For SVR4/m68k the function pointer to be registered with `atexit' is 58 - passed in %a1. Although my copy of the ABI has no such statement, it 59 - is actually used on ASV. */ 60 - #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0 61 - 62 - #define USE_ELF_CORE_DUMP 63 - #ifndef CONFIG_SUN3 64 - #define ELF_EXEC_PAGESIZE 4096 65 - #else 66 - #define ELF_EXEC_PAGESIZE 8192 67 - #endif 68 - 69 - /* This is the location that an ET_DYN program is loaded if exec'ed. Typical 70 - use of this is to invoke "./ld.so someprog" to test out a new version of 71 - the loader. We need to make sure that it is out of the way of the program 72 - that it will "exec", and that there is sufficient room for the brk. */ 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 - /* Bleech. */ \ 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 - /* This yields a mask that user programs can use to figure out what 107 - instruction set this cpu supports. */ 108 - 109 - #define ELF_HWCAP (0) 110 - 111 - /* This yields a string that ld.so will use to load implementation 112 - specific libraries for optimization. This is more specific in 113 - intent than poking at uname or /proc/cpuinfo. */ 114 - 115 - #define ELF_PLATFORM (NULL) 116 - 117 - #define SET_PERSONALITY(ex) set_personality(PER_LINUX) 118 - 119 - #endif
-110
arch/m68k/include/asm/elf_no.h
··· 1 - #ifndef __ASMm68k_ELF_H 2 - #define __ASMm68k_ELF_H 3 - 4 - /* 5 - * ELF register definitions.. 6 - */ 7 - 8 - #include <asm/ptrace.h> 9 - #include <asm/user.h> 10 - 11 - /* 12 - * 68k ELF relocation types 13 - */ 14 - #define R_68K_NONE 0 15 - #define R_68K_32 1 16 - #define R_68K_16 2 17 - #define R_68K_8 3 18 - #define R_68K_PC32 4 19 - #define R_68K_PC16 5 20 - #define R_68K_PC8 6 21 - #define R_68K_GOT32 7 22 - #define R_68K_GOT16 8 23 - #define R_68K_GOT8 9 24 - #define R_68K_GOT32O 10 25 - #define R_68K_GOT16O 11 26 - #define R_68K_GOT8O 12 27 - #define R_68K_PLT32 13 28 - #define R_68K_PLT16 14 29 - #define R_68K_PLT8 15 30 - #define R_68K_PLT32O 16 31 - #define R_68K_PLT16O 17 32 - #define R_68K_PLT8O 18 33 - #define R_68K_COPY 19 34 - #define R_68K_GLOB_DAT 20 35 - #define R_68K_JMP_SLOT 21 36 - #define R_68K_RELATIVE 22 37 - 38 - typedef unsigned long elf_greg_t; 39 - 40 - #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) 41 - typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 42 - 43 - typedef struct user_m68kfp_struct elf_fpregset_t; 44 - 45 - /* 46 - * This is used to ensure we don't load something for the wrong architecture. 47 - */ 48 - #define elf_check_arch(x) ((x)->e_machine == EM_68K) 49 - 50 - /* 51 - * These are used to set parameters in the core dumps. 52 - */ 53 - #define ELF_CLASS ELFCLASS32 54 - #define ELF_DATA ELFDATA2MSB 55 - #define ELF_ARCH EM_68K 56 - 57 - /* For SVR4/m68k the function pointer to be registered with `atexit' is 58 - passed in %a1. Although my copy of the ABI has no such statement, it 59 - is actually used on ASV. */ 60 - #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0 61 - 62 - #define USE_ELF_CORE_DUMP 63 - #define ELF_EXEC_PAGESIZE 4096 64 - 65 - /* This is the location that an ET_DYN program is loaded if exec'ed. Typical 66 - use of this is to invoke "./ld.so someprog" to test out a new version of 67 - the loader. We need to make sure that it is out of the way of the program 68 - that it will "exec", and that there is sufficient room for the brk. */ 69 - 70 - #define ELF_ET_DYN_BASE 0xD0000000UL 71 - 72 - #define ELF_CORE_COPY_REGS(pr_reg, regs) \ 73 - /* Bleech. */ \ 74 - pr_reg[0] = regs->d1; \ 75 - pr_reg[1] = regs->d2; \ 76 - pr_reg[2] = regs->d3; \ 77 - pr_reg[3] = regs->d4; \ 78 - pr_reg[4] = regs->d5; \ 79 - pr_reg[7] = regs->a0; \ 80 - pr_reg[8] = regs->a1; \ 81 - pr_reg[14] = regs->d0; \ 82 - pr_reg[15] = rdusp(); \ 83 - pr_reg[16] = 0 /* regs->orig_d0 */; \ 84 - pr_reg[17] = regs->sr; \ 85 - pr_reg[18] = regs->pc; \ 86 - /* pr_reg[19] = (regs->format << 12) | regs->vector; */ \ 87 - { \ 88 - struct switch_stack *sw = ((struct switch_stack *)regs) - 1; \ 89 - pr_reg[5] = sw->d6; \ 90 - pr_reg[6] = sw->d7; \ 91 - pr_reg[10] = sw->a3; \ 92 - pr_reg[11] = sw->a4; \ 93 - pr_reg[12] = sw->a5; \ 94 - pr_reg[13] = sw->a6; \ 95 - } 96 - 97 - /* This yields a mask that user programs can use to figure out what 98 - instruction set this cpu supports. */ 99 - 100 - #define ELF_HWCAP (0) 101 - 102 - /* This yields a string that ld.so will use to load implementation 103 - specific libraries for optimization. This is more specific in 104 - intent than poking at uname or /proc/cpuinfo. */ 105 - 106 - #define ELF_PLATFORM (NULL) 107 - 108 - #define SET_PERSONALITY(ex) set_personality(PER_LINUX) 109 - 110 - #endif