diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-18 19:59:49 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-18 19:59:49 +0000 |
commit | e85e7c6ea411c42e24e6e7b8ff5cdd99faae317a (patch) | |
tree | 06881989ac288ea39c84a11517aa53c8156a4625 /linux-user/elfload.c | |
parent | b533415989c55d929804d56ea4bfb93e8d5ce021 (diff) |
Use the new TARGET_ABI32 feature to implement a ppc64abi32-linux-user target
(PowerPC 64 running in 32 bits mode).
Use the new TARGET_ABI_DIR feature to implement a ppcemb-linux-user target
(PowerPC 32 with 64 bits GPRs and vector extensions).
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3409 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'linux-user/elfload.c')
-rw-r--r-- | linux-user/elfload.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 0bb455bdab..fbfa3b0de5 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -269,7 +269,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define ELF_START_MMAP 0x80000000 -#ifdef TARGET_PPC64 +#if defined(TARGET_PPC64) && !defined(TARGET_ABI32) #define elf_check_arch(x) ( (x) == EM_PPC64 ) @@ -325,13 +325,13 @@ static inline void init_thread(struct target_pt_regs *_regs, struct image_info * { abi_ulong pos = infop->start_stack; abi_ulong tmp; -#ifdef TARGET_PPC64 +#if defined(TARGET_PPC64) && !defined(TARGET_ABI32) abi_ulong entry, toc; #endif _regs->msr = 1 << MSR_PR; /* Set user mode */ _regs->gpr[1] = infop->start_stack; -#ifdef TARGET_PPC64 +#if defined(TARGET_PPC64) && !defined(TARGET_ABI32) entry = ldq_raw(infop->entry) + infop->load_addr; toc = ldq_raw(infop->entry + 8) + infop->load_addr; _regs->gpr[2] = toc; |