qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Here is a patch to build qemu with powerpc (system) sup


From: Satadru Pramanik
Subject: Re: [Qemu-devel] Here is a patch to build qemu with powerpc (system) support on win32
Date: Mon, 10 May 2004 13:29:18 -0400

Sorry for sending this out without reading the posts that came in while I composed the message...

<sheepish>

me

On May 10, 2004, at 1:28 PM, Satadru Pramanik wrote:

I spoke too soon!

 I just found this:

PPC emulator with JITC for PCs.

http://pearpc.sourceforge.net/screenshots.html

Initial report (not mine) says that this lets you run OS X on a PC faster than on a comparably equipped mac.

They don't appear to be using code from qemu, but from Bochs. The code appears to be GPL, perhaps some useful code could be found from here to help the qemu PPC project?

Satadru

On May 9, 2004, at 9:57 PM, Satadru Pramanik wrote:

Has anybody been able to run MacOnLinux inside qemu's ppc emulation?

;)

If so, this development could be very interesting...

Satadru

On May 9, 2004, at 7:57 PM, Martin wrote:

I mad a little patch to be able to enable powerpc system emulation on windows
The patch is against qemu 0.5.5.
Just run configure with
./configure --target-list=i386-softmmu ppc-softmmu
(Which is the default with this patch)
and it builds both qemu.exe (which is i386 system emulation) and qemu-system-ppc.exe (which is ppc system emulation)

I tested it with the VGA framebuffer enabled linux kernel zIamge and the debian install disk on Jocelyns page
http://jocelyn.mayer.free.fr/qemu-ppc/

It seems to work for me.
I used the commandline:
qemu-system-ppc.exe --kernel zImage_vgafb.prep --fda debian_install_root.bin --boot a
and it just boots.

If anyone is interested I can make my binary qemu-system-ppc.exe available but I think it would be better to place one on the Fabrices qemu homepage or on Jocelyns qemu-ppc homepage if it is ready for primetime

Strange thing about the patch is I had to manually set the env struct to zero in cpu_ppc_init (in translate.c)
for(i=0;i<sizeof(CPUPPCState);i++)
{
   ((char*) env)[i]=0;
}

With the standard
memset(env, 0, sizeof(CPUPPCState));
The compiler complained about not being able to free a register.
Greetings,
Martin

diff -urbN qemu-0.5.5/configure qemu-0.5.5-win32/configure
--- qemu-0.5.5/configure        2004-05-08 16:51:18.000000000 +0200
+++ qemu-0.5.5-win32/configure  2004-05-10 00:48:46.000000000 +0200
@@ -140,7 +140,7 @@
 strip="${cross_prefix}${strip}"

 if test "$mingw32" = "yes" ; then
-    target_list="i386-softmmu"
+    target_list="i386-softmmu ppc-softmmu"
     EXESUF=".exe"
     gdbstub="no"
 fi
diff -urbN qemu-0.5.5/hw/m48t59.c qemu-0.5.5-win32/hw/m48t59.c
--- qemu-0.5.5/hw/m48t59.c      2004-05-08 16:51:18.000000000 +0200
+++ qemu-0.5.5-win32/hw/m48t59.c        2004-05-10 00:20:44.000000000 +0200
@@ -67,7 +67,11 @@
     time_t t;

     t = time(NULL) + NVRAM->time_offset;
-    localtime_r(&t, tm);
+    #ifdef WIN32
+         memcpy(tm,localtime(&t),sizeof(*tm));
+       #else
+         localtime_r (&t, &local) ;
+       #endif
 }

 static void set_time (m48t59_t *NVRAM, struct tm *tm)
@@ -129,7 +133,11 @@

 static void get_alarm (m48t59_t *NVRAM, struct tm *tm)
 {
-    localtime_r(&NVRAM->alarm, tm);
+       #ifdef WIN32
+         memcpy(tm,localtime(&NVRAM->alarm),sizeof(*tm));
+       #else
+          localtime_r (&NVRAM->alarm, tm);
+       #endif
 }

 static void set_alarm (m48t59_t *NVRAM, struct tm *tm)
diff -urbN qemu-0.5.5/target-ppc/helper.c qemu-0.5.5-win32/target-ppc/helper.c --- qemu-0.5.5/target-ppc/helper.c 2004-05-08 16:51:18.000000000 +0200 +++ qemu-0.5.5-win32/target-ppc/helper.c 2004-05-10 00:02:46.000000000 +0200
@@ -17,7 +17,13 @@
* License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
+
+#ifdef _WIN32
+#define PROT_READ  1
+#define PROT_WRITE 2
+#else
 #include <sys/mman.h>
+#endif

 #include "exec.h"
 #if defined (USE_OPEN_FIRMWARE)
diff -urbN qemu-0.5.5/target-ppc/translate.c qemu-0.5.5-win32/target-ppc/translate.c --- qemu-0.5.5/target-ppc/translate.c 2004-05-08 16:51:18.000000000 +0200 +++ qemu-0.5.5-win32/target-ppc/translate.c 2004-05-10 01:30:06.000000000 +0200
@@ -2933,13 +2933,21 @@
 CPUPPCState *cpu_ppc_init(void)
 {
     CPUPPCState *env;
+    int i;

     cpu_exec_init();

     env = malloc(sizeof(CPUPPCState));
     if (!env)
         return NULL;
+#ifdef WIN32
+for(i=0;i<sizeof(CPUPPCState);i++)
+{
+       ((char*) env)[i]=0;
+}
+#else
     memset(env, 0, sizeof(CPUPPCState));
+#endif
 #if !defined(CONFIG_USER_ONLY) && defined (USE_OPEN_FIRMWARE)
     setup_machine(env, 0);
 #else
@@ -2961,7 +2969,6 @@
     msr_pr = 1;
 #endif
     env->access_type = ACCESS_INT;
-
     return env;
 }

_______________________________________________
Qemu-devel mailing list
address@hidden
http://mail.nongnu.org/mailman/listinfo/qemu-devel
_______________________________________________
Qemu-devel mailing list
address@hidden
http://mail.nongnu.org/mailman/listinfo/qemu-devel

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Attachment: PGP.sig
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]