From 92a343da3f50db3130f988b14650eb09e9748d11 Mon Sep 17 00:00:00 2001 From: j_mayer Date: Thu, 27 Sep 2007 01:14:15 +0000 Subject: [PATCH] New ppc64-linux-user target. Allow use of PowerPC 970 for debugging (softmmu would not run, for now). git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3246 c046a42c-6fe2-441c-8c8c-71466251a162 --- configure | 2 +- linux-user/elfload.c | 1 + linux-user/ppc64/syscall.h | 20 ++++++++++---------- linux-user/qemu.h | 1 + target-ppc/translate_init.c | 28 ---------------------------- 5 files changed, 13 insertions(+), 39 deletions(-) diff --git a/configure b/configure index 6288ac06c9..46a24171e6 100755 --- a/configure +++ b/configure @@ -501,7 +501,7 @@ if test -z "$target_list" ; then fi # the following are Linux specific if [ "$linux_user" = "yes" ] ; then - target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user ppc-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user $target_list" + target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user ppc-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user ppc64-linux-user $target_list" fi # the following are Darwin specific if [ "$darwin_user" = "yes" ] ; then diff --git a/linux-user/elfload.c b/linux-user/elfload.c index b87119e934..2a43338125 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1315,6 +1315,7 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs, interp_load_addr, (interpreter_type == INTERPRETER_AOUT ? 0 : 1), info); + info->load_addr = reloc_func_desc; info->start_brk = info->brk = elf_brk; info->end_code = end_code; info->start_code = start_code; diff --git a/linux-user/ppc64/syscall.h b/linux-user/ppc64/syscall.h index 6920616410..c47e58a95f 100644 --- a/linux-user/ppc64/syscall.h +++ b/linux-user/ppc64/syscall.h @@ -65,18 +65,21 @@ struct target_revectored_struct { #define TARGET_SHMGET 23 #define TARGET_SHMCTL 24 +#if 0 // To make it compile, even if the definition in syscall.c is bugged struct target_msgbuf { int mtype; char mtext[1]; }; +#endif struct target_ipc_kludge { unsigned int msgp; /* Really (struct msgbuf *) */ int msgtyp; }; +#if 0 // To make it compile, even if the definition in syscall.c is bugged struct target_ipc_perm { - int key; + int __key; unsigned short uid; unsigned short gid; unsigned short cuid; @@ -84,7 +87,9 @@ struct target_ipc_perm { unsigned short mode; unsigned short seq; }; +#endif +#if 0 // To make it compile, even if the definition in syscall.c is bugged struct target_msqid_ds { struct target_ipc_perm msg_perm; unsigned int msg_first; /* really struct target_msg* */ @@ -100,7 +105,9 @@ struct target_msqid_ds { unsigned short msg_lspid; unsigned short msg_lrpid; }; +#endif +#if 0 // To make it compile, even if the definition in syscall.c is bugged struct target_shmid_ds { struct target_ipc_perm shm_perm; int shm_segsz; @@ -114,17 +121,10 @@ struct target_shmid_ds { unsigned long *shm_pages; void *attaches; /* really struct shm_desc * */ }; +#endif #define TARGET_IPC_RMID 0 #define TARGET_IPC_SET 1 #define TARGET_IPC_STAT 2 -union target_semun { - int val; - unsigned int buf; /* really struct semid_ds * */ - unsigned int array; /* really unsigned short * */ - unsigned int __buf; /* really struct seminfo * */ - unsigned int __pad; /* really void* */ -}; - -#define UNAME_MACHINE "ppc" +#define UNAME_MACHINE "ppc64" diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 8c03ad1902..4b857f3d14 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -16,6 +16,7 @@ * task_struct fields in the kernel */ struct image_info { + target_ulong load_addr; unsigned long start_code; unsigned long end_code; unsigned long start_data; diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index c6f09aea5a..df6affa317 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -3368,7 +3368,6 @@ static void init_proc_7455 (CPUPPCState *env) #if defined (TARGET_PPC64) /* PowerPC 970 */ -#if defined (TODO) #define POWERPC_INSNS_970 (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \ PPC_64B | PPC_ALTIVEC | \ PPC_64_BRIDGE | PPC_SLBI) @@ -3408,10 +3407,8 @@ static void init_proc_970 (CPUPPCState *env) /* Allocate hardware IRQ controller */ ppc970_irq_init(env); } -#endif /* TODO */ /* PowerPC 970FX (aka G5) */ -#if defined (TODO) #define POWERPC_INSNS_970FX (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \ PPC_64B | PPC_ALTIVEC | \ PPC_64_BRIDGE | PPC_SLBI) @@ -3451,10 +3448,8 @@ static void init_proc_970FX (CPUPPCState *env) /* Allocate hardware IRQ controller */ ppc970_irq_init(env); } -#endif /* TODO */ /* PowerPC 970 GX */ -#if defined (TODO) #define POWERPC_INSNS_970GX (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \ PPC_64B | PPC_ALTIVEC | \ PPC_64_BRIDGE | PPC_SLBI) @@ -3494,7 +3489,6 @@ static void init_proc_970GX (CPUPPCState *env) /* Allocate hardware IRQ controller */ ppc970_irq_init(env); } -#endif /* TODO */ /* PowerPC 620 */ #if defined (TODO) @@ -4897,50 +4891,28 @@ static ppc_def_t ppc_defs[] = { /* POWER6A */ POWERPC_DEF("POWER6A", CPU_POWERPC_POWER6A, 0xFFFFFFFF, POWER6), #endif -#if defined (TODO) /* PowerPC 970 */ POWERPC_DEF("970", CPU_POWERPC_970, 0xFFFFFFFF, 970), -#endif -#if defined (TODO) /* PowerPC 970FX (G5) */ POWERPC_DEF("970fx", CPU_POWERPC_970FX, 0xFFFFFFFF, 970FX), -#endif -#if defined (TODO) /* PowerPC 970FX v1.0 (G5) */ POWERPC_DEF("970fx1.0", CPU_POWERPC_970FX_v10, 0xFFFFFFFF, 970FX), -#endif -#if defined (TODO) /* PowerPC 970FX v2.0 (G5) */ POWERPC_DEF("970fx2.0", CPU_POWERPC_970FX_v20, 0xFFFFFFFF, 970FX), -#endif -#if defined (TODO) /* PowerPC 970FX v2.1 (G5) */ POWERPC_DEF("970fx2.1", CPU_POWERPC_970FX_v21, 0xFFFFFFFF, 970FX), -#endif -#if defined (TODO) /* PowerPC 970FX v3.0 (G5) */ POWERPC_DEF("970fx3.0", CPU_POWERPC_970FX_v30, 0xFFFFFFFF, 970FX), -#endif -#if defined (TODO) /* PowerPC 970FX v3.1 (G5) */ POWERPC_DEF("970fx3.1", CPU_POWERPC_970FX_v31, 0xFFFFFFFF, 970FX), -#endif -#if defined (TODO) /* PowerPC 970GX (G5) */ POWERPC_DEF("970gx", CPU_POWERPC_970GX, 0xFFFFFFFF, 970GX), -#endif -#if defined (TODO) /* PowerPC 970MP */ POWERPC_DEF("970mp", CPU_POWERPC_970MP, 0xFFFFFFFF, 970), -#endif -#if defined (TODO) /* PowerPC 970MP v1.0 */ POWERPC_DEF("970mp1.0", CPU_POWERPC_970MP_v10, 0xFFFFFFFF, 970), -#endif -#if defined (TODO) /* PowerPC 970MP v1.1 */ POWERPC_DEF("970mp1.1", CPU_POWERPC_970MP_v11, 0xFFFFFFFF, 970), -#endif #if defined (TODO) /* PowerPC Cell */ POWERPC_DEF("Cell", CPU_POWERPC_CELL, 0xFFFFFFFF, 970), -- 2.11.0