94 |
#endif |
#endif |
95 |
|
|
96 |
#ifdef TARGET_SPARC |
#ifdef TARGET_SPARC |
97 |
|
#ifdef TARGET_SPARC64 |
98 |
|
|
99 |
#define ELF_START_MMAP 0x80000000 |
#define ELF_START_MMAP 0x80000000 |
100 |
|
|
101 |
#define elf_check_arch(x) ( (x) == EM_SPARC ) |
#define elf_check_arch(x) ( (x) == EM_SPARC ) |
102 |
|
|
103 |
|
#define ELF_CLASS ELFCLASS64 |
104 |
|
#define ELF_DATA ELFDATA2MSB |
105 |
|
#define ELF_ARCH EM_SPARC |
106 |
|
|
107 |
|
/*XXX*/ |
108 |
|
#define ELF_PLAT_INIT(_r) |
109 |
|
|
110 |
|
static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) |
111 |
|
{ |
112 |
|
regs->tstate = 0; |
113 |
|
regs->pc = infop->entry; |
114 |
|
regs->npc = regs->pc + 4; |
115 |
|
regs->y = 0; |
116 |
|
regs->u_regs[14] = infop->start_stack - 16 * 4; |
117 |
|
} |
118 |
|
|
119 |
|
#else |
120 |
|
#define ELF_START_MMAP 0x80000000 |
121 |
|
|
122 |
|
#define elf_check_arch(x) ( (x) == EM_SPARC ) |
123 |
|
|
124 |
#define ELF_CLASS ELFCLASS32 |
#define ELF_CLASS ELFCLASS32 |
125 |
#define ELF_DATA ELFDATA2MSB |
#define ELF_DATA ELFDATA2MSB |
126 |
#define ELF_ARCH EM_SPARC |
#define ELF_ARCH EM_SPARC |
138 |
} |
} |
139 |
|
|
140 |
#endif |
#endif |
141 |
|
#endif |
142 |
|
|
143 |
#ifdef TARGET_PPC |
#ifdef TARGET_PPC |
144 |
|
|