]> xenbits.xensource.com Git - qemu-xen-4.2-testing.git/commitdiff
New ppc64-linux-user target.
authorj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 27 Sep 2007 01:14:15 +0000 (01:14 +0000)
committerj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 27 Sep 2007 01:14:15 +0000 (01:14 +0000)
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
linux-user/elfload.c
linux-user/ppc64/syscall.h
linux-user/qemu.h
target-ppc/translate_init.c

index 6288ac06c9977f104fc2e286732f67de1985bf98..46a24171e6efe9d28825a6ff2dc4a6e57b477da5 100755 (executable)
--- 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
index b87119e934b5c6983bd632ed81b3e96b875a188f..2a4333812575178d4319fa9833e807d1c3a2cf3d 100644 (file)
@@ -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;
index 69206164109df0bb12b85a63ee341752d817bf89..c47e58a95fe786296554251cf04976e517bdd766 100644 (file)
@@ -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"
index 8c03ad19021ff6cc54adb76acbb636442b12c7f4..4b857f3d14e1e76a4ae5ce014724d77cbb416432 100644 (file)
@@ -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;
index c6f09aea5a05daf23a7e22247493a62cda0611c6..df6affa31715304dae0d4a9efa63135235f812ca 100644 (file)
@@ -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),