qemu-0.15: Add recipe and forward port patches from 0.14

(From OE-Core rev: fc63229d9cd2e5061cab0686aba4d18bc3fb4e4f)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj 2011-10-05 12:38:27 -07:00 committed by Richard Purdie
parent 412a2dc2f9
commit 677d033224
17 changed files with 35081 additions and 0 deletions

View File

@ -0,0 +1,30 @@
After kernel commit:
http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-3.0/commit/?h=meta&id=9728c1b6a724daefc413b44e10253cdbb5e06d08
It appears that the emulated colours in qemu are incorrect and that
the red and blue channels are reversed. This patch reverses that logic
so the colours are correctly displayed on the versatile platform which
doesn't support the BGR bit.
RP 16/9/2011
Upstream-status: Pending
Index: qemu-0.14.0/hw/pl110.c
===================================================================
--- qemu-0.14.0.orig/hw/pl110.c 2011-09-16 14:45:34.228668514 +0100
+++ qemu-0.14.0/hw/pl110.c 2011-09-16 15:17:22.458671206 +0100
@@ -141,7 +141,11 @@
fprintf(stderr, "pl110: Bad color depth\n");
exit(1);
}
- if (s->cr & PL110_CR_BGR)
+
+ if (s->versatile && s->bpp == BPP_16)
+ /* Code assumes BPP_16 == 565 and BGR is never set on the versatile in 565 mode */
+ bpp_offset = 0;
+ else if (s->cr & PL110_CR_BGR)
bpp_offset = 0;
else
bpp_offset = 18;

View File

@ -0,0 +1,55 @@
Enable i386-linux-user
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
Upstream-Status: Inappropriate [configuration]
Index: qemu-0.14.0/Makefile.target
===================================================================
--- qemu-0.14.0.orig/Makefile.target
+++ qemu-0.14.0/Makefile.target
@@ -78,8 +78,13 @@ ifeq ($(TARGET_BASE_ARCH), i386)
libobj-y += cpuid.o
endif
libobj-$(CONFIG_NEED_MMU) += mmu.o
+ifndef CONFIG_LINUX_USER
libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
+else
+libobj-$(TARGET_I386) += dummygl.o
+libobj-$(TARGET_X86_64) += dummygl.o
+endif #CONFIG_LINUX_USER
libobj-$(TARGET_ARM) += dummygl.o
libobj-$(TARGET_MIPS) += dummygl.o
libobj-$(TARGET_PPC) += dummygl.o
Index: qemu-0.14.0/target-i386/dummygl.c
===================================================================
--- /dev/null
+++ qemu-0.14.0/target-i386/dummygl.c
@@ -0,0 +1,26 @@
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <stdint.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
+{
+
+}
+
+void opengl_process_enable(void)
+{
+
+}
+
+
+void mem_opengl(uint64_t ptr)
+{
+
+}
+
+void helper_opengl(void)
+{
+}

View File

@ -0,0 +1,39 @@
From c313f89c33217ac0e471554dace2144718f86669 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Thu, 13 May 2010 12:23:40 +0200
Subject: [PATCH] linux-user: use default mmap_min_addr 65536 when /proc/sys/vm/mmap_min_addr cannot be read
* 65536 is default at least for ubuntu and fedora.
---
linux-user/main.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
Upstream-Status: Pending
Index: qemu-0.14.0/linux-user/main.c
===================================================================
--- qemu-0.14.0.orig/linux-user/main.c
+++ qemu-0.14.0/linux-user/main.c
@@ -36,6 +36,7 @@
#include "envlist.h"
#define DEBUG_LOGFILE "/tmp/qemu.log"
+#define MMAP_MIN_ADDR_DEFAULT 65536
char *exec_path;
@@ -3010,8 +3011,14 @@ int main(int argc, char **argv, char **e
if (fscanf(fp, "%lu", &tmp) == 1) {
mmap_min_addr = tmp;
qemu_log("host mmap_min_addr=0x%lx\n", mmap_min_addr);
+ } else {
+ qemu_log("cannot read value from /proc/sys/vm/mmap_min_addr, assuming %d\n", MMAP_MIN_ADDR_DEFAULT);
+ mmap_min_addr = MMAP_MIN_ADDR_DEFAULT;
}
fclose(fp);
+ } else {
+ qemu_log("cannot open /proc/sys/vm/mmap_min_addr for reading, assuming %d\n", MMAP_MIN_ADDR_DEFAULT);
+ mmap_min_addr = MMAP_MIN_ADDR_DEFAULT;
}
}

