qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] qemu/hw mips_malta.c mips_r4k.c
@ 2007-01-24 22:00 Thiemo Seufer
  2007-01-25 10:34 ` Aurelien Jarno
  0 siblings, 1 reply; 3+ messages in thread
From: Thiemo Seufer @ 2007-01-24 22:00 UTC (permalink / raw)
  To: qemu-devel

CVSROOT:	/sources/qemu
Module name:	qemu
Changes by:	Thiemo Seufer <ths>	07/01/24 22:00:13

Modified files:
	hw             : mips_malta.c mips_r4k.c 

Log message:
	Fix malta emulation for 64bit qemu.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemu/hw/mips_malta.c?cvsroot=qemu&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/qemu/hw/mips_r4k.c?cvsroot=qemu&r1=1.32&r2=1.33

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] qemu/hw mips_malta.c mips_r4k.c
  2007-01-24 22:00 [Qemu-devel] qemu/hw mips_malta.c mips_r4k.c Thiemo Seufer
@ 2007-01-25 10:34 ` Aurelien Jarno
  0 siblings, 0 replies; 3+ messages in thread
From: Aurelien Jarno @ 2007-01-25 10:34 UTC (permalink / raw)
  To: qemu-devel

On Wed, Jan 24, 2007 at 10:00:13PM +0000, Thiemo Seufer wrote:
> CVSROOT:	/sources/qemu
> Module name:	qemu
> Changes by:	Thiemo Seufer <ths>	07/01/24 22:00:13
> 
> Modified files:
> 	hw             : mips_malta.c mips_r4k.c 
> 
> Log message:
> 	Fix malta emulation for 64bit qemu.
> 
> CVSWeb URLs:
> http://cvs.savannah.gnu.org/viewcvs/qemu/hw/mips_malta.c?cvsroot=qemu&r1=1.5&r2=1.6
> http://cvs.savannah.gnu.org/viewcvs/qemu/hw/mips_r4k.c?cvsroot=qemu&r1=1.32&r2=1.33
> 

This changes breaks malta emulation on 64-bit hosts. Please find a patch
below to fix that. The changes to the bootloader part may looks huge,
but it's actually just to keep the comments aligned. Also we don't need
sign extent for the bootloader code, as it is done by the lui
instruction when executed.

Index: mips_malta.c
===================================================================
RCS file: /sources/qemu/qemu/hw/mips_malta.c,v
retrieving revision 1.6
diff -u -d -p -r1.6 mips_malta.c
--- mips_malta.c	24 Jan 2007 22:00:12 -0000	1.6
+++ mips_malta.c	25 Jan 2007 10:28:48 -0000
@@ -32,12 +32,11 @@
 
 #ifdef MIPS_HAS_MIPS64
 #define INITRD_LOAD_ADDR 	(int64_t)0x80800000
-#define ENVP_ADDR        	(int64_t)0x80002000
 #else
 #define INITRD_LOAD_ADDR 	(int32_t)0x80800000
-#define ENVP_ADDR        	(int32_t)0x80002000
 #endif
 
+#define ENVP_ADDR        	(int32_t)0x80002000
 #define VIRT_TO_PHYS_ADDEND 	(-((int64_t)(int32_t)0x80000000))
 
 #define ENVP_NB_ENTRIES	 	16
