summaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authorStanislav Sedov <stas@FreeBSD.org>2011-08-31 02:34:44 +0000
committerStanislav Sedov <stas@FreeBSD.org>2011-08-31 02:34:44 +0000
commit764bc338f928e1e94d90b2e502c87a58bfba7918 (patch)
treef5023c5d9405944498667b711a0e6a5a58a2f369 /emulators
parent- Update to 0.1.8 (diff)
- Fix SMC91c111 device emulation in qemu. This allows FreeBSD to boot on
the GUMSTIX platform. Approved by: nox (maintainer) Obtained from: qemu git
Diffstat (limited to 'emulators')
-rw-r--r--emulators/qemu/Makefile2
-rw-r--r--emulators/qemu/files/patch-smc-fix38
2 files changed, 39 insertions, 1 deletions
diff --git a/emulators/qemu/Makefile b/emulators/qemu/Makefile
index b208ffa712d9..d99a5b77fc64 100644
--- a/emulators/qemu/Makefile
+++ b/emulators/qemu/Makefile
@@ -7,7 +7,7 @@
PORTNAME= qemu
PORTVERSION= 0.11.1
-PORTREVISION= 9
+PORTREVISION= 10
CATEGORIES= emulators
MASTER_SITES= ${MASTER_SITE_SAVANNAH} \
http://bellard.org/qemu/
diff --git a/emulators/qemu/files/patch-smc-fix b/emulators/qemu/files/patch-smc-fix
new file mode 100644
index 000000000000..0fb2a1ae7adb
--- /dev/null
+++ b/emulators/qemu/files/patch-smc-fix
@@ -0,0 +1,38 @@
+diff --git a/hw/smc91c111.c b/hw/smc91c111.c
+index c1a88c9..e4a2447 100644
+--- qemu/hw/smc91c111.c
++++ qemu/hw/smc91c111.c
+@@ -250,6 +250,7 @@ static void smc91c111_writeb(void *opaque, target_phys_addr_t offset,
+ {
+ smc91c111_state *s = (smc91c111_state *)opaque;
+
++ offset = offset & 0xf;
+ if (offset == 14) {
+ s->bank = value;
+ return;
+@@ -276,6 +277,8 @@ static void smc91c111_writeb(void *opaque, target_phys_addr_t offset,
+ case 10: case 11: /* RPCR */
+ /* Ignored */
+ return;
++ case 12: case 13: /* Reserved */
++ return;
+ }
+ break;
+
+@@ -421,6 +424,7 @@ static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset)
+ {
+ smc91c111_state *s = (smc91c111_state *)opaque;
+
++ offset = offset & 0xf;
+ if (offset == 14) {
+ return s->bank;
+ }
+@@ -461,6 +465,8 @@ static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset)
+ case 10: case 11: /* RPCR */
+ /* Not implemented. */
+ return 0;
++ case 12: case 13: /* Reserved */
++ return 0;
+ }
+ break;
+