View File

@ -0,0 +1,22 @@
In native builds, qemu can fail to find zlib development files in the native
sysroot and the build machine might not have zlib-dev packages installed.
Add CFLAGS to qemu's CFLAGS which in the native case means BUILD_CFLAGS are
added and files in the sysroot can be found.
Patch from Paul Eggleton, Comments by RP 28/11/10
Upstream-Status: Inappropriate [embedded specific]
Index: qemu-0.14.0/configure
===================================================================
--- qemu-0.14.0.orig/configure
+++ qemu-0.14.0/configure
@@ -229,6 +229,7 @@ QEMU_CFLAGS="-Wstrict-prototypes -Wredun
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
+QEMU_CFLAGS="$QEMU_CFLAGS $CFLAGS"
LDFLAGS="-g $LDFLAGS"
# make source path absolute

View File

@ -0,0 +1,127 @@
Upstream-Status: Inappropriate [configuration]
Index: qemu-0.14.0/Makefile.target
===================================================================
--- qemu-0.14.0.orig/Makefile.target
+++ qemu-0.14.0/Makefile.target
@@ -79,6 +79,12 @@ libobj-y += cpuid.o
endif
libobj-$(CONFIG_NEED_MMU) += mmu.o
libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
+libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
+libobj-$(TARGET_ARM) += dummygl.o
+libobj-$(TARGET_MIPS) += dummygl.o
+libobj-$(TARGET_MIPS64) += dummygl.o
+libobj-$(TARGET_PPC) += dummygl.o
+libobj-$(TARGET_SH4) += dummygl.o
libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
libobj-y += disas.o
Index: qemu-0.14.0/target-arm/dummygl.c
===================================================================
--- /dev/null
+++ qemu-0.14.0/target-arm/dummygl.c
@@ -0,0 +1,22 @@
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <stdint.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
+{
+
+}
+
+void opengl_process_enable(void)
+{
+
+}
+
+
+void mem_opengl(uint64_t ptr)
+{
+
+}
Index: qemu-0.14.0/target-mips/dummygl.c
===================================================================
--- /dev/null
+++ qemu-0.14.0/target-mips/dummygl.c
@@ -0,0 +1,22 @@
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <stdint.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
+{
+
+}
+
+void opengl_process_enable(void)
+{
+
+}
+
+
+void mem_opengl(uint64_t ptr)
+{
+
+}
Index: qemu-0.14.0/target-ppc/dummygl.c
===================================================================
--- /dev/null
+++ qemu-0.14.0/target-ppc/dummygl.c
@@ -0,0 +1,22 @@
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <stdint.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
+{
+
+}
+
+void opengl_process_enable(void)
+{
+
+}
+
+
+void mem_opengl(uint64_t ptr)
+{
+
+}
Index: qemu-0.14.0/target-sh4/dummygl.c
===================================================================
--- /dev/null
+++ qemu-0.14.0/target-sh4/dummygl.c
@@ -0,0 +1,22 @@
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <stdint.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
+{
+
+}
+
+void opengl_process_enable(void)
+{
+
+}
+
+
+void mem_opengl(uint64_t ptr)
+{
+
+}

View File

@ -0,0 +1,15 @@
Upstream-Status: Inappropriate [configuration]
Index: qemu-0.14.0/Makefile.target
===================================================================
--- qemu-0.14.0.orig/Makefile.target 2011-04-04 12:12:19.142871742 +0100
+++ qemu-0.14.0/Makefile.target 2011-04-04 12:12:21.772871742 +0100
@@ -362,7 +362,7 @@
monitor.o: hmp-commands.h qmp-commands.h
-LIBS += -lGL -lGLU
+LIBS += -lGL
$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)

