diff options
author | Michal Simek <monstr@monstr.eu> | 2009-05-26 10:30:30 -0400 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2009-05-26 10:45:23 -0400 |
commit | e57a221f15fd62921d845ddb37ce048fc7a38fd6 (patch) | |
tree | 72ea36759044a229adcf5ad419757a7b677a6710 /arch/microblaze | |
parent | dcffc1b29115cc26686b8ae62b587e63f0e139f0 (diff) |
microblaze_mmu_v2: Elf update
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze')
-rw-r--r-- | arch/microblaze/include/asm/elf.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/arch/microblaze/include/asm/elf.h b/arch/microblaze/include/asm/elf.h index 81337f241347..f92fc0dda006 100644 --- a/arch/microblaze/include/asm/elf.h +++ b/arch/microblaze/include/asm/elf.h | |||
@@ -1,4 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> | ||
3 | * Copyright (C) 2008-2009 PetaLogix | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | 4 | * Copyright (C) 2006 Atmark Techno, Inc. |
3 | * | 5 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 6 | * This file is subject to the terms and conditions of the GNU General Public |
@@ -27,4 +29,95 @@ | |||
27 | */ | 29 | */ |
28 | #define ELF_CLASS ELFCLASS32 | 30 | #define ELF_CLASS ELFCLASS32 |
29 | 31 | ||
32 | #ifndef __uClinux__ | ||
33 | |||
34 | /* | ||
35 | * ELF register definitions.. | ||
36 | */ | ||
37 | |||
38 | #include <asm/ptrace.h> | ||
39 | #include <asm/byteorder.h> | ||
40 | |||
41 | #ifndef ELF_GREG_T | ||
42 | #define ELF_GREG_T | ||
43 | typedef unsigned long elf_greg_t; | ||
44 | #endif | ||
45 | |||
46 | #ifndef ELF_NGREG | ||
47 | #define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t)) | ||
48 | #endif | ||
49 | |||
50 | #ifndef ELF_GREGSET_T | ||
51 | #define ELF_GREGSET_T | ||
52 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
53 | #endif | ||
54 | |||
55 | #ifndef ELF_FPREGSET_T | ||
56 | #define ELF_FPREGSET_T | ||
57 | |||
58 | /* TBD */ | ||
59 | #define ELF_NFPREG 33 /* includes fsr */ | ||
60 | typedef unsigned long elf_fpreg_t; | ||
61 | typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; | ||
62 | |||
63 | /* typedef struct user_fpu_struct elf_fpregset_t; */ | ||
64 | #endif | ||
65 | |||
66 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | ||
67 | * use of this is to invoke "./ld.so someprog" to test out a new version of | ||
68 | * the loader. We need to make sure that it is out of the way of the program | ||
69 | * that it will "exec", and that there is sufficient room for the brk. | ||
70 | */ | ||
71 | |||
72 | #define ELF_ET_DYN_BASE (0x08000000) | ||
73 | |||
74 | #ifdef __LITTLE_ENDIAN__ | ||
75 | #define ELF_DATA ELFDATA2LSB | ||
76 | #else | ||
77 | #define ELF_DATA ELFDATA2MSB | ||
78 | #endif | ||
79 | |||
80 | #define USE_ELF_CORE_DUMP | ||
81 | #define ELF_EXEC_PAGESIZE 4096 | ||
82 | |||
83 | |||
84 | #define ELF_CORE_COPY_REGS(_dest, _regs) \ | ||
85 | memcpy((char *) &_dest, (char *) _regs, \ | ||
86 | sizeof(struct pt_regs)); | ||
87 | |||
88 | /* This yields a mask that user programs can use to figure out what | ||
89 | * instruction set this CPU supports. This could be done in user space, | ||
90 | * but it's not easy, and we've already done it here. | ||
91 | */ | ||
92 | #define ELF_HWCAP (0) | ||
93 | |||
94 | /* This yields a string that ld.so will use to load implementation | ||
95 | * specific libraries for optimization. This is more specific in | ||
96 | * intent than poking at uname or /proc/cpuinfo. | ||
97 | |||
98 | * For the moment, we have only optimizations for the Intel generations, | ||
99 | * but that could change... | ||
100 | */ | ||
101 | #define ELF_PLATFORM (NULL) | ||
102 | |||
103 | /* Added _f parameter. Is this definition correct: TBD */ | ||
104 | #define ELF_PLAT_INIT(_r, _f) \ | ||
105 | do { \ | ||
106 | _r->r1 = _r->r1 = _r->r2 = _r->r3 = \ | ||
107 | _r->r4 = _r->r5 = _r->r6 = _r->r7 = \ | ||
108 | _r->r8 = _r->r9 = _r->r10 = _r->r11 = \ | ||
109 | _r->r12 = _r->r13 = _r->r14 = _r->r15 = \ | ||
110 | _r->r16 = _r->r17 = _r->r18 = _r->r19 = \ | ||
111 | _r->r20 = _r->r21 = _r->r22 = _r->r23 = \ | ||
112 | _r->r24 = _r->r25 = _r->r26 = _r->r27 = \ | ||
113 | _r->r28 = _r->r29 = _r->r30 = _r->r31 = \ | ||
114 | 0; \ | ||
115 | } while (0) | ||
116 | |||
117 | #ifdef __KERNEL__ | ||
118 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX_32BIT) | ||
119 | #endif | ||
120 | |||
121 | #endif /* __uClinux__ */ | ||
122 | |||
30 | #endif /* _ASM_MICROBLAZE_ELF_H */ | 123 | #endif /* _ASM_MICROBLAZE_ELF_H */ |