aboutsummaryrefslogtreecommitdiffstats
path: root/emulators
diff options
context:
space:
mode:
Diffstat (limited to 'emulators')
-rw-r--r--emulators/qemu/Makefile2
-rw-r--r--emulators/qemu/distinfo6
-rw-r--r--emulators/qemu/files/patch-faf8a63492cd98f00f7daff001e0d27b27038bec85
3 files changed, 89 insertions, 4 deletions
diff --git a/emulators/qemu/Makefile b/emulators/qemu/Makefile
index 648b7b0974e4..707d5a42ac87 100644
--- a/emulators/qemu/Makefile
+++ b/emulators/qemu/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= qemu
-PORTVERSION= 0.10.3
+PORTVERSION= 0.10.4
CATEGORIES= emulators
MASTER_SITES= ${MASTER_SITE_SAVANNAH} \
http://bellard.org/qemu/
diff --git a/emulators/qemu/distinfo b/emulators/qemu/distinfo
index 4071fd579742..45d9a846eec8 100644
--- a/emulators/qemu/distinfo
+++ b/emulators/qemu/distinfo
@@ -1,3 +1,3 @@
-MD5 (qemu/qemu-0.10.3.tar.gz) = 320d6c536c8a1288cdc6c809f487e6d7
-SHA256 (qemu/qemu-0.10.3.tar.gz) = 89540d7a8c880a6ae33f8a55d55d580f3f03c10b02e32b7323719b3354f7b077
-SIZE (qemu/qemu-0.10.3.tar.gz) = 3661566
+MD5 (qemu/qemu-0.10.4.tar.gz) = 4cdec0df66749281fbf73039fdf7f81b
+SHA256 (qemu/qemu-0.10.4.tar.gz) = bc370b4096fd516142cc5d8cbbae599cde8ef3f2bec33b21c95c2c5e3e3f3e5e
+SIZE (qemu/qemu-0.10.4.tar.gz) = 3749481
diff --git a/emulators/qemu/files/patch-faf8a63492cd98f00f7daff001e0d27b27038bec b/emulators/qemu/files/patch-faf8a63492cd98f00f7daff001e0d27b27038bec
new file mode 100644
index 000000000000..e53afb35e87e
--- /dev/null
+++ b/emulators/qemu/files/patch-faf8a63492cd98f00f7daff001e0d27b27038bec
@@ -0,0 +1,85 @@
+From faf8a63492cd98f00f7daff001e0d27b27038bec Mon Sep 17 00:00:00 2001
+From: Anthony Liguori <aliguori@us.ibm.com>
+Date: Wed, 13 May 2009 08:06:54 -0500
+Subject: [PATCH] Revert "reset state for load_linux"
+
+This reverts commit 2da1e398641d9fccf683645c808dee0d088f84cf.
+
+This fix on the stable branch:
+
+ commit 2da1e398641d9fccf683645c808dee0d088f84cf
+ Author: Glauber Costa <glommer@redhat.com>
+ Date: Fri May 8 02:22:13 2009 -0300
+
+ reset state for load_linux
+
+Caused -kernel to break.
+
+The problem is that we're passing the ROM's ram_addr_t to
+load_linux() rather than its target_phys_addr_t. We also
+need to register the memory before trying to write to
+it.
+
+Signed-off-by: Mark McLoughlin <markmc@redhat.com>
+Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
+---
+ hw/pc.c | 15 ++++-----------
+ 1 files changed, 4 insertions(+), 11 deletions(-)
+
+diff --git a/hw/pc.c b/hw/pc.c
+index 1b16373..c33cd75 100644
+--- a/hw/pc.c
++++ b/hw/pc.c
+@@ -471,7 +471,7 @@ static void bochs_bios_init(void)
+
+ /* Generate an initial boot sector which sets state and jump to
+ a specified vector */
+-static void generate_bootsect(target_phys_addr_t option_rom,
++static void generate_bootsect(uint8_t *option_rom,
+ uint32_t gpr[8], uint16_t segs[6], uint16_t ip)
+ {
+ uint8_t rom[512], *p, *reloc;
+@@ -545,8 +545,7 @@ static void generate_bootsect(target_phys_addr_t option_rom,
+ sum += rom[i];
+ rom[sizeof(rom) - 1] = -sum;
+
+- cpu_physical_memory_write_rom(option_rom, rom, sizeof(rom));
+- option_rom_setup_reset(option_rom, sizeof (rom));
++ memcpy(option_rom, rom, sizeof(rom));
+ }
+
+ static long get_file_size(FILE *f)
+@@ -563,7 +562,7 @@ static long get_file_size(FILE *f)
+ return size;
+ }
+
+-static void load_linux(target_phys_addr_t option_rom,
++static void load_linux(uint8_t *option_rom,
+ const char *kernel_filename,
+ const char *initrd_filename,
+ const char *kernel_cmdline)
+@@ -714,12 +713,6 @@ static void load_linux(target_phys_addr_t option_rom,
+ memset(gpr, 0, sizeof gpr);
+ gpr[4] = cmdline_addr-real_addr-16; /* SP (-16 is paranoia) */
+
+- option_rom_setup_reset(real_addr, setup_size);
+- option_rom_setup_reset(prot_addr, kernel_size);
+- option_rom_setup_reset(cmdline_addr, cmdline_size);
+- if (initrd_filename)
+- option_rom_setup_reset(initrd_addr, initrd_size);
+-
+ generate_bootsect(option_rom, gpr, seg, 0);
+ }
+
+@@ -927,7 +920,7 @@ vga_bios_error:
+ offset = 0;
+ if (linux_boot) {
+ option_rom_offset = qemu_ram_alloc(TARGET_PAGE_SIZE);
+- load_linux(option_rom_offset,
++ load_linux(phys_ram_base + option_rom_offset,
+ kernel_filename, initrd_filename, kernel_cmdline);
+ cpu_register_physical_memory(0xd0000, TARGET_PAGE_SIZE,
+ option_rom_offset);
+--
+1.6.2.5
+