diff options
| author | Jeff Dike <jdike@addtoit.com> | 2010-05-20 13:02:39 -0400 | 
|---|---|---|
| committer | Joshua Lock <josh@linux.intel.com> | 2010-05-26 14:14:48 +0100 | 
| commit | a49e605a52a3bd6b688a16104fa9b5d17e06bcd5 (patch) | |
| tree | c5c36a93775d59b3675ee9d671f00300959fcd72 | |
| parent | eb69ecdfcc23cad8a40c3d57bc8e989e6e0666d0 (diff) | |
| download | openembedded-core-a49e605a52a3bd6b688a16104fa9b5d17e06bcd5.tar.gz openembedded-core-a49e605a52a3bd6b688a16104fa9b5d17e06bcd5.tar.bz2 openembedded-core-a49e605a52a3bd6b688a16104fa9b5d17e06bcd5.zip | |
qemu: Updated to 0.12.0
Updated the metadata in the recipe, changed the git revision in
poky-default-revisions.inc, and pulled the qemu patches forward.
| -rw-r--r-- | meta/conf/distro/include/poky-default-revisions.inc | 2 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/2ca2078e287174522e3a6229618947d3d285b8c0.patch | 130 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/fix-dirent.patch | 6 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/fix-nogl.patch | 31 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/no-strip.patch | 30 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch | 561 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch | 12 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/workaround_bad_futex_headers.patch | 10 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu-git/zlibsearch.patch | 13 | ||||
| -rw-r--r-- | meta/packages/qemu/qemu_git.bb | 10 | 
10 files changed, 291 insertions, 514 deletions
| diff --git a/meta/conf/distro/include/poky-default-revisions.inc b/meta/conf/distro/include/poky-default-revisions.inc index 7a3fc8bcc7..a30208fc7e 100644 --- a/meta/conf/distro/include/poky-default-revisions.inc +++ b/meta/conf/distro/include/poky-default-revisions.inc @@ -105,7 +105,7 @@ SRCREV_pn-pkgconfig ??= "66d49f1375fec838bcd301bb4ca2ef76cee0e47c"  SRCREV_pn-psplash ??= "422"  SRCREV_pn-pseudo ??= "086e65c90420b3d38f30c3cd81a0f8573f6f69cf"  SRCREV_pn-pseudo-native ??= "086e65c90420b3d38f30c3cd81a0f8573f6f69cf" -QEMUSRCREV ??= "9eab386edbf8cf002a731f8204a156f243a47a57" +QEMUSRCREV ??= "72bb3c7571226af13cfe9eec020a56add3d30a70"  SRCREV_pn-qemu-native ??= "${QEMUSRCREV}"  SRCREV_pn-qemu-nativesdk ??= "${QEMUSRCREV}"  SRCREV_pn-qemu ??= "${QEMUSRCREV}" diff --git a/meta/packages/qemu/qemu-git/2ca2078e287174522e3a6229618947d3d285b8c0.patch b/meta/packages/qemu/qemu-git/2ca2078e287174522e3a6229618947d3d285b8c0.patch deleted file mode 100644 index e2ebf67922..0000000000 --- a/meta/packages/qemu/qemu-git/2ca2078e287174522e3a6229618947d3d285b8c0.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 2ca2078e287174522e3a6229618947d3d285b8c0 Mon Sep 17 00:00:00 2001 -From: François Revol <revol@free.fr> -Date: Tue, 25 Aug 2009 09:14:10 +0000 -Subject: Fixed wacom emulation - -- for absolute mode, scale coordinates to the real device maximum values, -since some drivers (on Haiku and Linux at least) need them as such, -and the HID descriptor is boggus on some models anyway, -- keep the coordinates even when no button is pressed, on real tablet -the pen is sensed on the surface even without direct contact, -and drivers expect this, -- map left button to pressure according to what the Haiku driver wants, -- map the right button to the pen button, -- map the middle button to the eraser, -- use asynchronous reporting as the hid code does, stops the Haiku driver -(and probably others) from spending 50% cpu polling for changes. - -Signed-off-by: François Revol <revol@free.fr> -Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> ---- -Index: git/hw/usb-wacom.c -=================================================================== ---- git.orig/hw/usb-wacom.c	2009-11-24 14:10:15.000000000 +0000 -+++ git/hw/usb-wacom.c	2009-11-24 16:39:26.000000000 +0000 -@@ -50,6 +50,8 @@ -         WACOM_MODE_HID = 1, -         WACOM_MODE_WACOM = 2, -     } mode; -+    uint8_t idle; -+    int changed; - } USBWacomState; -  - static const uint8_t qemu_wacom_dev_descriptor[] = { -@@ -125,6 +127,7 @@ -     s->dy += dy1; -     s->dz += dz1; -     s->buttons_state = buttons_state; -+    s->changed = 1; - } -  - static void usb_wacom_event(void *opaque, -@@ -132,10 +135,12 @@ - { -     USBWacomState *s = opaque; -  --    s->x = x; --    s->y = y; -+    /* scale to Penpartner resolution */ -+    s->x = (x * 5040 / 0x7FFF); -+    s->y = (y * 3780 / 0x7FFF); -     s->dz += dz; -     s->buttons_state = buttons_state; -+    s->changed = 1; - } -  - static inline int int_clamp(int val, int vmin, int vmax) -@@ -199,26 +204,22 @@ -     if (s->buttons_state & MOUSE_EVENT_LBUTTON) -         b |= 0x01; -     if (s->buttons_state & MOUSE_EVENT_RBUTTON) --        b |= 0x02; -+        b |= 0x40; -     if (s->buttons_state & MOUSE_EVENT_MBUTTON) --        b |= 0x04; -+        b |= 0x20; /* eraser */ -  -     if (len < 7) -         return 0; -  -     buf[0] = s->mode; --    buf[5] = 0x00; --    if (b) { --        buf[1] = s->x & 0xff; --        buf[2] = s->x >> 8; --        buf[3] = s->y & 0xff; --        buf[4] = s->y >> 8; -+    buf[5] = 0x00 | (b & 0xf0); -+    buf[1] = s->x & 0xff; -+    buf[2] = s->x >> 8; -+    buf[3] = s->y & 0xff; -+    buf[4] = s->y >> 8; -+    if (b & 0x3f) { -         buf[6] = 0; -     } else { --        buf[1] = 0; --        buf[2] = 0; --        buf[3] = 0; --        buf[4] = 0; -         buf[6] = (unsigned char) -127; -     } -  -@@ -350,7 +351,12 @@ -         else if (s->mode == WACOM_MODE_WACOM) -             ret = usb_wacom_poll(s, data, length); -         break; -+    case HID_GET_IDLE: -+        ret = 1; -+        data[0] = s->idle; -+        break; -     case HID_SET_IDLE: -+        s->idle = (uint8_t) (value >> 8); -         ret = 0; -         break; -     default: -@@ -369,6 +375,9 @@ -     switch (p->pid) { -     case USB_TOKEN_IN: -         if (p->devep == 1) { -+            if (!(s->changed || s->idle)) -+                return USB_RET_NAK; -+            s->changed = 0; -             if (s->mode == WACOM_MODE_HID) -                 ret = usb_mouse_poll(s, p->data, p->len); -             else if (s->mode == WACOM_MODE_WACOM) -@@ -399,7 +408,6 @@ -     s = qemu_mallocz(sizeof(USBWacomState)); -     s->dev.speed = USB_SPEED_FULL; -     s->dev.handle_packet = usb_generic_handle_packet; -- -     s->dev.handle_reset = usb_wacom_handle_reset; -     s->dev.handle_control = usb_wacom_handle_control; -     s->dev.handle_data = usb_wacom_handle_data; -@@ -407,6 +415,7 @@ -  -     pstrcpy(s->dev.devname, sizeof(s->dev.devname), -             "QEMU PenPartner Tablet"); -+    s->changed = 1; -  -     return (USBDevice *) s; - } diff --git a/meta/packages/qemu/qemu-git/fix-dirent.patch b/meta/packages/qemu/qemu-git/fix-dirent.patch index 575dbfa0c9..8bbfa0e88e 100644 --- a/meta/packages/qemu/qemu-git/fix-dirent.patch +++ b/meta/packages/qemu/qemu-git/fix-dirent.patch @@ -1,7 +1,7 @@ -Index: trunk/linux-user/syscall.c +Index: qemu/linux-user/syscall.c  =================================================================== ---- trunk.orig/linux-user/syscall.c	2009-01-05 12:51:52.000000000 +0000 -+++ trunk/linux-user/syscall.c	2009-01-05 12:51:52.000000000 +0000 +--- qemu.orig/linux-user/syscall.c	2010-05-11 13:16:22.421783949 -0400 ++++ qemu/linux-user/syscall.c	2010-05-11 13:16:31.759805849 -0400  @@ -26,6 +26,7 @@   #include <errno.h>   #include <unistd.h> diff --git a/meta/packages/qemu/qemu-git/fix-nogl.patch b/meta/packages/qemu/qemu-git/fix-nogl.patch index 6cb812f00c..68efab3a1f 100644 --- a/meta/packages/qemu/qemu-git/fix-nogl.patch +++ b/meta/packages/qemu/qemu-git/fix-nogl.patch @@ -1,20 +1,21 @@ -Index: git/Makefile.target +Index: qemu/Makefile.target  =================================================================== ---- git.orig/Makefile.target	2009-06-09 22:05:27.000000000 +0100 -+++ git/Makefile.target	2009-06-09 22:05:28.000000000 +0100 -@@ -155,6 +155,8 @@ +--- qemu.orig/Makefile.target	2010-05-11 16:53:34.545811866 -0400 ++++ qemu/Makefile.target	2010-05-11 16:53:37.743809704 -0400 +@@ -47,6 +47,9 @@ libobj-$(CONFIG_NOSOFTFLOAT) += fpu/soft + libobj-y += op_helper.o helper.o + 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_ARM) += neon_helper.o iwmmxt_helper.o + libobj-$(TARGET_ALPHA) += alpha_palcode.o - ifeq ($(TARGET_BASE_ARCH), i386) - LIBOBJS+=helper_opengl.o opengl_exec.o -+else -+LIBOBJS+=dummygl.o - endif -  - ifeq ($(TARGET_BASE_ARCH), arm) -Index: git/target-arm/dummygl.c +Index: qemu/target-arm/dummygl.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-arm/dummygl.c	2009-06-09 22:15:55.000000000 +0100 ++++ qemu/target-arm/dummygl.c	2010-05-11 16:53:37.743809704 -0400  @@ -0,0 +1,22 @@  +#include <string.h>  +#include <stdlib.h> @@ -38,10 +39,10 @@ Index: git/target-arm/dummygl.c  +{  +  +} -Index: git/target-mips/dummygl.c +Index: qemu/target-mips/dummygl.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-mips/dummygl.c	2009-06-09 22:15:55.000000000 +0100 ++++ qemu/target-mips/dummygl.c	2010-05-11 16:53:37.744811919 -0400  @@ -0,0 +1,22 @@  +#include <string.h>  +#include <stdlib.h> diff --git a/meta/packages/qemu/qemu-git/no-strip.patch b/meta/packages/qemu/qemu-git/no-strip.patch index fc69b37e16..8a95a688b3 100644 --- a/meta/packages/qemu/qemu-git/no-strip.patch +++ b/meta/packages/qemu/qemu-git/no-strip.patch @@ -1,22 +1,26 @@ ---- qemu.orig/Makefile	2008-01-29 23:16:27.000000000 -0800 -+++ qemu-0.9.1/Makefile	2008-01-29 23:16:38.000000000 -0800 -@@ -174,7 +174,7 @@ +Index: qemu/Makefile +=================================================================== +--- qemu.orig/Makefile	2010-05-11 17:17:06.416912704 -0400 ++++ qemu/Makefile	2010-05-11 17:17:17.051812402 -0400 +@@ -300,7 +300,7 @@ endif   install: all $(if $(BUILD_DOCS),install-doc) - 	mkdir -p "$(DESTDIR)$(bindir)" + 	$(INSTALL_DIR) "$(DESTDIR)$(bindir)"   ifneq ($(TOOLS),) --	$(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)" -+	$(INSTALL) -m 755 $(TOOLS) "$(DESTDIR)$(bindir)" +-	$(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)" ++	$(INSTALL_PROG) $(TOOLS) "$(DESTDIR)$(bindir)"   endif - 	mkdir -p "$(DESTDIR)$(datadir)" - 	for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \ ---- qemu.orig/Makefile.target	2008-01-29 23:16:27.000000000 -0800 -+++ qemu-0.9.1/Makefile.target	2008-01-29 23:17:33.000000000 -0800 -@@ -632,7 +632,7 @@ + ifneq ($(BLOBS),) + 	$(INSTALL_DIR) "$(DESTDIR)$(datadir)" +Index: qemu/Makefile.target +=================================================================== +--- qemu.orig/Makefile.target	2010-05-11 17:17:12.188784092 -0400 ++++ qemu/Makefile.target	2010-05-11 17:17:17.052808122 -0400 +@@ -351,7 +351,7 @@ clean:   install: all   ifneq ($(PROGS),) --	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)" +-	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"  +	$(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"   endif - ifneq ($(wildcard .depend),) + # Include automatically generated dependency files diff --git a/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch b/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch index 00d9ca7cc2..7ec491daed 100644 --- a/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch +++ b/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch @@ -1,21 +1,18 @@ -Index: git/Makefile.target +Index: qemu/Makefile.target  =================================================================== ---- git.orig/Makefile.target	2009-12-02 13:13:56.000000000 +0000 -+++ git/Makefile.target	2010-01-14 16:34:58.000000000 +0000 -@@ -153,6 +153,10 @@ - CPPFLAGS+=-I$(SRC_PATH)/fpu - LIBOBJS+= op_helper.o helper.o +--- qemu.orig/Makefile.target	2010-05-11 18:05:22.955784896 -0400 ++++ qemu/Makefile.target	2010-05-14 13:34:07.721301429 -0400 +@@ -46,6 +46,7 @@ libobj-$(CONFIG_SOFTFLOAT) += fpu/softfl + libobj-$(CONFIG_NOSOFTFLOAT) += fpu/softfloat-native.o + libobj-y += op_helper.o helper.o + libobj-$(CONFIG_NEED_MMU) += mmu.o ++libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o + libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o + libobj-$(TARGET_ALPHA) += alpha_palcode.o -+ifeq ($(TARGET_BASE_ARCH), i386) -+LIBOBJS+=helper_opengl.o opengl_exec.o -+endif -+ - ifeq ($(TARGET_BASE_ARCH), arm) - LIBOBJS+= neon_helper.o iwmmxt_helper.o - endif -@@ -224,6 +228,21 @@ -  - cpu-exec.o: CFLAGS += $(HELPER_CFLAGS) +@@ -82,6 +83,21 @@ op_helper.o cpu-exec.o: QEMU_CFLAGS += $ + # cpu_signal_handler() in cpu-exec.c. + signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)  +parse_gl_h: parse_gl_h.c  +	$(HOST_CC) -g -o $@ $< @@ -35,29 +32,31 @@ Index: git/Makefile.target   #########################################################   # Linux user emulator target -@@ -584,7 +603,7 @@ - OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o - OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o - OBJS += device-hotplug.o pci-hotplug.o --CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE -+CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE -DTARGET_OPENGL_OK - endif - ifeq ($(TARGET_BASE_ARCH), ppc) - CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE -@@ -727,7 +746,7 @@ - $(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) +@@ -196,6 +212,10 @@ obj-i386-y += usb-uhci.o vmmouse.o vmpor + obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o + obj-i386-y += ne2000-isa.o +  ++ifeq ($(TARGET_BASE_ARCH), i386) ++QEMU_CFLAGS += -DTARGET_OPENGL_OK ++endif ++ + # shared objects + obj-ppc-y = ppc.o ide/core.o ide/qdev.o ide/isa.o ide/pci.o ide/macio.o + obj-ppc-y += ide/cmd646.o +@@ -303,6 +323,8 @@ vl.o: qemu-options.h - $(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a --	$(LINK) -+	$(LINK) -lGL -lGLU + monitor.o: qemu-monitor.h - endif # !CONFIG_USER_ONLY ++LIBS += -lGL -lGLU ++ + ARLIBS=../libqemu_common.a libqemu.a $(HWLIB) -Index: git/hw/pixel_ops.h + endif # CONFIG_SOFTMMU +Index: qemu/hw/pixel_ops.h  =================================================================== ---- git.orig/hw/pixel_ops.h	2009-12-02 13:13:56.000000000 +0000 -+++ git/hw/pixel_ops.h	2010-01-14 15:55:40.000000000 +0000 -@@ -4,6 +4,12 @@ +--- qemu.orig/hw/pixel_ops.h	2010-05-11 18:05:22.959804376 -0400 ++++ qemu/hw/pixel_ops.h	2010-05-12 12:10:40.092908994 -0400 +@@ -4,6 +4,12 @@ static inline unsigned int rgb_to_pixel8       return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6);   } @@ -70,11 +69,11 @@ Index: git/hw/pixel_ops.h   static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g,                                             unsigned int b)   { -Index: git/hw/vmware_vga.c +Index: qemu/hw/vmware_vga.c  =================================================================== ---- git.orig/hw/vmware_vga.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/hw/vmware_vga.c	2010-01-14 15:55:40.000000000 +0000 -@@ -484,6 +484,8 @@ +--- qemu.orig/hw/vmware_vga.c	2010-05-11 18:05:22.959804376 -0400 ++++ qemu/hw/vmware_vga.c	2010-05-12 12:10:40.124785891 -0400 +@@ -489,6 +489,8 @@ static inline void vmsvga_cursor_define(   #define CMD(f)	le32_to_cpu(s->cmd->f) @@ -83,7 +82,7 @@ Index: git/hw/vmware_vga.c   static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)   {       if (!s->config || !s->enable) -@@ -493,11 +495,18 @@ +@@ -498,11 +500,18 @@ static inline int vmsvga_fifo_empty(stru   static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)   { @@ -106,7 +105,7 @@ Index: git/hw/vmware_vga.c   }   static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s) -@@ -507,12 +516,12 @@ +@@ -512,12 +521,12 @@ static inline uint32_t vmsvga_fifo_read(   static void vmsvga_fifo_run(struct vmsvga_state_s *s)   { @@ -121,7 +120,7 @@ Index: git/hw/vmware_vga.c           case SVGA_CMD_UPDATE:           case SVGA_CMD_UPDATE_VERBOSE:               x = vmsvga_fifo_read(s); -@@ -612,7 +621,7 @@ +@@ -617,7 +626,7 @@ static void vmsvga_fifo_run(struct vmsvg               while (args --)                   vmsvga_fifo_read(s);               printf("%s: Unknown command 0x%02x in SVGA command FIFO\n", @@ -130,71 +129,24 @@ Index: git/hw/vmware_vga.c               break;           } -@@ -914,8 +923,9 @@ -     s->width = -1; -     s->height = -1; -     s->svgaid = SVGA_ID; --    s->depth = 24; -+    s->depth = 32; -     s->bypp = (s->depth + 7) >> 3; -+    s->bypp = 4; /* XXX: until we can get host's actual depth */ -     s->cursor.on = 0; -     s->redraw_fifo_first = 0; -     s->redraw_fifo_last = 0; -@@ -1140,6 +1150,12 @@ -     /* XXX: use optimized standard vga accesses */ -     cpu_register_physical_memory(VBE_DISPI_LFB_PHYSICAL_ADDRESS, -                                  vga_ram_size, vga_ram_offset); -+ -+#ifdef EMBED_STDVGA -+    s->map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS; -+    s->map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size; -+    vga_dirty_log_start((VGAState *) s); -+#endif - #endif - } +@@ -1136,6 +1145,12 @@ static void vmsvga_init(struct vmsvga_st -Index: git/kqemu.c -=================================================================== ---- git.orig/kqemu.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/kqemu.c	2010-01-14 15:55:40.000000000 +0000 -@@ -93,6 +93,8 @@ - int qpi_io_memory; - uint32_t kqemu_comm_base; /* physical address of the QPI communication page */ +     vga_init_vbe(&s->vga); -+extern int enable_gl; ++#ifdef EMBED_STDVGA ++    s->vga.map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS; ++    s->vga.map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size; ++    vga_dirty_log_start(s); ++#endif  + - #define cpuid(index, eax, ebx, ecx, edx) \ -   asm volatile ("cpuid" \ -                 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \ -@@ -860,6 +862,22 @@ -     else -         env->hflags &= ~HF_OSFXSR_MASK; +     rom_add_vga(VGABIOS_FILENAME); -+    /* OPENGL Stuff */ -+    if (enable_gl && ((env->hflags & HF_CPL_MASK) == 3)) { -+        int index = (env->eip >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); -+        if (env->segs[R_CS].base != 0) -+            fprintf(stderr, "env->segs[R_CS].base != 0 !\n"); -+        else if (__builtin_expect(env->tlb_table[1][index].addr_code != -+                           (env->eip & TARGET_PAGE_MASK), 0)) -+            ldub_code(env->eip); -+ -+        if (env->tlb_table[1][index].addend) { -+            unsigned char *ptr = env->eip + env->tlb_table[1][index].addend; -+            if (ptr[0] == 0xcd && ptr[1] == 0x99) -+                helper_opengl(); -+        } -+    } -+ -     LOG_INT("kqemu: kqemu_cpu_exec: ret=0x%x\n", ret); -     if (ret == KQEMU_RET_SYSCALL) { -         /* syscall instruction */ -Index: git/qemu-char.c +     vmsvga_reset(s); +Index: qemu/qemu-char.c  =================================================================== ---- git.orig/qemu-char.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/qemu-char.c	2010-01-14 15:55:40.000000000 +0000 -@@ -2112,6 +2112,69 @@ +--- qemu.orig/qemu-char.c	2010-05-11 18:05:22.955784896 -0400 ++++ qemu/qemu-char.c	2010-05-12 17:20:54.280909040 -0400 +@@ -2232,6 +2232,69 @@ static CharDriverState *qemu_chr_open_so       return NULL;   } @@ -253,7 +205,7 @@ Index: git/qemu-char.c  +    chr->opaque = chr;  +    chr->chr_write = opengl_chr_write;  + -+    qemu_chr_reset(chr); ++    qemu_chr_generic_open(chr);  +  +    return chr;  +} @@ -261,57 +213,66 @@ Index: git/qemu-char.c  +#define qemu_chr_open_opengl() 0  +#endif  + - CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*init)(struct CharDriverState *s)) + QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)   { -     const char *p; -@@ -2192,6 +2255,9 @@ -         chr = chr_baum_init(); -     } else - #endif -+    if (!strcmp(filename, "opengl")) { -+        chr = qemu_chr_open_opengl(); -+    } else -     { -         chr = NULL; +     char host[65], port[33], width[8], height[8]; +@@ -2352,6 +2415,10 @@ QemuOpts *qemu_chr_parse_compat(const ch +         qemu_opt_set(opts, "path", filename); +         return opts;       } -Index: git/sdl.c ++    if (!strcmp(filename, "opengl")){ ++        qemu_opt_set(opts, "backend", "opengl"); ++        return opts; ++    } +  + fail: +     fprintf(stderr, "%s: fail on \"%s\"\n", __FUNCTION__, filename); +@@ -2368,6 +2435,7 @@ static const struct { +     { .name = "udp",       .open = qemu_chr_open_udp }, +     { .name = "msmouse",   .open = qemu_chr_open_msmouse }, +     { .name = "vc",        .open = text_console_init }, ++    { .name = "opengl",	   .open = qemu_chr_open_opengl }, + #ifdef _WIN32 +     { .name = "file",      .open = qemu_chr_open_win_file_out }, +     { .name = "pipe",      .open = qemu_chr_open_win_pipe }, +Index: qemu/sdl.c  =================================================================== ---- git.orig/sdl.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/sdl.c	2010-01-14 15:55:40.000000000 +0000 -@@ -54,6 +54,8 @@ - static int guest_x, guest_y; - static SDL_Cursor *guest_sprite = 0; +--- qemu.orig/sdl.c	2010-05-11 18:05:22.959804376 -0400 ++++ qemu/sdl.c	2010-05-12 12:10:40.128783931 -0400 +@@ -58,6 +58,8 @@ static uint8_t allocator; + static SDL_PixelFormat host_format; + static int scaling_active = 0;  +extern void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window);  +   static void sdl_update(DisplayState *ds, int x, int y, int w, int h)   { -     SDL_Rect rec; -@@ -85,7 +87,9 @@ +     //    printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h); +@@ -119,12 +121,22 @@ static void do_sdl_resize(int new_width,   static void sdl_resize(DisplayState *ds)   { +-    if  (!allocator) {  +    SDL_SysWMinfo info; -     int flags;  +    static Display *dpy; -  -     //    printf("resizing to %d %d\n", w, h); -  -@@ -104,6 +108,13 @@ -     } -  -     sdl_setdata(ds);  + -+    SDL_GetWMInfo(&info); -+    if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display && -+                    (!dpy || dpy == info.info.x11.display)) { -+        dpy = info.info.x11.display; -+        opengl_exec_set_parent_window(dpy, info.info.x11.window); -+    } - } -  - /* generic keyboard conversion */ -@@ -323,7 +334,7 @@ ++     if  (!allocator) { +         if (!scaling_active) +             do_sdl_resize(ds_get_width(ds), ds_get_height(ds), 0); +         else if (real_screen->format->BitsPerPixel != ds_get_bits_per_pixel(ds)) +             do_sdl_resize(real_screen->w, real_screen->h, ds_get_bits_per_pixel(ds)); +         sdl_setdata(ds); ++ ++        SDL_GetWMInfo(&info); ++        if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display && ++            (!dpy || dpy == info.info.x11.display)) { ++                dpy = info.info.x11.display; ++                opengl_exec_set_parent_window(dpy, info.info.x11.window); ++        } +     } else { +         if (guest_screen != NULL) { +             SDL_FreeSurface(guest_screen); +@@ -453,7 +465,7 @@ static void sdl_show_cursor(void)       if (!kbd_mouse_is_absolute()) {           SDL_ShowCursor(1); @@ -320,7 +281,7 @@ Index: git/sdl.c                   (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))               SDL_SetCursor(guest_sprite);           else -@@ -334,7 +345,8 @@ +@@ -464,7 +476,8 @@ static void sdl_show_cursor(void)   static void sdl_grab_start(void)   {       if (guest_cursor) { @@ -330,7 +291,7 @@ Index: git/sdl.c           if (!kbd_mouse_is_absolute() && !absolute_enabled)               SDL_WarpMouse(guest_x, guest_y);       } else -@@ -375,8 +387,8 @@ +@@ -505,8 +518,8 @@ static void sdl_send_mouse_event(int dx,   	    absolute_enabled = 1;   	} @@ -341,7 +302,7 @@ Index: git/sdl.c       } else if (absolute_enabled) {   	sdl_show_cursor();   	absolute_enabled = 0; -@@ -606,7 +618,8 @@ +@@ -760,7 +773,8 @@ static void sdl_mouse_warp(int x, int y,           if (!guest_cursor)               sdl_show_cursor();           if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) { @@ -351,18 +312,7 @@ Index: git/sdl.c               if (!kbd_mouse_is_absolute() && !absolute_enabled)                   SDL_WarpMouse(x, y);           } -@@ -631,6 +644,10 @@ -         line = image; -         for (x = 0; x < width; x ++, dst ++) { -             switch (bpp) { -+            case 32: -+                src = *(line ++); src |= *(line ++); -+                src = *(line ++); src |= *(line ++); -+                break; -             case 24: -                 src = *(line ++); src |= *(line ++); src |= *(line ++); -                 break; -@@ -657,7 +674,7 @@ +@@ -814,7 +828,7 @@ static void sdl_mouse_define(int width,        }       guest_sprite = SDL_CreateCursor(sprite, mask, width, height, hot_x, hot_y); @@ -371,17 +321,17 @@ Index: git/sdl.c               (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))           SDL_SetCursor(guest_sprite);   } -@@ -673,6 +690,7 @@ - { +@@ -831,6 +845,7 @@ void sdl_display_init(DisplayState *ds,        int flags;       uint8_t data = 0; +     DisplayAllocator *da;  +    SDL_SysWMinfo info; +     const SDL_VideoInfo *vi;   #if defined(__APPLE__) -     /* always use generic keymaps */ -@@ -694,6 +712,12 @@ -         exit(1); -     } +@@ -855,6 +870,12 @@ void sdl_display_init(DisplayState *ds,  +     vi = SDL_GetVideoInfo(); +     host_format = *(vi->vfmt);  +    SDL_GetWMInfo(&info);  +    if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display) @@ -392,7 +342,7 @@ Index: git/sdl.c       dcl = qemu_mallocz(sizeof(DisplayChangeListener));       dcl->dpy_update = sdl_update;       dcl->dpy_resize = sdl_resize; -@@ -717,4 +741,9 @@ +@@ -890,4 +911,9 @@ void sdl_display_init(DisplayState *ds,            gui_fullscreen_initial_grab = 1;           sdl_grab_start();       } @@ -402,31 +352,19 @@ Index: git/sdl.c  +        opengl_exec_set_parent_window(info.info.x11.display,  +                        info.info.x11.window);   } -Index: git/slirp/ctl.h +Index: qemu/slirp/udp.c  =================================================================== ---- git.orig/slirp/ctl.h	2009-12-02 13:13:56.000000000 +0000 -+++ git/slirp/ctl.h	2010-01-14 15:55:40.000000000 +0000 -@@ -2,6 +2,7 @@ - #define CTL_EXEC	1 - #define CTL_ALIAS	2 - #define CTL_DNS		3 -+#define CTL_OPENGL	6 -  - #define CTL_SPECIAL	"10.0.2.0" - #define CTL_LOCAL	"10.0.2.15" -Index: git/slirp/udp.c -=================================================================== ---- git.orig/slirp/udp.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/slirp/udp.c	2010-01-14 15:55:40.000000000 +0000 +--- qemu.orig/slirp/udp.c	2010-05-11 18:05:22.955784896 -0400 ++++ qemu/slirp/udp.c	2010-05-12 12:10:40.129784123 -0400  @@ -40,6 +40,7 @@   #include <slirp.h>   #include "ip_icmp.h"  +#include "bswap.h" - #ifdef LOG_ENABLED - struct udpstat udpstat; -@@ -153,6 +154,11 @@ + static u_int8_t udp_tos(struct socket *so); +  +@@ -125,6 +126,11 @@ udp_input(register struct mbuf *m, int i               goto bad;           } @@ -435,25 +373,25 @@ Index: git/slirp/udp.c  +            goto bad;  +        }  + -         if (slirp_restrict) +         if (slirp->restricted) {               goto bad; -  -Index: git/sysemu.h +         } +Index: qemu/sysemu.h  =================================================================== ---- git.orig/sysemu.h	2009-12-02 13:13:56.000000000 +0000 -+++ git/sysemu.h	2010-01-14 15:55:40.000000000 +0000 -@@ -96,6 +96,7 @@ - extern int no_quit; - extern int semihosting_enabled; +--- qemu.orig/sysemu.h	2010-05-11 18:05:22.959804376 -0400 ++++ qemu/sysemu.h	2010-05-12 12:10:40.129784123 -0400 +@@ -141,6 +141,7 @@ extern int semihosting_enabled;   extern int old_param; + extern int boot_menu; + extern QEMUClock *rtc_clock;  +extern int force_pointer; - extern const char *bootp_filename; - #ifdef USE_KQEMU -Index: git/target-i386/beginend_funcs.sh + #define MAX_NODES 64 + extern int nb_numa_nodes; +Index: qemu/target-i386/beginend_funcs.sh  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/beginend_funcs.sh	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/beginend_funcs.sh	2010-05-12 12:10:40.129784123 -0400  @@ -0,0 +1,23 @@  +#! /bin/sh  +# Copyright 2008 (C) Intel Corporation @@ -478,10 +416,10 @@ Index: git/target-i386/beginend_funcs.sh  +echo -e MAGIC_MACRO\(glCallList\)\\n  +echo -e MAGIC_MACRO\(glCallLists\)\\n  +echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n -Index: git/target-i386/ghash.c +Index: qemu/target-i386/ghash.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/ghash.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/ghash.c	2010-05-12 12:10:40.130781590 -0400  @@ -0,0 +1,347 @@  +/* This is a modified and simplified version of original ghash.c */  + @@ -830,10 +768,10 @@ Index: git/target-i386/ghash.c  +    hash_node = next;  +  }  +} -Index: git/target-i386/ghash.h +Index: qemu/target-i386/ghash.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/ghash.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/ghash.h	2010-05-12 12:10:40.130781590 -0400  @@ -0,0 +1,59 @@  +/* This is a modified and simplified version of original ghash.h  */  + @@ -894,10 +832,10 @@ Index: git/target-i386/ghash.h  +  +#endif /* __SIMPLE_HASH_H__ */  + -Index: git/target-i386/gl_func_perso.h +Index: qemu/target-i386/gl_func_perso.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/gl_func_perso.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/gl_func_perso.h	2010-05-12 12:10:40.130781590 -0400  @@ -0,0 +1,135 @@  +/*  + *  Hand-implemented GL/GLX API @@ -1034,11 +972,11 @@ Index: git/target-i386/gl_func_perso.h  +MAGIC_MACRO(_glGetSelectBuffer_fake),  +MAGIC_MACRO(_glFeedbackBuffer_fake),  +MAGIC_MACRO(_glGetFeedbackBuffer_fake), -Index: git/target-i386/helper.c +Index: qemu/target-i386/helper.c  =================================================================== ---- git.orig/target-i386/helper.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/target-i386/helper.c	2010-01-14 15:55:40.000000000 +0000 -@@ -1326,7 +1326,7 @@ +--- qemu.orig/target-i386/helper.c	2010-05-11 18:05:22.955784896 -0400 ++++ qemu/target-i386/helper.c	2010-05-12 12:10:40.131781711 -0400 +@@ -1433,7 +1433,7 @@ target_phys_addr_t cpu_get_phys_page_deb       }       page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1); @@ -1047,21 +985,21 @@ Index: git/target-i386/helper.c       return paddr;   } -Index: git/target-i386/helper.h +Index: qemu/target-i386/helper.h  =================================================================== ---- git.orig/target-i386/helper.h	2009-12-02 13:13:56.000000000 +0000 -+++ git/target-i386/helper.h	2010-01-14 15:55:40.000000000 +0000 -@@ -214,4 +214,6 @@ +--- qemu.orig/target-i386/helper.h	2010-05-11 18:05:22.956804503 -0400 ++++ qemu/target-i386/helper.h	2010-05-12 12:10:40.131781711 -0400 +@@ -217,4 +217,6 @@ DEF_HELPER_2(rclq, tl, tl, tl)   DEF_HELPER_2(rcrq, tl, tl, tl)   #endif  +DEF_HELPER_0(opengl, void)  +   #include "def-helper.h" -Index: git/target-i386/helper_opengl.c +Index: qemu/target-i386/helper_opengl.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/helper_opengl.c	2010-01-14 16:36:59.000000000 +0000 ++++ qemu/target-i386/helper_opengl.c	2010-05-12 12:10:40.132781622 -0400  @@ -0,0 +1,1207 @@  +/*  + *  Host-side implementation of GL/GLX API @@ -1148,16 +1086,16 @@ Index: git/target-i386/helper_opengl.c  +                    cpu_x86_handle_mmu_fault((CPUState *) env, addr, 0, 1, 1));  +            return NULL;  +        } else { -+            if (ret + TARGET_PAGE_SIZE <= phys_ram_size) { -+                return phys_ram_base + ret + -+                    (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1)); ++            if (ret + TARGET_PAGE_SIZE <= last_ram_offset) { ++                return qemu_get_ram_ptr(ret + ++                               (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1)));  +            } else {  +                fprintf(stderr,  +                        "cpu_get_phys_page_debug(env, " TARGET_FMT_lx ") == "  +                        TARGET_FMT_lx "\n", addr, ret);  +                fprintf(stderr, -+                        "ret=" TARGET_FMT_lx " phys_ram_size= " TARGET_FMT_lx -+                        "\n", ret, (target_ulong) phys_ram_size); ++                        "ret=" TARGET_FMT_lx " last_ram_offset= " TARGET_FMT_lx ++                        "\n", ret, (target_ulong) last_ram_offset);  +                return NULL;  +            }  +        } @@ -2270,11 +2208,11 @@ Index: git/target-i386/helper_opengl.c  +    io_register();  +}  +#endif -Index: git/target-i386/kvm.c +Index: qemu/target-i386/kvm.c  =================================================================== ---- git.orig/target-i386/kvm.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/target-i386/kvm.c	2010-01-14 15:55:40.000000000 +0000 -@@ -480,7 +480,7 @@ +--- qemu.orig/target-i386/kvm.c	2010-05-11 18:05:22.956804503 -0400 ++++ qemu/target-i386/kvm.c	2010-05-12 12:10:40.132781622 -0400 +@@ -528,7 +528,7 @@ static int kvm_get_fpu(CPUState *env)       return 0;   } @@ -2283,10 +2221,10 @@ Index: git/target-i386/kvm.c   {       struct kvm_sregs sregs;       uint32_t hflags; -Index: git/target-i386/mesa_enums.c +Index: qemu/target-i386/mesa_enums.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_enums.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_enums.c	2010-05-12 12:10:40.163783695 -0400  @@ -0,0 +1,4890 @@  +/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */  + @@ -7178,10 +7116,10 @@ Index: git/target-i386/mesa_enums.c  +}  +  + -Index: git/target-i386/mesa_get.c +Index: qemu/target-i386/mesa_get.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_get.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_get.c	2010-05-12 12:10:40.171781452 -0400  @@ -0,0 +1,5563 @@  +  +/*** @@ -12746,10 +12684,10 @@ Index: git/target-i386/mesa_get.c  +      params[i] = (GLdouble) values[i];  +}  + -Index: git/target-i386/mesa_gl.h +Index: qemu/target-i386/mesa_gl.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_gl.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_gl.h	2010-05-12 12:10:40.173780926 -0400  @@ -0,0 +1,2251 @@  +/*  + * Mesa 3-D graphics library @@ -15002,10 +14940,10 @@ Index: git/target-i386/mesa_gl.h  +#endif  +  +#endif /* __gl_h_ */ -Index: git/target-i386/mesa_glext.h +Index: qemu/target-i386/mesa_glext.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_glext.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_glext.h	2010-05-12 12:10:40.180780867 -0400  @@ -0,0 +1,7279 @@  +#ifndef __glext_h_  +#define __glext_h_ @@ -22286,10 +22224,10 @@ Index: git/target-i386/mesa_glext.h  +  +/* ERO */  +GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data); -Index: git/target-i386/mesa_glu.h +Index: qemu/target-i386/mesa_glu.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_glu.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_glu.h	2010-05-12 12:10:40.181781686 -0400  @@ -0,0 +1,354 @@  +/*  +** License Applicability. Except to the extent portions of this file are @@ -22645,10 +22583,10 @@ Index: git/target-i386/mesa_glu.h  +#endif  +  +#endif /* __glu_h__ */ -Index: git/target-i386/mesa_glx.h +Index: qemu/target-i386/mesa_glx.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_glx.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_glx.h	2010-05-12 12:10:40.181781686 -0400  @@ -0,0 +1,510 @@  +/*  + * Mesa 3-D graphics library @@ -23160,10 +23098,10 @@ Index: git/target-i386/mesa_glx.h  +#endif  +  +#endif -Index: git/target-i386/mesa_glxext.h +Index: qemu/target-i386/mesa_glxext.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_glxext.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_glxext.h	2010-05-12 12:10:40.182781668 -0400  @@ -0,0 +1,785 @@  +#ifndef __glxext_h_  +#define __glxext_h_ @@ -23950,10 +23888,10 @@ Index: git/target-i386/mesa_glxext.h  +#endif  +  +#endif -Index: git/target-i386/mesa_mipmap.c +Index: qemu/target-i386/mesa_mipmap.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/mesa_mipmap.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/mesa_mipmap.c	2010-05-12 12:10:40.183781579 -0400  @@ -0,0 +1,824 @@  +  +/* @@ -24779,10 +24717,10 @@ Index: git/target-i386/mesa_mipmap.c  +  +   return retval;  +} -Index: git/target-i386/opengl_exec.c +Index: qemu/target-i386/opengl_exec.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/opengl_exec.c	2010-01-14 16:34:53.000000000 +0000 ++++ qemu/target-i386/opengl_exec.c	2010-05-14 13:34:05.506295624 -0400  @@ -0,0 +1,3931 @@  +/*  + *  Host-side implementation of GL/GLX API @@ -28715,10 +28653,10 @@ Index: git/target-i386/opengl_exec.c  +  +    return ret_int;  +} -Index: git/target-i386/opengl_func.h +Index: qemu/target-i386/opengl_func.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/opengl_func.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/opengl_func.h	2010-05-12 12:10:40.187781086 -0400  @@ -0,0 +1,1108 @@  +/*  + *  Main header for both host and guest sides @@ -29828,10 +29766,10 @@ Index: git/target-i386/opengl_func.h  +#error Unsupported ABI  +#endif  +#endif -Index: git/target-i386/opengl_player.c +Index: qemu/target-i386/opengl_player.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/opengl_player.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/opengl_player.c	2010-05-12 12:10:40.188781627 -0400  @@ -0,0 +1,1461 @@  +/*  + *  Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server @@ -31294,10 +31232,10 @@ Index: git/target-i386/opengl_player.c  +    }  +    return 0;  +} -Index: git/target-i386/opengl_server.c +Index: qemu/target-i386/opengl_server.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/opengl_server.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/opengl_server.c	2010-05-12 12:10:40.188781627 -0400  @@ -0,0 +1,826 @@  +/*  + *  TCP/IP OpenGL server @@ -32125,10 +32063,10 @@ Index: git/target-i386/opengl_server.c  +  +  return 0;  +} -Index: git/target-i386/opengl_utils.h +Index: qemu/target-i386/opengl_utils.h  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/opengl_utils.h	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/opengl_utils.h	2010-05-12 12:10:40.189781608 -0400  @@ -0,0 +1,453 @@  +/*  + *  Functions used by host & client sides @@ -32583,10 +32521,10 @@ Index: git/target-i386/opengl_utils.h  +}  +  +#endif -Index: git/target-i386/parse_gl_h.c +Index: qemu/target-i386/parse_gl_h.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/parse_gl_h.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/parse_gl_h.c	2010-05-12 12:10:40.190781520 -0400  @@ -0,0 +1,1496 @@  +/*  + *  Parse gl.h et glx.h to auto-generate source code @@ -34084,10 +34022,10 @@ Index: git/target-i386/parse_gl_h.c  +  +  return 0;  +} -Index: git/target-i386/parse_mesa_get_c.c +Index: qemu/target-i386/parse_mesa_get_c.c  ===================================================================  --- /dev/null	1970-01-01 00:00:00.000000000 +0000 -+++ git/target-i386/parse_mesa_get_c.c	2010-01-14 15:55:40.000000000 +0000 ++++ qemu/target-i386/parse_mesa_get_c.c	2010-05-12 12:10:40.190781520 -0400  @@ -0,0 +1,225 @@  +/*  + *  Parse the "get.c" from mesa source tree to generate "glgetv_cst.h" @@ -34314,11 +34252,11 @@ Index: git/target-i386/parse_mesa_get_c.c  +  fclose(outf);  +  return 0;  +} -Index: git/target-i386/translate.c +Index: qemu/target-i386/translate.c  =================================================================== ---- git.orig/target-i386/translate.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/target-i386/translate.c	2010-01-14 15:55:40.000000000 +0000 -@@ -741,6 +741,8 @@ +--- qemu.orig/target-i386/translate.c	2010-05-11 18:05:22.957804134 -0400 ++++ qemu/target-i386/translate.c	2010-05-12 12:10:40.192781553 -0400 +@@ -743,6 +743,8 @@ static void gen_check_io(DisasContext *s       int state_saved;       target_ulong next_eip; @@ -34327,7 +34265,7 @@ Index: git/target-i386/translate.c       state_saved = 0;       if (s->pe && (s->cpl > s->iopl || s->vm86)) {           if (s->cc_op != CC_OP_DYNAMIC) -@@ -2592,11 +2594,18 @@ +@@ -2676,11 +2678,18 @@ static void gen_exception(DisasContext *       s->is_jmp = 3;   } @@ -34346,78 +34284,36 @@ Index: git/target-i386/translate.c       if (s->cc_op != CC_OP_DYNAMIC)           gen_op_set_cc_op(s->cc_op);       gen_jmp_im(cur_eip); -Index: git/vl.c +Index: qemu/vl.c  =================================================================== ---- git.orig/vl.c	2009-12-02 13:13:56.000000000 +0000 -+++ git/vl.c	2010-01-14 15:55:40.000000000 +0000 -@@ -245,6 +245,7 @@ +--- qemu.orig/vl.c	2010-05-11 18:05:22.959804376 -0400 ++++ qemu/vl.c	2010-05-12 17:10:46.174909450 -0400 +@@ -238,6 +238,7 @@ int semihosting_enabled = 0;   #ifdef TARGET_ARM   int old_param = 0;   #endif  +int force_pointer = 0;   const char *qemu_name;   int alt_grab = 0; - #if defined(TARGET_SPARC) || defined(TARGET_PPC) -@@ -253,6 +254,7 @@ + int ctrl_grab = 0; +@@ -246,6 +247,7 @@ unsigned int nb_prom_envs = 0; + const char *prom_envs[MAX_PROM_ENVS];   #endif - int nb_drives_opt; - struct drive_opt drives_opt[MAX_DRIVES]; + int boot_menu;  +extern int enable_gl; - static CPUState *cur_cpu; - static CPUState *next_cpu; -@@ -4208,12 +4210,14 @@ -     QEMU_OPTION_clock, -     QEMU_OPTION_localtime, -     QEMU_OPTION_startdate, -+    QEMU_OPTION_enable_gl, -     QEMU_OPTION_icount, -     QEMU_OPTION_echr, -     QEMU_OPTION_virtiocon, -     QEMU_OPTION_show_cursor, -     QEMU_OPTION_semihosting, -     QEMU_OPTION_old_param, -+    QEMU_OPTION_force_pointer, -     QEMU_OPTION_tb_size, -     QEMU_OPTION_incoming, -     QEMU_OPTION_chroot, -@@ -4344,6 +4348,8 @@ - #if defined(TARGET_ARM) -     { "old-param", 0, QEMU_OPTION_old_param }, - #endif -+    { "force-pointer", 0, QEMU_OPTION_force_pointer }, -+    { "enable-gl", 0, QEMU_OPTION_enable_gl }, -     { "tb-size", HAS_ARG, QEMU_OPTION_tb_size }, -     { "incoming", HAS_ARG, QEMU_OPTION_incoming }, -     { "chroot", HAS_ARG, QEMU_OPTION_chroot }, -@@ -4496,22 +4502,17 @@ - { -     const char *opts; -  -+    std_vga_enabled = 0; -+    cirrus_vga_enabled = 0; -+    vmsvga_enabled = 0; -+ -     if (strstart(p, "std", &opts)) { -         std_vga_enabled = 1; --        cirrus_vga_enabled = 0; --        vmsvga_enabled = 0; -     } else if (strstart(p, "cirrus", &opts)) { -         cirrus_vga_enabled = 1; --        std_vga_enabled = 0; --        vmsvga_enabled = 0; -     } else if (strstart(p, "vmware", &opts)) { --        cirrus_vga_enabled = 0; --        std_vga_enabled = 0; -         vmsvga_enabled = 1; -     } else if (strstart(p, "none", &opts)) { --        cirrus_vga_enabled = 0; --        std_vga_enabled = 0; --        vmsvga_enabled = 0; -     } else { + int nb_numa_nodes; + uint64_t node_mem[MAX_NODES]; +@@ -4418,6 +4420,8 @@ static void select_vgahw (const char *p) +     } else if (strstart(p, "xenfb", &opts)) { +         vga_interface_type = VGA_XENFB; +     } else if (!strstart(p, "none", &opts)) { ++    } ++    else {       invalid_vga:           fprintf(stderr, "Unknown vga type: %s\n", p); -@@ -5220,6 +5221,9 @@ +         exit(1); +@@ -5540,6 +5544,9 @@ int main(int argc, char **argv, char **e                   old_param = 1;                   break;   #endif @@ -34427,20 +34323,21 @@ Index: git/vl.c               case QEMU_OPTION_clock:                   configure_alarms(optarg);                   break; -@@ -5261,6 +5265,11 @@ -                     } +@@ -5554,6 +5561,12 @@ int main(int argc, char **argv, char **e                   } +                 configure_rtc(opts);                   break;  +#ifdef TARGET_OPENGL_OK  +            case QEMU_OPTION_enable_gl: ++                fprintf(stderr, "Enabling opengl\n");  +                enable_gl = 1;  +                break;  +#endif               case QEMU_OPTION_tb_size:                   tb_size = strtol(optarg, NULL, 0);                   if (tb_size < 0) -@@ -5545,6 +5554,17 @@ -             exit(1); +@@ -5907,6 +5920,14 @@ int main(int argc, char **argv, char **e +             }           }       }  +#ifdef TARGET_OPENGL_OK @@ -34448,12 +34345,32 @@ Index: git/vl.c  +            /* Use second serial port */  +            int opengl_serial = 1;  + -+            if (serial_devices[opengl_serial]) -+                fprintf(stderr, "overriding second serial " -+                                "port for OpenGL use\n"); -+            serial_devices[opengl_serial] = "opengl"; ++            add_device_config(DEV_SERIAL, "opengl");  +        }  +#endif -     if (monitor_device) { -         monitor_hd = qemu_chr_open("monitor", monitor_device, NULL); +     if (foreach_device_config(DEV_SERIAL, serial_parse) < 0) +         exit(1); +Index: qemu/qemu-options.hx +=================================================================== +--- qemu.orig/qemu-options.hx	2010-05-11 18:05:22.959804376 -0400 ++++ qemu/qemu-options.hx	2010-05-12 17:18:10.420907903 -0400 +@@ -1783,6 +1783,18 @@ many timer interrupts were not processed + re-inject them. + ETEXI +  ++DEF("enable-gl", 0, QEMU_OPTION_enable_gl, \ ++    "-enable-gl\n") ++STEXI ++@item -enable-gl ++ETEXI ++ ++DEF("force-pointer", 0, QEMU_OPTION_force_pointer, \ ++    "-force-pointer\n") ++STEXI ++@item -force-pointer ++ETEXI ++ + DEF("icount", HAS_ARG, QEMU_OPTION_icount, \ +     "-icount [N|auto]\n" \ +     "                enable virtual instruction counter with 2^N clock ticks per\n" \ diff --git a/meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch b/meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch index 979e8afc4c..43acc361a0 100644 --- a/meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch +++ b/meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch @@ -10,11 +10,11 @@ committer Andrzej Zaborowski <andrew.zaborowski@intel.com> Tue, 16 Jun 2009 22:2   target-i386/opengl_exec.c |   31 ++++++++++++++++---------------   1 files changed, 16 insertions(+), 15 deletions(-) -diff --git a/target-i386/opengl_exec.c b/target-i386/opengl_exec.c -index 4a69b9b..3d6fb21 100644 ---- a/target-i386/opengl_exec.c -+++ b/target-i386/opengl_exec.c -@@ -1600,10 +1600,9 @@ int do_function_call(int func_number, arg_t *args, char *ret_string) +Index: qemu/target-i386/opengl_exec.c +=================================================================== +--- qemu.orig/target-i386/opengl_exec.c	2010-05-10 18:46:43.175394992 -0400 ++++ qemu/target-i386/opengl_exec.c	2010-05-10 18:46:43.218419933 -0400 +@@ -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); @@ -27,7 +27,7 @@ index 4a69b9b..3d6fb21 100644                                       get_association_fakepbuffer_pbuffer(                                               process, client_drawable))) {                   GLXContext ctxt = get_association_fakecontext_glxcontext( -@@ -1651,19 +1650,21 @@ int do_function_call(int func_number, arg_t *args, char *ret_string) +@@ -1651,19 +1650,21 @@ int do_function_call(int func_number, ar               }               if (ret_int) { diff --git a/meta/packages/qemu/qemu-git/workaround_bad_futex_headers.patch b/meta/packages/qemu/qemu-git/workaround_bad_futex_headers.patch index b254b2410a..7727a39f37 100644 --- a/meta/packages/qemu/qemu-git/workaround_bad_futex_headers.patch +++ b/meta/packages/qemu/qemu-git/workaround_bad_futex_headers.patch @@ -2,11 +2,11 @@   linux-user/syscall.c |   10 +++++++++-   1 file changed, 9 insertions(+), 1 deletion(-) -Index: trunk/linux-user/syscall.c +Index: qemu/linux-user/syscall.c  =================================================================== ---- trunk.orig/linux-user/syscall.c	2009-01-05 12:47:06.000000000 +0000 -+++ trunk/linux-user/syscall.c	2009-01-05 12:48:04.000000000 +0000 -@@ -87,6 +87,15 @@ +--- qemu.orig/linux-user/syscall.c	2010-05-11 16:52:16.929785275 -0400 ++++ qemu/linux-user/syscall.c	2010-05-11 16:52:25.174783517 -0400 +@@ -94,6 +94,15 @@   #define CLONE_NPTL_FLAGS2 0   #endif @@ -21,4 +21,4 @@ Index: trunk/linux-user/syscall.c  +   //#define DEBUG - #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \ + //#include <linux/msdos_fs.h> diff --git a/meta/packages/qemu/qemu-git/zlibsearch.patch b/meta/packages/qemu/qemu-git/zlibsearch.patch deleted file mode 100644 index 6d7cf03055..0000000000 --- a/meta/packages/qemu/qemu-git/zlibsearch.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: git/configure -=================================================================== ---- git.orig/configure	2009-05-24 11:12:34.000000000 +0100 -+++ git/configure	2009-05-24 11:12:55.000000000 +0100 -@@ -749,7 +749,7 @@ - #include <zlib.h> - int main(void) { zlibVersion(); return 0; } - EOF --if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then -+if $cc $CFLAGS $LDFLAGS $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then -     : - else -     echo diff --git a/meta/packages/qemu/qemu_git.bb b/meta/packages/qemu/qemu_git.bb index e9129649a8..0bba600038 100644 --- a/meta/packages/qemu/qemu_git.bb +++ b/meta/packages/qemu/qemu_git.bb @@ -1,7 +1,7 @@  LICENSE = "GPL"  DEPENDS = "zlib" -PV = "0.10.6+git${SRCREV}" -PR = "r3" +PV = "0.12.0+git${SRCREV}" +PR = "r4"  FILESPATH = "${FILE_DIRNAME}/qemu-${PV}/:${FILE_DIRNAME}/qemu-git/" @@ -12,13 +12,11 @@ SRC_URI = "\      file://no-strip.patch;patch=1 \      file://fix-dirent.patch;patch=1 \      file://fix-nogl.patch;patch=1 \ -    file://zlibsearch.patch;patch=1 \ -    file://qemugl-allow-glxcontext-release.patch;patch=1 \ -    file://2ca2078e287174522e3a6229618947d3d285b8c0.patch;patch=1" +    file://qemugl-allow-glxcontext-release.patch;patch=1"  S = "${WORKDIR}/git" -EXTRA_OECONF = "--target-list=arm-linux-user,arm-softmmu,i386-softmmu,x86_64-softmmu,mips-linux-user,mips-softmmu --disable-gfx-check" +EXTRA_OECONF = "--target-list=arm-linux-user,arm-softmmu,i386-softmmu,x86_64-softmmu,mips-linux-user,mips-softmmu --disable-werror --disable-vnc-tls"  #EXTRA_OECONF += "--disable-sdl"  inherit autotools | 