View File

@ -0,0 +1,18 @@
# This is a workaround to the crashes seen on Ubuntu. Setting info to zero
# makes info.info.x11.display zero and avoids the calls to
# opengl_exec_set_parent_window, one of which is crashing.
Upstream-Status: Pending
Index: qemu-0.14.0/ui/sdl.c
===================================================================
--- qemu-0.14.0.orig/ui/sdl.c
+++ qemu-0.14.0/ui/sdl.c
@@ -863,6 +863,7 @@ void sdl_display_init(DisplayState *ds,
vi = SDL_GetVideoInfo();
host_format = *(vi->vfmt);
+ bzero(&info, sizeof(info));
SDL_GetWMInfo(&info);
if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
opengl_exec_set_parent_window(info.info.x11.display,

View File

@ -0,0 +1,22 @@
This patch is taken from debian. 128M is too less sometimes if distro
with lot of packages is booted so this patch raises the default to 384M
It has not been applied to upstream qemu
Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
Index: qemu-0.14.0/vl.c
===================================================================
--- qemu-0.14.0.orig/vl.c
+++ qemu-0.14.0/vl.c
@@ -168,7 +168,7 @@ int main(int argc, char **argv)
//#define DEBUG_NET
//#define DEBUG_SLIRP
-#define DEFAULT_RAM_SIZE 128
+#define DEFAULT_RAM_SIZE 384
#define MAX_VIRTIO_CONSOLES 1

View File

@ -0,0 +1,25 @@
Fedora 13 switched the default behaviour of the linker to no longer
indirectly link to required libraries (i.e. dependencies of a library
already linked to). Therefore we need to explicitly pass the depended on
libraries into the linker for building to work on Fedora 13.
More information is available on the Fedora Wiki:
https://fedoraproject.org/wiki/UnderstandingDSOLinkChange
JL - 15/06/10
Upstream-Status: Inappropriate [configuration]
Index: qemu-0.14.0/Makefile.target
===================================================================
--- qemu-0.14.0.orig/Makefile.target
+++ qemu-0.14.0/Makefile.target
@@ -218,7 +218,7 @@ obj-$(CONFIG_REALLY_VIRTFS) += virtio-9p
obj-y += rwhandler.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
obj-$(CONFIG_NO_KVM) += kvm-stub.o
-LIBS+=-lz
+LIBS+=-lz -lX11 -ldl
QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
QEMU_CFLAGS += $(VNC_SASL_CFLAGS)

View File

@ -0,0 +1,15 @@
Upstream-Status: Inappropriate [configuration]
Index: qemu-0.14.0/Makefile
===================================================================
--- qemu-0.14.0.orig/Makefile
+++ qemu-0.14.0/Makefile
@@ -235,7 +235,7 @@ install-sysconfig:
install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
ifneq ($(TOOLS),)
- $(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
+ $(INSTALL_PROG) $(TOOLS) "$(DESTDIR)$(bindir)"
endif
ifneq ($(BLOBS),)
$(INSTALL_DIR) "$(DESTDIR)$(datadir)"

View File

@ -0,0 +1,43 @@
Upstream-Status: Inappropriate [configuration]
diff -u -r qemu-0.14.0/Makefile.target qemu-0.14.0-fixed/Makefile.target
--- qemu-0.14.0/Makefile.target 2011-04-26 21:22:17.627637741 -0700
+++ qemu-0.14.0-fixed/Makefile.target 2011-04-26 21:23:02.767637747 -0700
@@ -82,8 +82,10 @@
libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
else
+ifdef CONFIG_SDL
libobj-$(TARGET_I386) += dummygl.o
libobj-$(TARGET_X86_64) += dummygl.o
+endif
endif #CONFIG_LINUX_USER
libobj-$(TARGET_ARM) += dummygl.o
libobj-$(TARGET_MIPS) += dummygl.o
Only in qemu-0.14.0-fixed: config.log
diff -u -r qemu-0.14.0/target-i386/helper.h qemu-0.14.0-fixed/target-i386/helper.h
--- qemu-0.14.0/target-i386/helper.h 2011-04-26 21:22:11.418637742 -0700
+++ qemu-0.14.0-fixed/target-i386/helper.h 2011-04-26 21:23:02.539637747 -0700
@@ -217,6 +217,9 @@
DEF_HELPER_2(rcrq, tl, tl, tl)
#endif
+#ifdef CONFIG_SDL
DEF_HELPER_0(opengl, void)
+#endif
+
#include "def-helper.h"
diff -u -r qemu-0.14.0/target-i386/translate.c qemu-0.14.0-fixed/target-i386/translate.c
--- qemu-0.14.0/target-i386/translate.c 2011-04-26 21:22:21.600637743 -0700
+++ qemu-0.14.0-fixed/target-i386/translate.c 2011-04-26 21:23:02.538637747 -0700
@@ -2659,7 +2659,7 @@
static void gen_interrupt(DisasContext *s, int intno,
target_ulong cur_eip, target_ulong next_eip)
{
-#if !defined(CONFIG_USER_ONLY)
+#if !defined(CONFIG_USER_ONLY) && defined(CONFIG_SDL)
if (enable_gl && intno == 0x99) {
gen_helper_opengl();
return;

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,118 @@
# fix VMware VGA driver depth calculation error, which may cause segmentation fault
#
# ktian1, 06/29/2010
Upstream-Status: Pending
Index: qemu-0.14.0/console.h
===================================================================
--- qemu-0.14.0.orig/console.h
+++ qemu-0.14.0/console.h
@@ -171,6 +171,12 @@ struct DisplayAllocator {
void (*free_displaysurface)(DisplaySurface *surface);
};
+struct DisplayPostCallback {
+ void (*postcall) (void *);
+ void *parm;
+ struct DisplayPostCallback *next;
+};
+
struct DisplayState {
struct DisplaySurface *surface;
void *opaque;
@@ -178,6 +184,7 @@ struct DisplayState {
struct DisplayAllocator* allocator;
struct DisplayChangeListener* listeners;
+ struct DisplayPostCallback* postcalls;
void (*mouse_set)(int x, int y, int on);
void (*cursor_define)(QEMUCursor *cursor);
@@ -229,6 +236,12 @@ static inline void register_displaychang
ds->listeners = dcl;
}
+static inline void register_displaypostcallback(DisplayState *ds, DisplayPostCallback *dpc)
+{
+ dpc->next = ds->postcalls;
+ ds->postcalls = dpc;
+}
+
static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
{
struct DisplayChangeListener *dcl = s->listeners;
Index: qemu-0.14.0/hw/vmware_vga.c
===================================================================
--- qemu-0.14.0.orig/hw/vmware_vga.c
+++ qemu-0.14.0/hw/vmware_vga.c
@@ -1001,8 +1001,9 @@ static void vmsvga_update_display(void *
}
}
-static void vmsvga_reset(struct vmsvga_state_s *s)
+static void vmsvga_reset(void *parm)
{
+ struct vmsvga_state_s *s = (struct vmsvga_state_s *)parm;
s->index = 0;
s->enable = 0;
s->config = 0;
@@ -1207,6 +1208,8 @@ static const VMStateDescription vmstate_
static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
{
+ DisplayPostCallback *dpc;
+
s->scratch_size = SVGA_SCRATCH_SIZE;
s->scratch = qemu_malloc(s->scratch_size * 4);
@@ -1224,7 +1227,10 @@ static void vmsvga_init(struct vmsvga_st
vga_init(&s->vga);
vmstate_register(NULL, 0, &vmstate_vga_common, &s->vga);
- vmsvga_reset(s);
+ dpc = qemu_mallocz(sizeof(DisplayPostCallback));
+ dpc->postcall = vmsvga_reset;
+ dpc->parm = s;
+ register_displaypostcallback(s->vga.ds, dpc);
}
static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num,
Index: qemu-0.14.0/qemu-common.h
===================================================================
--- qemu-0.14.0.orig/qemu-common.h
+++ qemu-0.14.0/qemu-common.h
@@ -241,6 +241,7 @@ typedef struct DisplayState DisplayState
typedef struct DisplayChangeListener DisplayChangeListener;
typedef struct DisplaySurface DisplaySurface;
typedef struct DisplayAllocator DisplayAllocator;
+typedef struct DisplayPostCallback DisplayPostCallback;
typedef struct PixelFormat PixelFormat;
typedef struct TextConsole TextConsole;
typedef TextConsole QEMUConsole;
Index: qemu-0.14.0/vl.c
===================================================================
--- qemu-0.14.0.orig/vl.c
+++ qemu-0.14.0/vl.c
@@ -1920,6 +1920,7 @@ int main(int argc, char **argv, char **e
char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
DisplayState *ds;
DisplayChangeListener *dcl;
+ DisplayPostCallback *dpc;
int cyls, heads, secs, translation;
QemuOpts *hda_opts = NULL, *opts;
QemuOptsList *olist;
@@ -3101,6 +3102,13 @@ int main(int argc, char **argv, char **e
/* display setup */
dpy_resize(ds);
+ dpc = ds->postcalls;
+ while (dpc != NULL) {
+ if (dpc->postcall != NULL)
+ dpc->postcall(dpc->parm);
+ dpc = dpc->next;
+ }
+
dcl = ds->listeners;
while (dcl != NULL) {
if (dcl->dpy_refresh != NULL) {

View File

@ -0,0 +1,65 @@
Allow releasing the GLXContext/Drawable with glXMakeCurrent.
---
commit d942ed4e853e08d2298f3e11e9a952c1d952bff5
tree f0a934efd8a8ff48e2d96f0d6fc7d70bef106bfe
parent 93619e6be184f8de08759d347825ee0d678a6f9c
author Andrzej Zaborowski <andrew.zaborowski@intel.com> Tue, 16 Jun 2009 22:22:05 +0200
committer Andrzej Zaborowski <andrew.zaborowski@intel.com> Tue, 16 Jun 2009 22:22:05 +0200
target-i386/opengl_exec.c | 31 ++++++++++++++++---------------
1 files changed, 16 insertions(+), 15 deletions(-)
Upstream-Status: Inappropriate [configuration]
Index: qemu-0.14.0/target-i386/opengl_exec.c
===================================================================
--- qemu-0.14.0.orig/target-i386/opengl_exec.c
+++ qemu-0.14.0/target-i386/opengl_exec.c
@@ -1600,10 +1600,9 @@ int do_function_call(int func_number, ar
fprintf(stderr, "client_drawable=%p fake_ctx=%d\n",
(void *) client_drawable, fake_ctxt);
- if (client_drawable == 0 && fake_ctxt == 0) {
+ if (client_drawable == 0 && fake_ctxt == 0)
ret_int = glXMakeCurrent(dpy, 0, NULL);
- process->current_state = &process->default_state;
- } else if ((drawable = (GLXDrawable)
+ else if ((drawable = (GLXDrawable)
get_association_fakepbuffer_pbuffer(
process, client_drawable))) {
GLXContext ctxt = get_association_fakecontext_glxcontext(
@@ -1651,19 +1650,21 @@ int do_function_call(int func_number, ar
}
if (ret_int) {
- for (i = 0; i < process->nb_states; i ++) {
- if (process->glstates[i]->fake_ctxt == fake_ctxt) {
- /* HACK !!! REMOVE */
- process->current_state = process->glstates[i];
- process->current_state->drawable = drawable;
- break;
- }
- }
+ if (fake_ctxt) {
+ for (i = 0; i < process->nb_states; i ++)
+ if (process->glstates[i]->fake_ctxt == fake_ctxt) {
+ /* HACK !!! REMOVE */
+ process->current_state = process->glstates[i];
+ process->current_state->drawable = drawable;
+ break;
+ }
- if (i == process->nb_states) {
- fprintf(stderr, "error remembering the new context\n");
- exit(-1);
- }
+ if (i == process->nb_states) {
+ fprintf(stderr, "error remembering the new context\n");
+ exit(-1);
+ }
+ } else
+ process->current_state = &process->default_state;
}
break;
}

View File

@ -0,0 +1,74 @@
This patch fix GL application start failure on qemu 0.14.0.
Some turn-on macro/variable are re-arranged, buffer pointer is extended to
support 32/64b combination of target/host.
This is not perfect fix, and we need consider other GL alternatives in future.
Upstream-Status: Inappropriate [other] - depends on qemu gl patch
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
Index: qemu-0.14.0/target-i386/opengl_func.h
===================================================================
--- qemu-0.14.0.orig/target-i386/opengl_func.h 2011-04-08 16:43:46.000000000 +0800
+++ qemu-0.14.0/target-i386/opengl_func.h 2011-04-08 16:45:55.000000000 +0800
@@ -26,8 +26,9 @@
#include "mesa_glext.h"
/* Argument list are internally of a type that can hold a target pointer
- * or a host pointer. */
-typedef target_phys_addr_t arg_t;
+ * or a host pointer. If 32b target runs on 64b host, it should be big enough
+ * to hold host pointer */
+typedef long unsigned int arg_t;
enum {
TYPE_NONE,
Index: qemu-0.14.0/target-i386/translate.c
===================================================================
--- qemu-0.14.0.orig/target-i386/translate.c 2011-04-08 16:19:15.000000000 +0800
+++ qemu-0.14.0/target-i386/translate.c 2011-04-08 16:22:03.000000000 +0800
@@ -2652,17 +2652,19 @@
s->is_jmp = DISAS_TB_JUMP;
}
-int enable_gl = 0;
+extern int enable_gl;
/* an interrupt is different from an exception because of the
privilege checks */
static void gen_interrupt(DisasContext *s, int intno,
target_ulong cur_eip, target_ulong next_eip)
{
+#if !defined(CONFIG_USER_ONLY)
if (enable_gl && intno == 0x99) {
gen_helper_opengl();
return;
}
+#endif
if (s->cc_op != CC_OP_DYNAMIC)
gen_op_set_cc_op(s->cc_op);
Index: qemu-0.14.0/vl.c
===================================================================
--- qemu-0.14.0.orig/vl.c 2011-04-08 16:11:43.000000000 +0800
+++ qemu-0.14.0/vl.c 2011-04-08 16:20:05.000000000 +0800
@@ -229,7 +229,7 @@
unsigned int nb_prom_envs = 0;
const char *prom_envs[MAX_PROM_ENVS];
int boot_menu;
-extern int enable_gl;
+int enable_gl = 0;
typedef struct FWBootEntry FWBootEntry;
@@ -1909,6 +1909,7 @@
return popt;
}
+#define TARGET_OPENGL_OK
int main(int argc, char **argv, char **envp)
{
const char *gdbstub_dev = NULL;

View File

@ -0,0 +1,45 @@
require qemu.inc
LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
PR = "r0"
FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
FILESDIR = "${WORKDIR}"
SRC_URI = "\
http://wiki.qemu.org/download/qemu-${PV}.tar.gz \
file://powerpc_rom.bin \
file://no-strip.patch \
file://linker-flags.patch \
file://qemu-vmware-vga-depth.patch \
file://fix-configure-checks.patch \
file://fallback-to-safe-mmap_min_addr.patch \
file://larger_default_ram_size.patch \
file://arm-bgr.patch \
"
# Only use the GL passthrough patches for native/nativesdk versions
QEMUGLPATCHES = "\
file://qemu-git-qemugl-host.patch \
file://fix-nogl.patch \
file://qemugl-allow-glxcontext-release.patch \
file://init-info.patch \
file://enable-i386-linux-user.patch \
file://qemugl-fix.patch \
file://opengl-sdl-fix.patch \
"
SRC_URI_append_virtclass-native = "\
${QEMUGLPATCHES} \
"
SRC_URI_append_virtclass-nativesdk = "\
${QEMUGLPATCHES} \
file://glflags.patch \
"
SRC_URI[md5sum] = "dbc55b014bcd21b98e347f6a90f7fb6d"
SRC_URI[sha256sum] = "0197e52dba07aeb6dfe0343b0c2ae08ed374d2cb0af3bb9ec73fed5baa0cb74d"
S = "${WORKDIR}/qemu-${PV}"