diff options
| author | Joshua Lock <josh@linux.intel.com> | 2010-05-28 09:13:03 +0100 |
|---|---|---|
| committer | Joshua Lock <josh@linux.intel.com> | 2010-05-28 15:31:54 +0100 |
| commit | 32a85c157002874af88a1cd324e1e466bb1df9b6 (patch) | |
| tree | 9b146de299cd8a4e262becdaeca88b071bc64b44 | |
| parent | 3d6e7e7d0c6aed10a859034486191e0b3b69d786 (diff) | |
| download | openembedded-core-32a85c157002874af88a1cd324e1e466bb1df9b6.tar.gz openembedded-core-32a85c157002874af88a1cd324e1e466bb1df9b6.tar.bz2 openembedded-core-32a85c157002874af88a1cd324e1e466bb1df9b6.zip | |
qemu: reduce duplication, use an inc file and share common patches
There's no need to carry around two copies of the same patches for qemu-git and
qemu-0.12 so drop the qemu-git directory and update the git recipe to use the
qemu-0.12 directory for patches.
Move common code from the two recipes to an inc file.
Signed-off-by: Joshua Lock <josh@linux.intel.com>
fweh
17 files changed, 46 insertions, 34644 deletions
diff --git a/meta/packages/qemu/qemu-0.12.0/fix-dirent.patch b/meta/packages/qemu/qemu-0.12/fix-dirent.patch index 8bbfa0e88e..8bbfa0e88e 100644 --- a/meta/packages/qemu/qemu-0.12.0/fix-dirent.patch +++ b/meta/packages/qemu/qemu-0.12/fix-dirent.patch diff --git a/meta/packages/qemu/qemu-0.12.0/fix-nogl.patch b/meta/packages/qemu/qemu-0.12/fix-nogl.patch index 68efab3a1f..68efab3a1f 100644 --- a/meta/packages/qemu/qemu-0.12.0/fix-nogl.patch +++ b/meta/packages/qemu/qemu-0.12/fix-nogl.patch diff --git a/meta/packages/qemu/qemu-git/glflags.patch b/meta/packages/qemu/qemu-0.12/glflags.patch index 0a27c2dee1..0a27c2dee1 100644 --- a/meta/packages/qemu/qemu-git/glflags.patch +++ b/meta/packages/qemu/qemu-0.12/glflags.patch diff --git a/meta/packages/qemu/qemu-0.12.0/no-strip.patch b/meta/packages/qemu/qemu-0.12/no-strip.patch index 8a95a688b3..8a95a688b3 100644 --- a/meta/packages/qemu/qemu-0.12.0/no-strip.patch +++ b/meta/packages/qemu/qemu-0.12/no-strip.patch diff --git a/meta/packages/qemu/qemu-0.12.0/qemu-git-qemugl-host.patch b/meta/packages/qemu/qemu-0.12/qemu-git-qemugl-host.patch index 7ec491daed..7ec491daed 100644 --- a/meta/packages/qemu/qemu-0.12.0/qemu-git-qemugl-host.patch +++ b/meta/packages/qemu/qemu-0.12/qemu-git-qemugl-host.patch diff --git a/meta/packages/qemu/qemu-0.12.0/qemugl-allow-glxcontext-release.patch b/meta/packages/qemu/qemu-0.12/qemugl-allow-glxcontext-release.patch index 43acc361a0..43acc361a0 100644 --- a/meta/packages/qemu/qemu-0.12.0/qemugl-allow-glxcontext-release.patch +++ b/meta/packages/qemu/qemu-0.12/qemugl-allow-glxcontext-release.patch diff --git a/meta/packages/qemu/qemu-git/series b/meta/packages/qemu/qemu-0.12/series index 57d41df4f6..57d41df4f6 100644 --- a/meta/packages/qemu/qemu-git/series +++ b/meta/packages/qemu/qemu-0.12/series diff --git a/meta/packages/qemu/qemu-0.12.0/workaround_bad_futex_headers.patch b/meta/packages/qemu/qemu-0.12/workaround_bad_futex_headers.patch index 7727a39f37..7727a39f37 100644 --- a/meta/packages/qemu/qemu-0.12.0/workaround_bad_futex_headers.patch +++ b/meta/packages/qemu/qemu-0.12/workaround_bad_futex_headers.patch diff --git a/meta/packages/qemu/qemu-git/fix-dirent.patch b/meta/packages/qemu/qemu-git/fix-dirent.patch deleted file mode 100644 index 8bbfa0e88e..0000000000 --- a/meta/packages/qemu/qemu-git/fix-dirent.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: qemu/linux-user/syscall.c -=================================================================== ---- 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> - #include <fcntl.h> -+#include <dirent.h> - #include <time.h> - #include <limits.h> - #include <sys/types.h> diff --git a/meta/packages/qemu/qemu-git/fix-nogl.patch b/meta/packages/qemu/qemu-git/fix-nogl.patch deleted file mode 100644 index 68efab3a1f..0000000000 --- a/meta/packages/qemu/qemu-git/fix-nogl.patch +++ /dev/null @@ -1,68 +0,0 @@ -Index: qemu/Makefile.target -=================================================================== ---- 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 - -Index: qemu/target-arm/dummygl.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ qemu/target-arm/dummygl.c 2010-05-11 16:53:37.743809704 -0400 -@@ -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/target-mips/dummygl.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ qemu/target-mips/dummygl.c 2010-05-11 16:53:37.744811919 -0400 -@@ -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) -+{ -+ -+} diff --git a/meta/packages/qemu/qemu-git/no-strip.patch b/meta/packages/qemu/qemu-git/no-strip.patch deleted file mode 100644 index 8a95a688b3..0000000000 --- a/meta/packages/qemu/qemu-git/no-strip.patch +++ /dev/null @@ -1,26 +0,0 @@ -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) - $(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)" -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 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)" -+ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)" - endif - - # 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 deleted file mode 100644 index 7ec491daed..0000000000 --- a/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch +++ /dev/null @@ -1,34376 +0,0 @@ -Index: qemu/Makefile.target -=================================================================== ---- 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 - -@@ -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 $@ $< -+server_stub.c: parse_gl_h -+ ./parse_gl_h -+gl_func.h: parse_gl_h -+ ./parse_gl_h -+GL_CFLAGS := -Wall -g -O2 -fno-strict-aliasing -+opengl_func.h: gl_func.h -+helper_opengl.o: helper_opengl.c opengl_func.h server_stub.c -+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H -+gl_beginend.h: ../target-i386/beginend_funcs.sh -+ $< > $@ -+opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h -+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386 -+ - ######################################################### - # Linux user emulator target - -@@ -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 - - monitor.o: qemu-monitor.h - -+LIBS += -lGL -lGLU -+ - ARLIBS=../libqemu_common.a libqemu.a $(HWLIB) - - endif # CONFIG_SOFTMMU -Index: qemu/hw/pixel_ops.h -=================================================================== ---- 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); - } - -+static inline unsigned int rgb_to_pixel8bgr(unsigned int r, unsigned int g, -+ unsigned int b) -+{ -+ return ((b >> 5) << 5) | ((g >> 5) << 2) | (r >> 6); -+} -+ - static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g, - unsigned int b) - { -Index: qemu/hw/vmware_vga.c -=================================================================== ---- 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) - -+static uint32_t last_cmd; -+ - static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s) - { - if (!s->config || !s->enable) -@@ -498,11 +500,18 @@ static inline int vmsvga_fifo_empty(stru - - static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s) - { -- uint32_t cmd = s->fifo[CMD(stop) >> 2]; -- s->cmd->stop = cpu_to_le32(CMD(stop) + 4); -- if (CMD(stop) >= CMD(max)) -+ int offset = CMD(stop); -+ -+ if (unlikely(s->cmd->next_cmd == s->cmd->stop)) { -+ fprintf(stderr, "%s: FIFO empty during CMD %i\n", -+ __FUNCTION__, last_cmd); -+ return 0x00000000; -+ } -+ -+ s->cmd->stop = cpu_to_le32(offset + 4); -+ if (offset + 4 >= CMD(max)) - s->cmd->stop = s->cmd->min; -- return cmd; -+ return s->fifo[offset >> 2]; - } - - static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s) -@@ -512,12 +521,12 @@ static inline uint32_t vmsvga_fifo_read( - - static void vmsvga_fifo_run(struct vmsvga_state_s *s) - { -- uint32_t cmd, colour; -+ uint32_t colour; - int args = 0; - int x, y, dx, dy, width, height; - struct vmsvga_cursor_definition_s cursor; - while (!vmsvga_fifo_empty(s)) -- switch (cmd = vmsvga_fifo_read(s)) { -+ switch (last_cmd = vmsvga_fifo_read(s)) { - case SVGA_CMD_UPDATE: - case SVGA_CMD_UPDATE_VERBOSE: - x = vmsvga_fifo_read(s); -@@ -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", -- __FUNCTION__, cmd); -+ __FUNCTION__, last_cmd); - break; - } - -@@ -1136,6 +1145,12 @@ static void vmsvga_init(struct vmsvga_st - - vga_init_vbe(&s->vga); - -+#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 -+ - rom_add_vga(VGABIOS_FILENAME); - - vmsvga_reset(s); -Index: qemu/qemu-char.c -=================================================================== ---- 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; - } - -+#define TARGET_OPENGL_OK -+#if defined(TARGET_OPENGL_OK) -+static uint8_t buffer[32]; -+static int buffer_len; -+static int hexdigit[128] = { -+ ['0'] = 0x0, -+ ['1'] = 0x1, -+ ['2'] = 0x2, -+ ['3'] = 0x3, -+ ['4'] = 0x4, -+ ['5'] = 0x5, -+ ['6'] = 0x6, -+ ['7'] = 0x7, -+ ['8'] = 0x8, -+ ['9'] = 0x9, -+ ['a'] = 0xa, -+ ['b'] = 0xb, -+ ['c'] = 0xc, -+ ['d'] = 0xd, -+ ['e'] = 0xe, -+ ['f'] = 0xf, -+}; -+ -+static int opengl_chr_write(CharDriverState *chr, const uint8_t *buf, int len) -+{ -+ uint64_t ptr = 0; -+ int i; -+ -+ if (memchr(buf, 'x', len)) -+ opengl_process_enable(); -+ return len; -+ memcpy(buffer + buffer_len, buf, len); -+ buffer_len += len; -+ -+ if (buffer_len >= 16) { -+ for (i = 0; i < 16; i ++) -+ ptr = (ptr << 4) + hexdigit[buffer[i]]; -+ -+ buffer_len -= 16; -+ if (buffer_len) -+ memcpy(buffer, buffer + 16, buffer_len); -+ -+ mem_opengl(ptr); -+ } -+ -+ return len; -+} -+ -+CharDriverState *qemu_chr_open_opengl(void) -+{ -+ CharDriverState *chr = qemu_mallocz(sizeof(CharDriverState)); -+ -+ chr->opaque = chr; -+ chr->chr_write = opengl_chr_write; -+ -+ qemu_chr_generic_open(chr); -+ -+ return chr; -+} -+#else -+#define qemu_chr_open_opengl() 0 -+#endif -+ - QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename) - { - 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; - } -+ 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 -=================================================================== ---- 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) - { - // 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; -+ static Display *dpy; -+ -+ 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); -- if (guest_cursor && -+ if (guest_cursor && !force_pointer && - (gui_grab || kbd_mouse_is_absolute() || absolute_enabled)) - SDL_SetCursor(guest_sprite); - else -@@ -464,7 +476,8 @@ static void sdl_show_cursor(void) - static void sdl_grab_start(void) - { - if (guest_cursor) { -- SDL_SetCursor(guest_sprite); -+ if (!force_pointer) -+ SDL_SetCursor(guest_sprite); - if (!kbd_mouse_is_absolute() && !absolute_enabled) - SDL_WarpMouse(guest_x, guest_y); - } else -@@ -505,8 +518,8 @@ static void sdl_send_mouse_event(int dx, - absolute_enabled = 1; - } - -- dx = x * 0x7FFF / (width - 1); -- dy = y * 0x7FFF / (height - 1); -+ dx = x * 0x7FFF / (width - 1); -+ dy = y * 0x7FFF / (height - 1); - } else if (absolute_enabled) { - sdl_show_cursor(); - absolute_enabled = 0; -@@ -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) { -- SDL_SetCursor(guest_sprite); -+ if (!force_pointer) -+ SDL_SetCursor(guest_sprite); - if (!kbd_mouse_is_absolute() && !absolute_enabled) - SDL_WarpMouse(x, y); - } -@@ -814,7 +828,7 @@ static void sdl_mouse_define(int width, - } - guest_sprite = SDL_CreateCursor(sprite, mask, width, height, hot_x, hot_y); - -- if (guest_cursor && -+ if (guest_cursor && !force_pointer && - (gui_grab || kbd_mouse_is_absolute() || absolute_enabled)) - SDL_SetCursor(guest_sprite); - } -@@ -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__) -@@ -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) -+ opengl_exec_set_parent_window(info.info.x11.display, -+ RootWindow(info.info.x11.display, -+ DefaultScreen(info.info.x11.display))); -+ - dcl = qemu_mallocz(sizeof(DisplayChangeListener)); - dcl->dpy_update = sdl_update; - dcl->dpy_resize = sdl_resize; -@@ -890,4 +911,9 @@ void sdl_display_init(DisplayState *ds, - gui_fullscreen_initial_grab = 1; - sdl_grab_start(); - } -+ -+ SDL_GetWMInfo(&info); -+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display) -+ opengl_exec_set_parent_window(info.info.x11.display, -+ info.info.x11.window); - } -Index: qemu/slirp/udp.c -=================================================================== ---- 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" - - static u_int8_t udp_tos(struct socket *so); - -@@ -125,6 +126,11 @@ udp_input(register struct mbuf *m, int i - goto bad; - } - -+ if (ntohs(uh->uh_dport) == 9999 && m->m_len - iphlen == 16) { -+ mem_opengl(le64_to_cpup((uint64_t *) (m->m_data + iphlen + 8))); -+ goto bad; -+ } -+ - if (slirp->restricted) { - goto bad; - } -Index: qemu/sysemu.h -=================================================================== ---- 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; - - #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 -+++ 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 -+# -+# echo names of functions that are legal between a glBegin and glEnd pair. -+echo -e MAGIC_MACRO\(glVertex{2,3,4}{s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glMultiTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glNormal3{b,s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glFogCoord{f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glColor{3,4}{b,s,i,f,d,ub,us,ui}{,v}\)\\n -+echo -e MAGIC_MACRO\(glSecondaryColor3{b,s,i,f,d,ub,us,ui}{,v}\)\\n -+echo -e MAGIC_MACRO\(glIndex{s,i,f,d,ub}{,v}\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib{1,2,3,4}{s,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib4{b,i,ub,us,ui}v\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib4Nub\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib4N{b,s,i,ub,us,ui}v\)\\n -+echo -e MAGIC_MACRO\(glArrayElement\)\\n -+echo -e MAGIC_MACRO\(glEvalCoord{1,2}{f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glEvalPoint{1,2}\)\\n -+echo -e MAGIC_MACRO\(glMaterial{i,f}{,v}\)\\n -+echo -e MAGIC_MACRO\(glCallList\)\\n -+echo -e MAGIC_MACRO\(glCallLists\)\\n -+echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n -Index: qemu/target-i386/ghash.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.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 */ -+ -+/* GLIB - Library of useful routines for C programming -+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+ -+/* -+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS -+ * file for a list of people on the GLib Team. See the ChangeLog -+ * files for a list of changes. These files are distributed with -+ * GLib at ftp://ftp.gtk.org/pub/gtk/. -+ */ -+ -+ -+#include <stdlib.h> -+ -+#include "ghash.h" -+ -+#define HASH_TABLE_MIN_SIZE 11 -+#define HASH_TABLE_MAX_SIZE 13845163 -+ -+#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) -+ -+ -+typedef struct _SimpleHashNode SimpleHashNode; -+ -+struct _SimpleHashNode -+{ -+ int key; -+ void* value; -+ SimpleHashNode *next; -+}; -+ -+struct _SimpleHashTable -+{ -+ int size; -+ int nnodes; -+ SimpleHashNode **nodes; -+ SimpleDestroyNotify value_destroy_func; -+}; -+ -+static const unsigned int simple_primes[] = -+{ -+ 11, -+ 19, -+ 37, -+ 73, -+ 109, -+ 163, -+ 251, -+ 367, -+ 557, -+ 823, -+ 1237, -+ 1861, -+ 2777, -+ 4177, -+ 6247, -+ 9371, -+ 14057, -+ 21089, -+ 31627, -+ 47431, -+ 71143, -+ 106721, -+ 160073, -+ 240101, -+ 360163, -+ 540217, -+ 810343, -+ 1215497, -+ 1823231, -+ 2734867, -+ 4102283, -+ 6153409, -+ 9230113, -+ 13845163, -+}; -+ -+static const unsigned int simple_nprimes = sizeof (simple_primes) / sizeof (simple_primes[0]); -+ -+unsigned int simple_spaced_primes_closest (unsigned int num) -+{ -+ int i; -+ -+ for (i = 0; i < simple_nprimes; i++) -+ if (simple_primes[i] > num) -+ return simple_primes[i]; -+ -+ return simple_primes[simple_nprimes - 1]; -+} -+ -+#define HASH_TABLE_RESIZE(hash_table) \ -+ do { \ -+ if ((hash_table->size >= 3 * hash_table->nnodes && \ -+ hash_table->size > HASH_TABLE_MIN_SIZE) || \ -+ (3 * hash_table->size <= hash_table->nnodes && \ -+ hash_table->size < HASH_TABLE_MAX_SIZE)) \ -+ simple_hash_table_resize (hash_table); \ -+ } while(0) -+ -+static void simple_hash_table_resize (SimpleHashTable *hash_table); -+static SimpleHashNode** simple_hash_table_lookup_node (SimpleHashTable *hash_table, -+ int key); -+static SimpleHashNode* simple_hash_node_new (int key, -+ void* value); -+static void simple_hash_nodes_destroy (SimpleHashNode *hash_node, -+ SimpleDestroyNotify value_destroy_func); -+ -+ -+#define alloc0(type, n) (type*)calloc(n, sizeof(type)) -+ -+SimpleHashTable* -+simple_hash_table_new (SimpleDestroyNotify value_destroy_func) -+{ -+ SimpleHashTable *hash_table; -+ -+ hash_table = alloc0(SimpleHashTable, 1); -+ hash_table->size = HASH_TABLE_MIN_SIZE; -+ hash_table->nnodes = 0; -+ hash_table->value_destroy_func = value_destroy_func; -+ hash_table->nodes = alloc0 (SimpleHashNode*, hash_table->size); -+ -+ return hash_table; -+} -+ -+SimpleHashTable* simple_hash_table_clone(SimpleHashTable *hash_table, -+ SimpleCloneValue clone_value_func) -+{ -+ SimpleHashTable *hash_table_new; -+ SimpleHashNode *new_node; -+ SimpleHashNode *node; -+ int i; -+ -+ hash_table_new = alloc0 (SimpleHashTable, 1); -+ hash_table_new->size = hash_table->size; -+ hash_table_new->nnodes = hash_table->nnodes; -+ hash_table_new->value_destroy_func = hash_table->value_destroy_func; -+ hash_table_new->nodes = alloc0 (SimpleHashNode*, hash_table_new->size); -+ for (i = 0; i < hash_table->size; i++) -+ { -+ node = hash_table->nodes[i]; -+ while(node) -+ { -+ SimpleHashNode *next = hash_table_new->nodes[i]; -+ new_node = simple_hash_node_new(node->key, -+ (clone_value_func)? clone_value_func(node->value) : node->value); -+ new_node->next = next; -+ hash_table_new->nodes[i] = new_node; -+ node = node->next; -+ } -+ } -+ return hash_table_new; -+} -+ -+void -+simple_hash_table_destroy (SimpleHashTable *hash_table) -+{ -+ int i; -+ -+ for (i = 0; i < hash_table->size; i++) -+ { -+ simple_hash_nodes_destroy (hash_table->nodes[i], -+ hash_table->value_destroy_func); -+ hash_table->nodes[i] = NULL; -+ } -+ free (hash_table->nodes); -+ free (hash_table); -+} -+ -+static inline SimpleHashNode** -+simple_hash_table_lookup_node (SimpleHashTable *hash_table, -+ int key) -+{ -+ SimpleHashNode **node; -+ -+ node = &hash_table->nodes[(unsigned int)key % hash_table->size]; -+ while (*node && (*node)->key != key) -+ node = &(*node)->next; -+ -+ return node; -+} -+ -+void* -+simple_hash_table_lookup (SimpleHashTable *hash_table, int key) -+{ -+ SimpleHashNode *node; -+ -+ node = *simple_hash_table_lookup_node (hash_table, key); -+ -+ return node ? node->value : NULL; -+} -+ -+void** -+simple_hash_table_lookup_pointer (SimpleHashTable *hash_table, int key) -+{ -+ SimpleHashNode *node; -+ -+ node = *simple_hash_table_lookup_node (hash_table, key); -+ -+ return node ? &node->value : NULL; -+} -+ -+ -+void -+simple_hash_table_insert (SimpleHashTable *hash_table, -+ int key, -+ void* value) -+{ -+ SimpleHashNode **node; -+ -+ node = simple_hash_table_lookup_node (hash_table, key); -+ -+ if (*node) -+ { -+ /* do not reset node->key in this place, keeping -+ * the old key is the intended behaviour. -+ * simple_hash_table_replace() can be used instead. -+ */ -+ if (hash_table->value_destroy_func) -+ hash_table->value_destroy_func ((*node)->value); -+ -+ (*node)->value = value; -+ } -+ else -+ { -+ *node = simple_hash_node_new (key, value); -+ hash_table->nnodes++; -+ HASH_TABLE_RESIZE (hash_table); -+ } -+} -+int -+simple_hash_table_remove (SimpleHashTable *hash_table, -+ int key) -+{ -+ SimpleHashNode **node, *dest; -+ -+ node = simple_hash_table_lookup_node (hash_table, key); -+ if (*node) -+ { -+ dest = *node; -+ (*node) = dest->next; -+ if (hash_table->value_destroy_func) -+ hash_table->value_destroy_func (dest->value); -+ free (dest); -+ hash_table->nnodes--; -+ -+ HASH_TABLE_RESIZE (hash_table); - |
