OSDN Git Service

Fix malta emulation for 64bit qemu.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 24 Jan 2007 22:00:13 +0000 (22:00 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 24 Jan 2007 22:00:13 +0000 (22:00 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2355 c046a42c-6fe2-441c-8c8c-71466251a162

hw/mips_malta.c
hw/mips_r4k.c

index 7ddf2fd..c37c360 100644 (file)
 
 #include "vl.h"
 
-#define BIOS_FILENAME           "mips_bios.bin"
+#ifdef TARGET_WORDS_BIGENDIAN
+#define BIOS_FILENAME "mips_bios.bin"
+#else
+#define BIOS_FILENAME "mipsel_bios.bin"
+#endif
+
 #ifdef MIPS_HAS_MIPS64
-#define INITRD_LOAD_ADDR       (uint64_t)0x80800000
-#define ENVP_ADDR              (uint64_t)0x80002000
+#define INITRD_LOAD_ADDR       (int64_t)0x80800000
+#define ENVP_ADDR              (int64_t)0x80002000
 #else
-#define INITRD_LOAD_ADDR       (uint32_t)0x80800000
-#define ENVP_ADDR              (uint32_t)0x80002000
+#define INITRD_LOAD_ADDR       (int32_t)0x80800000
+#define ENVP_ADDR              (int32_t)0x80002000
 #endif
 
-#define VIRT_TO_PHYS_ADDEND    (-((uint64_t)(uint32_t)0x80000000))
+#define VIRT_TO_PHYS_ADDEND    (-((int64_t)(int32_t)0x80000000))
 
 #define ENVP_NB_ENTRIES                16
 #define ENVP_ENTRY_SIZE                256
@@ -156,7 +161,8 @@ static uint32_t malta_fpga_readl(void *opaque, target_phys_addr_t addr)
 
     default:
 #if 0
-        printf ("malta_fpga_read: Bad register offset 0x%x\n", (int)addr);
+        printf ("malta_fpga_read: Bad register offset 0x" TLSZ "\n",
+               addr);
 #endif
         break;
     }
@@ -239,7 +245,8 @@ static void malta_fpga_writel(void *opaque, target_phys_addr_t addr,
 
     default:
 #if 0
-        printf ("malta_fpga_write: Bad register offset 0x%x\n", (int)addr);
+        printf ("malta_fpga_write: Bad register offset 0x" TLSZ "\n",
+               addr);
 #endif
         break;
     }
@@ -458,7 +465,7 @@ static int64_t load_kernel (CPUState *env)
     /* Store command line.  */
     prom_set(index++, env->kernel_filename);
     if (initrd_size > 0)
-        prom_set(index++, "rd_start=0x%08x rd_size=%li %s", INITRD_LOAD_ADDR, initrd_size, env->kernel_cmdline);
+        prom_set(index++, "rd_start=0x" TLSZ " rd_size=%li %s", INITRD_LOAD_ADDR, initrd_size, env->kernel_cmdline);
     else
         prom_set(index++, env->kernel_cmdline);
 
index 5fa5b76..8d1cac9 100644 (file)
@@ -14,7 +14,7 @@
 #else
 #define BIOS_FILENAME "mipsel_bios.bin"
 #endif
-//#define BIOS_FILENAME "system.bin"
+
 #ifdef MIPS_HAS_MIPS64
 #define INITRD_LOAD_ADDR (int64_t)(int32_t)0x80800000
 #else
@@ -112,8 +112,8 @@ void load_kernel (CPUState *env, int ram_size, const char *kernel_filename,
         strcpy (phys_ram_base + (16 << 20) - 256, kernel_cmdline);
     }
 
-    *(int *)(phys_ram_base + (16 << 20) - 260) = tswap32 (0x12345678);
-    *(int *)(phys_ram_base + (16 << 20) - 264) = tswap32 (ram_size);
+    *(int32_t *)(phys_ram_base + (16 << 20) - 260) = tswap32 (0x12345678);
+    *(int32_t *)(phys_ram_base + (16 << 20) - 264) = tswap32 (ram_size);
 }
 
 static void main_cpu_reset(void *opaque)
@@ -159,7 +159,7 @@ void mips_r4k_init (int ram_size, int vga_ram_size, int boot_device,
     snprintf(buf, sizeof(buf), "%s/%s", bios_dir, BIOS_FILENAME);
     bios_size = load_image(buf, phys_ram_base + bios_offset);
     if ((bios_size > 0) && (bios_size <= BIOS_SIZE)) {
-       cpu_register_physical_memory((uint32_t)(0x1fc00000),
+       cpu_register_physical_memory(0x1fc00000,
                                     BIOS_SIZE, bios_offset | IO_MEM_ROM);
     } else {
        /* not fatal */