Revision e85e7c6e

b/configure
504 504
    fi
505 505
# the following are Linux specific
506 506
    if [ "$linux_user" = "yes" ] ; then
507
        target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user sparc64-linux-user sparc32plus-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user sh4-linux-user ppc-linux-user ppc64-linux-user x86_64-linux-user cris-linux-user $target_list"
507
        target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user sparc64-linux-user sparc32plus-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user sh4-linux-user ppc-linux-user ppcemb-linux-user ppc64-linux-user ppc64abi32-linux-user x86_64-linux-user cris-linux-user $target_list"
508 508
    fi
509 509
# the following are Darwin specific
510 510
    if [ "$darwin_user" = "yes" ] ; then
......
937 937
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
938 938
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
939 939
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
940
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
940 941
[ "$target_cpu" = "ppc64h" ] && target_bigendian=yes
941 942
[ "$target_cpu" = "mips" ] && target_bigendian=yes
942 943
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
......
1040 1041
  echo "#define TARGET_PPC 1" >> $config_h
1041 1042
elif test "$target_cpu" = "ppcemb" ; then
1042 1043
  echo "TARGET_ARCH=ppcemb" >> $config_mak
1044
  echo "TARGET_ABI_DIR=ppc" >> $config_mak
1043 1045
  echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1044 1046
  echo "#define TARGET_PPC 1" >> $config_h
1045 1047
  echo "#define TARGET_PPCEMB 1" >> $config_h
......
1048 1050
  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1049 1051
  echo "#define TARGET_PPC 1" >> $config_h
1050 1052
  echo "#define TARGET_PPC64 1" >> $config_h
1053
elif test "$target_cpu" = "ppc64abi32" ; then
1054
  echo "TARGET_ARCH=ppc64" >> $config_mak
1055
  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1056
  echo "TARGET_ABI_DIR=ppc" >> $config_mak
1057
  echo "#define TARGET_PPC 1" >> $config_h
1058
  echo "#define TARGET_PPC64 1" >> $config_h
1059
  echo "#define TARGET_ABI32 1" >> $config_h
1051 1060
elif test "$target_cpu" = "ppc64h" ; then
1052 1061
  echo "TARGET_ARCH=ppc64h" >> $config_mak
1053 1062
  echo "#define TARGET_ARCH \"ppc64h\"" >> $config_h
b/linux-user/elfload.c
269 269

  
270 270
#define ELF_START_MMAP 0x80000000
271 271

  
272
#ifdef TARGET_PPC64
272
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
273 273

  
274 274
#define elf_check_arch(x) ( (x) == EM_PPC64 )
275 275

  
......
325 325
{
326 326
    abi_ulong pos = infop->start_stack;
327 327
    abi_ulong tmp;
328
#ifdef TARGET_PPC64
328
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
329 329
    abi_ulong entry, toc;
330 330
#endif
331 331

  
332 332
    _regs->msr = 1 << MSR_PR; /* Set user mode */
333 333
    _regs->gpr[1] = infop->start_stack;
334
#ifdef TARGET_PPC64
334
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
335 335
    entry = ldq_raw(infop->entry) + infop->load_addr;
336 336
    toc = ldq_raw(infop->entry + 8) + infop->load_addr;
337 337
    _regs->gpr[2] = toc;
b/linux-user/main.c
1008 1008
                      "Aborting\n");
1009 1009
            break;
1010 1010
#endif /* defined(TARGET_PPCEMB) */
1011
#if defined(TARGET_PPC64) /* PowerPC 64 */
1011
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32) /* PowerPC 64 */
1012 1012
        case POWERPC_EXCP_DSEG:     /* Data segment exception                */
1013 1013
            cpu_abort(env, "Data segment exception while in user mode. "
1014 1014
                      "Aborting\n");
......
1017 1017
            cpu_abort(env, "Instruction segment exception "
1018 1018
                      "while in user mode. Aborting\n");
1019 1019
            break;
1020
#endif /* defined(TARGET_PPC64) */
1021
#if defined(TARGET_PPC64H) /* PowerPC 64 with hypervisor mode support */
1020
#endif /* defined(TARGET_PPC64) && !defined(TARGET_ABI32) */
1021
#if defined(TARGET_PPC64H) && !defined(TARGET_ABI32)
1022
        /* PowerPC 64 with hypervisor mode support */
1022 1023
        case POWERPC_EXCP_HDECR:    /* Hypervisor decrementer exception      */
1023 1024
            cpu_abort(env, "Hypervisor decrementer interrupt "
1024 1025
                      "while in user mode. Aborting\n");
1025 1026
            break;
1026
#endif /* defined(TARGET_PPC64H) */
1027
#endif /* defined(TARGET_PPC64H) && !defined(TARGET_ABI32) */
1027 1028
        case POWERPC_EXCP_TRACE:    /* Trace exception                       */
1028 1029
            /* Nothing to do:
1029 1030
             * we use this exception to emulate step-by-step execution mode.
1030 1031
             */
1031 1032
            break;
1032
#if defined(TARGET_PPC64H) /* PowerPC 64 with hypervisor mode support */
1033
#if defined(TARGET_PPC64H) && !defined(TARGET_ABI32)
1034
        /* PowerPC 64 with hypervisor mode support */
1033 1035
        case POWERPC_EXCP_HDSI:     /* Hypervisor data storage exception     */
1034 1036
            cpu_abort(env, "Hypervisor data storage exception "
1035 1037
                      "while in user mode. Aborting\n");
......
1046 1048
            cpu_abort(env, "Hypervisor instruction segment exception "
1047 1049
                      "while in user mode. Aborting\n");
1048 1050
            break;
1049
#endif /* defined(TARGET_PPC64H) */
1051
#endif /* defined(TARGET_PPC64H) && !defined(TARGET_ABI32) */
1050 1052
        case POWERPC_EXCP_VPU:      /* Vector unavailable exception          */
1051 1053
            EXCP_DUMP(env, "No Altivec instructions allowed\n");
1052 1054
            info.si_signo = TARGET_SIGILL;
......
2170 2172
            if (i != 12 && i != 6 && i != 13)
2171 2173
                env->msr[i] = (regs->msr >> i) & 1;
2172 2174
        }
2173
#if defined(TARGET_PPC64)
2175
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
2174 2176
        msr_sf = 1;
2177
#else
2178
        msr_sf = 0;
2175 2179
#endif
2176 2180
        env->nip = regs->nip;
2177 2181
        for(i = 0; i < 32; i++) {

Also available in: Unified diff