@@ -390,36 +389,36 @@ static void write_bootloader (CPUState *
 
     /* Small bootloader */
     p = (uint32_t *) (phys_ram_base + bios_offset);
-    stl_raw(p++, 0x0bf00010);                               /* j 0x1fc00040 */
-    stl_raw(p++, 0x00000000);                               /* nop */
+    stl_raw(p++, 0x0bf00010);                                      /* j 0x1fc00040 */
+    stl_raw(p++, 0x00000000);                                      /* nop */
 
     /* Second part of the bootloader */
     p = (uint32_t *) (phys_ram_base + bios_offset + 0x040);
-    stl_raw(p++, 0x3c040000); 				    /* lui a0, 0 */
-    stl_raw(p++, 0x34840002);                               /* ori a0, a0, 2 */
-    stl_raw(p++, 0x3c050000 | ((ENVP_ADDR) >> 16));         /* lui a1, high(ENVP_ADDR) */
-    stl_raw(p++, 0x34a50000 | ((ENVP_ADDR) & 0xffff));      /* ori a1, a0, low(ENVP_ADDR) */
-    stl_raw(p++, 0x3c060000 | ((ENVP_ADDR + 8) >> 16));     /* lui a2, high(ENVP_ADDR + 8) */
-    stl_raw(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));  /* ori a2, a2, low(ENVP_ADDR + 8) */
-    stl_raw(p++, 0x3c070000 | ((env->ram_size) >> 16));     /* lui a3, high(env->ram_size) */
-    stl_raw(p++, 0x34e70000 | ((env->ram_size) & 0xffff));  /* ori a3, a3, low(env->ram_size) */
-    stl_raw(p++, 0x3c1f0000 | ((kernel_addr) >> 16));       /* lui ra, high(kernel_addr) */;
-    stl_raw(p++, 0x37ff0000 | ((kernel_addr) & 0xffff));    /* ori ra, ra, low(kernel_addr) */
-    stl_raw(p++, 0x03e00008);                               /* jr ra */
-    stl_raw(p++, 0x00000000);                               /* nop */
+    stl_raw(p++, 0x3c040000);                                      /* lui a0, 0 */
+    stl_raw(p++, 0x34840002);                                      /* ori a0, a0, 2 */
+    stl_raw(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));       /* lui a1, high(ENVP_ADDR) */
+    stl_raw(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));               /* ori a1, a0, low(ENVP_ADDR) */
+    stl_raw(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); /* lui a2, high(ENVP_ADDR + 8) */
+    stl_raw(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));         /* ori a2, a2, low(ENVP_ADDR + 8) */
+    stl_raw(p++, 0x3c070000 | (env->ram_size >> 16));              /* lui a3, high(env->ram_size) */
+    stl_raw(p++, 0x34e70000 | (env->ram_size & 0xffff));           /* ori a3, a3, low(env->ram_size) */
+    stl_raw(p++, 0x3c1f0000 | ((kernel_addr >> 16) & 0xffff));     /* lui ra, high(kernel_addr) */;
+    stl_raw(p++, 0x37ff0000 | (kernel_addr & 0xffff));             /* ori ra, ra, low(kernel_addr) */
+    stl_raw(p++, 0x03e00008);                                      /* jr ra */
+    stl_raw(p++, 0x00000000);                                      /* nop */
 }
 
 static void prom_set(int index, const char *string, ...)
 {
     va_list ap;
-    uint32_t *p;
-    uint32_t table_addr;
+    int32_t *p;
+    int32_t table_addr;
     char *s;
 
     if (index >= ENVP_NB_ENTRIES)
         return;
 
-    p = (uint32_t *) (phys_ram_base + ENVP_ADDR + VIRT_TO_PHYS_ADDEND);
+    p = (int32_t *) (phys_ram_base + ENVP_ADDR + VIRT_TO_PHYS_ADDEND);
     p += index;
 
     if (string == NULL) {
@@ -427,7 +426,7 @@ static void prom_set(int index, const ch
         return;
     }
 
-    table_addr = ENVP_ADDR + sizeof(uint32_t) * ENVP_NB_ENTRIES + index * ENVP_ENTRY_SIZE;
+    table_addr = ENVP_ADDR + sizeof(int32_t) * ENVP_NB_ENTRIES + index * ENVP_ENTRY_SIZE;
     s = (char *) (phys_ram_base + VIRT_TO_PHYS_ADDEND + table_addr);
 
     stl_raw(p, table_addr);

-- 
  .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   aurel32@debian.org         | aurelien@aurel32.net
   `-    people.debian.org/~aurel32 | www.aurel32.net

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] qemu/hw mips_malta.c mips_r4k.c
@ 2007-02-18  0:10 Thiemo Seufer
  0 siblings, 0 replies; 3+ messages in thread
From: Thiemo Seufer @ 2007-02-18  0:10 UTC (permalink / raw)
  To: qemu-devel

CVSROOT:	/sources/qemu
Module name:	qemu
Changes by:	Thiemo Seufer <ths>	07/02/18 00:10:59

Modified files:
	hw             : mips_malta.c mips_r4k.c 

Log message:
	Add PS/2 keyboard to MIPS R4K, by Herve Poussineau.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemu/hw/mips_malta.c?cvsroot=qemu&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/qemu/hw/mips_r4k.c?cvsroot=qemu&r1=1.33&r2=1.34

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-02-18  0:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-24 22:00 [Qemu-devel] qemu/hw mips_malta.c mips_r4k.c Thiemo Seufer
2007-01-25 10:34 ` Aurelien Jarno
  -- strict thread matches above, loose matches on Subject: below --
2007-02-18  0:10 Thiemo Seufer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).