summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/qemu')
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch131
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch32
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch40
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch35
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch136
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/enable-i386-linux-user.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/enable-i386-linux-user.patch)16
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/fix-configure-checks.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/fix-configure-checks.patch)12
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/fix-dirent.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/fix-dirent.patch)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/fix-nogl.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/fix-nogl.patch)24
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/glflags.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/glflags.patch)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/init-info.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/init-info.patch)8
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/linker-flags.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/linker-flags.patch)16
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/no-strip.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/no-strip.patch)18
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch34
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch196
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/powerpc_rom.bin (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/powerpc_rom.bin)bin4096 -> 4096 bytes
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemu-git-qemugl-host.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/qemu-git-qemugl-host.patch)518
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch108
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemu-vmware-vga-depth.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/qemu-vmware-vga-depth.patch)52
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemugl-allow-glxcontext-release.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/qemugl-allow-glxcontext-release.patch)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/vmware-vga-fifo-rewind.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/vmware-vga-fifo-rewind.patch)24
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch65
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/workaround_bad_futex_headers.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/workaround_bad_futex_headers.patch)8
-rw-r--r--meta/recipes-devtools/qemu/qemu_0.13.0.bb (renamed from meta/recipes-devtools/qemu/qemu_0.12.4.bb)15
24 files changed, 752 insertions, 736 deletions
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch
deleted file mode 100644
index 1e0ea43083..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch
+++ /dev/null
@@ -1,131 +0,0 @@
1From: Riku Voipio <riku.voipio@nokia.com>
2
3Access the cp15.c13 TLS registers directly with TCG ops instead of with
4a slow helper. If the the cp15 read/write was not TLS register access,
5fall back to the cp15 helper.
6
7This makes accessing __thread variables in linux-user when apps are compiled
8with -mtp=cp15 possible. legal cp15 register to acces from linux-user are
9already checked in cp15_user_ok.
10
11While at it, make the cp15.c13 Thread ID registers available only on
12ARMv6K and newer.
13
14Signed-off-by: Riku Voipio <riku.voipio@nokia.com>
15Acked-by: Laurent Desnogues <laurent.desnogues@gmail.com>
16
17diff --git a/target-arm/helper.c b/target-arm/helper.c
18index b3aec99..27001e8 100644
19--- a/target-arm/helper.c
20+++ b/target-arm/helper.c
21@@ -511,7 +511,6 @@ void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val)
22 uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn)
23 {
24 cpu_abort(env, "cp15 insn %08x\n", insn);
25- return 0;
26 }
27
28 /* These should probably raise undefined insn exceptions. */
29@@ -1491,15 +1490,6 @@ void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val)
30 tlb_flush(env, 0);
31 env->cp15.c13_context = val;
32 break;
33- case 2:
34- env->cp15.c13_tls1 = val;
35- break;
36- case 3:
37- env->cp15.c13_tls2 = val;
38- break;
39- case 4:
40- env->cp15.c13_tls3 = val;
41- break;
42 default:
43 goto bad_reg;
44 }
45@@ -1779,12 +1769,6 @@ uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn)
46 return env->cp15.c13_fcse;
47 case 1:
48 return env->cp15.c13_context;
49- case 2:
50- return env->cp15.c13_tls1;
51- case 3:
52- return env->cp15.c13_tls2;
53- case 4:
54- return env->cp15.c13_tls3;
55 default:
56 goto bad_reg;
57 }
58diff --git a/target-arm/translate.c b/target-arm/translate.c
59index 5cf3e06..786c329 100644
60--- a/target-arm/translate.c
61+++ b/target-arm/translate.c
62@@ -2455,6 +2455,57 @@ static int cp15_user_ok(uint32_t insn)
63 return 0;
64 }
65
66+static int cp15_tls_load_store(CPUState *env, DisasContext *s, uint32_t insn, uint32_t rd)
67+{
68+ TCGv tmp;
69+ int cpn = (insn >> 16) & 0xf;
70+ int cpm = insn & 0xf;
71+ int op = ((insn >> 5) & 7) | ((insn >> 18) & 0x38);
72+
73+ if (!arm_feature(env, ARM_FEATURE_V6K))
74+ return 0;
75+
76+ if (!(cpn == 13 && cpm == 0))
77+ return 0;
78+
79+ if (insn & ARM_CP_RW_BIT) {
80+ tmp = new_tmp();
81+ switch (op) {
82+ case 2:
83+ tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls1));
84+ break;
85+ case 3:
86+ tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls2));
87+ break;
88+ case 4:
89+ tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls3));
90+ break;
91+ default:
92+ dead_tmp(tmp);
93+ return 0;
94+ }
95+ store_reg(s, rd, tmp);
96+
97+ } else {
98+ tmp = load_reg(s, rd);
99+ switch (op) {
100+ case 2:
101+ tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls1));
102+ break;
103+ case 3:
104+ tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls2));
105+ break;
106+ case 4:
107+ tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls3));
108+ break;
109+ default:
110+ return 0;
111+ }
112+ dead_tmp(tmp);
113+ }
114+ return 1;
115+}
116+
117 /* Disassemble system coprocessor (cp15) instruction. Return nonzero if
118 instruction is not defined. */
119 static int disas_cp15_insn(CPUState *env, DisasContext *s, uint32_t insn)
120@@ -2489,6 +2540,10 @@ static int disas_cp15_insn(CPUState *env, DisasContext *s, uint32_t insn)
121 return 0;
122 }
123 rd = (insn >> 12) & 0xf;
124+
125+ if (cp15_tls_load_store(env, s, insn, rd))
126+ return 0;
127+
128 tmp2 = tcg_const_i32(insn);
129 if (insn & ARM_CP_RW_BIT) {
130 tmp = new_tmp();
131
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch
deleted file mode 100644
index 530736c4ca..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From a9cf98d939c4f6539fad7e7d812ea16d96ba3dc9 Mon Sep 17 00:00:00 2001
2From: Rabin Vincent <rabin@rab.in>
3Date: Sun, 2 May 2010 15:20:52 +0530
4Subject: [PATCH] arm_timer: fix oneshot mode
5
6commit id: a9cf98d939c4f6539fad7e7d812ea16d96ba3dc9 in git://git.sv.gnu.org/qemu.git
7
8In oneshot mode, the delta needs to come from the TimerLoad register,
9not the maximum limit.
10
11Signed-off-by: Rabin Vincent <rabin@rab.in>
12Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13---
14 hw/arm_timer.c | 2 +-
15 1 files changed, 1 insertions(+), 1 deletions(-)
16
17diff --git a/hw/arm_timer.c b/hw/arm_timer.c
18index 5b6947a..9073ffc 100644
19--- a/hw/arm_timer.c
20+++ b/hw/arm_timer.c
21@@ -71,7 +71,7 @@ static void arm_timer_recalibrate(arm_timer_state *s, int reload)
22 {
23 uint32_t limit;
24
25- if ((s->control & TIMER_CTRL_PERIODIC) == 0) {
26+ if ((s->control & (TIMER_CTRL_PERIODIC | TIMER_CTRL_ONESHOT)) == 0) {
27 /* Free running. */
28 if (s->control & TIMER_CTRL_32BIT)
29 limit = 0xffffffff;
30--
311.6.5.2
32
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch
deleted file mode 100644
index 1890e21e60..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1From d6759902cb467c002086853d2eb38fb969c29f7f Mon Sep 17 00:00:00 2001
2From: Rabin Vincent <rabin@rab.in>
3Date: Sun, 2 May 2010 15:20:51 +0530
4Subject: [PATCH] arm_timer: reload timer when enabled
5
6commit id: d6759902cb467c002086853d2eb38fb969c29f7f in git://git.sv.gnu.org/qemu.git
7
8Reload the timer when TimerControl is written, if the timer is to be
9enabled. Otherwise, if an earlier write to TimerLoad was done while
10periodic mode was not set, s->delta may incorrectly still have the value
11of the maximum limit instead of the value written to TimerLoad.
12
13This problem is evident on versatileap on current linux-next, which
14enables TIMER_CTRL_32BIT before writing to TimerLoad and then enabling
15periodic mode and starting the timer. This causes the first periodic
16tick to be scheduled to occur after 0xffffffff periods, leading to a
17perceived hang while the kernel waits for the first timer tick.
18
19Signed-off-by: Rabin Vincent <rabin@rab.in>
20Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
21---
22 hw/arm_timer.c | 2 +-
23 1 files changed, 1 insertions(+), 1 deletions(-)
24
25diff --git a/hw/arm_timer.c b/hw/arm_timer.c
26index 9fef191..5b6947a 100644
27--- a/hw/arm_timer.c
28+++ b/hw/arm_timer.c
29@@ -113,7 +113,7 @@ static void arm_timer_write(void *opaque, target_phys_addr_t offset,
30 case 1: freq >>= 4; break;
31 case 2: freq >>= 8; break;
32 }
33- arm_timer_recalibrate(s, 0);
34+ arm_timer_recalibrate(s, s->control & TIMER_CTRL_ENABLE);
35 ptimer_set_freq(s->timer, freq);
36 if (s->control & TIMER_CTRL_ENABLE) {
37 /* Restart the timer if still enabled. */
38--
391.6.5.2
40
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch
deleted file mode 100644
index 6600c4303f..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1Fix the mouse shadow in qemu
2
3the root cause is that the qemu cursor array is hardcoded to 256 bytes, while the sato use cursor of the size 64*64=4096, thus lead buffer overflow and abnormal mouse.
4
5This issue has been fixed in upstream starting from v0.13.0-rc0. v0.12.5 still has this issue. So when qemu is upgraded to 0.13.0 or above, this patch can be safely removed.
6
7Signed-off-by: Yu Ke <ke.yu@intel.com>
8
9diff --git a/sdl.c b/sdl.c
10index 7912c91..2f33cd2 100644
11--- a/sdl.c
12+++ b/sdl.c
13@@ -775,12 +775,12 @@ static void sdl_mouse_define(int width, int height, int bpp,
14 int hot_x, int hot_y,
15 uint8_t *image, uint8_t *mask)
16 {
17- uint8_t sprite[256], *line;
18+ uint8_t *sprite, *line;
19 int x, y, dst, bypl, src = 0;
20 if (guest_sprite)
21 SDL_FreeCursor(guest_sprite);
22
23- memset(sprite, 0, 256);
24+ sprite = (uint8_t*)qemu_mallocz(width * height);
25 bypl = ((width * bpp + 31) >> 5) << 2;
26 for (y = 0, dst = 0; y < height; y ++, image += bypl) {
27 line = image;
28@@ -818,6 +818,7 @@ static void sdl_mouse_define(int width, int height, int bpp,
29 if (guest_cursor &&
30 (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
31 SDL_SetCursor(guest_sprite);
32+ qemu_free(sprite);
33 }
34
35 static void sdl_cleanup(void)
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch
deleted file mode 100644
index 3ed227ec35..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch
+++ /dev/null
@@ -1,136 +0,0 @@
1Quick fixes to get the ppc system model to boot a 603e based
2kernel.
3
4diff --git a/hw/m48t59.c b/hw/m48t59.c
5index ce38f8b..d99054f 100644
6--- a/hw/m48t59.c
7+++ b/hw/m48t59.c
8@@ -50,6 +50,7 @@
9 */
10
11 struct m48t59_t {
12+ SysBusDevice busdev;
13 /* Model parameters */
14 uint32_t type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
15 /* Hardware parameters */
16@@ -74,11 +75,6 @@ typedef struct M48t59ISAState {
17 m48t59_t state;
18 } M48t59ISAState;
19
20-typedef struct M48t59SysBusState {
21- SysBusDevice busdev;
22- m48t59_t state;
23-} M48t59SysBusState;
24-
25 /* Fake timer functions */
26
27 /* Alarm management */
28@@ -629,8 +625,7 @@ static void m48t59_reset_isa(DeviceState *d)
29
30 static void m48t59_reset_sysbus(DeviceState *d)
31 {
32- M48t59SysBusState *sys = container_of(d, M48t59SysBusState, busdev.qdev);
33- m48t59_t *NVRAM = &sys->state;
34+ m48t59_t *NVRAM = container_of(d, m48t59_t, busdev.qdev);
35
36 m48t59_reset_common(NVRAM);
37 }
38@@ -642,7 +637,7 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base,
39 {
40 DeviceState *dev;
41 SysBusDevice *s;
42- M48t59SysBusState *d;
43+ m48t59_t *d;
44
45 dev = qdev_create(NULL, "m48t59");
46 qdev_prop_set_uint32(dev, "type", type);
47@@ -659,9 +654,9 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base,
48 sysbus_mmio_map(s, 0, mem_base);
49 }
50
51- d = FROM_SYSBUS(M48t59SysBusState, s);
52+ d = FROM_SYSBUS(m48t59_t, s);
53
54- return &d->state;
55+ return d;
56 }
57
58 m48t59_t *m48t59_init_isa(uint32_t io_base, uint16_t size, int type)
59@@ -711,8 +706,7 @@ static int m48t59_init_isa1(ISADevice *dev)
60
61 static int m48t59_init1(SysBusDevice *dev)
62 {
63- M48t59SysBusState *d = FROM_SYSBUS(M48t59SysBusState, dev);
64- m48t59_t *s = &d->state;
65+ m48t59_t *s = FROM_SYSBUS(m48t59_t, dev);
66 int mem_index;
67
68 sysbus_init_irq(dev, &s->IRQ);
69@@ -741,12 +735,12 @@ static ISADeviceInfo m48t59_isa_info = {
70 static SysBusDeviceInfo m48t59_info = {
71 .init = m48t59_init1,
72 .qdev.name = "m48t59",
73- .qdev.size = sizeof(M48t59SysBusState),
74+ .qdev.size = sizeof(m48t59_t),
75 .qdev.reset = m48t59_reset_sysbus,
76 .qdev.props = (Property[]) {
77- DEFINE_PROP_UINT32("size", M48t59SysBusState, state.size, -1),
78- DEFINE_PROP_UINT32("type", M48t59SysBusState, state.type, -1),
79- DEFINE_PROP_HEX32( "io_base", M48t59SysBusState, state.io_base, 0),
80+ DEFINE_PROP_UINT32("size", m48t59_t, size, -1),
81+ DEFINE_PROP_UINT32("type", m48t59_t, type, -1),
82+ DEFINE_PROP_HEX32( "io_base", m48t59_t, io_base, 0),
83 DEFINE_PROP_END_OF_LIST(),
84 }
85 };
86diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c
87index eb758f2..08db51b 100644
88--- a/hw/ppc_prep.c
89+++ b/hw/ppc_prep.c
90@@ -73,7 +73,7 @@ qemu_log_mask(CPU_LOG_IOPORT, fmt, ## __VA_ARGS__)
91 /* Constants for devices init */
92 static const int ide_iobase[2] = { 0x1f0, 0x170 };
93 static const int ide_iobase2[2] = { 0x3f6, 0x376 };
94-static const int ide_irq[2] = { 13, 13 };
95+static const int ide_irq[2] = { 13, 14 };
96
97 #define NE2000_NB_MAX 6
98
99@@ -620,9 +620,6 @@ static void ppc_prep_init (ram_addr_t ram_size,
100 if (filename) {
101 qemu_free(filename);
102 }
103- if (env->nip < 0xFFF80000 && bios_size < 0x00100000) {
104- hw_error("PowerPC 601 / 620 / 970 need a 1MB BIOS\n");
105- }
106
107 if (linux_boot) {
108 kernel_base = KERNEL_LOAD_ADDR;
109diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
110index e3bd29c..1cb2e07 100644
111--- a/target-ppc/op_helper.c
112+++ b/target-ppc/op_helper.c
113@@ -1646,20 +1646,20 @@ static inline void do_rfi(target_ulong nip, target_ulong msr,
114 void helper_rfi (void)
115 {
116 do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
117- ~((target_ulong)0x0), 1);
118+ ~((target_ulong)0xFFFF0000), 1);
119 }
120
121 #if defined(TARGET_PPC64)
122 void helper_rfid (void)
123 {
124 do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
125- ~((target_ulong)0x0), 0);
126+ ~((target_ulong)0xFFFF0000), 0);
127 }
128
129 void helper_hrfid (void)
130 {
131 do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1],
132- ~((target_ulong)0x0), 0);
133+ ~((target_ulong)0xFFFF0000), 0);
134 }
135 #endif
136 #endif
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/enable-i386-linux-user.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/enable-i386-linux-user.patch
index 550d48b138..95420ef99e 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/enable-i386-linux-user.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/enable-i386-linux-user.patch
@@ -2,13 +2,13 @@ Enable i386-linux-user
2 2
3Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> 3Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
4 4
5Index: qemu-0.12.4/Makefile.target 5Index: qemu-0.13.0/Makefile.target
6=================================================================== 6===================================================================
7--- qemu-0.12.4.orig/Makefile.target 2010-08-31 13:57:01.000000000 +0800 7--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:50:39.000000000 +0800
8+++ qemu-0.12.4/Makefile.target 2010-08-31 14:03:06.000000000 +0800 8+++ qemu-0.13.0/Makefile.target 2011-01-17 16:50:41.000000000 +0800
9@@ -46,8 +46,13 @@ 9@@ -54,8 +54,13 @@
10 libobj-$(CONFIG_NOSOFTFLOAT) += fpu/softfloat-native.o 10 libobj-y += cpuid.o
11 libobj-y += op_helper.o helper.o 11 endif
12 libobj-$(CONFIG_NEED_MMU) += mmu.o 12 libobj-$(CONFIG_NEED_MMU) += mmu.o
13+ifndef CONFIG_LINUX_USER 13+ifndef CONFIG_LINUX_USER
14 libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o 14 libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
@@ -20,10 +20,10 @@ Index: qemu-0.12.4/Makefile.target
20 libobj-$(TARGET_ARM) += dummygl.o 20 libobj-$(TARGET_ARM) += dummygl.o
21 libobj-$(TARGET_MIPS) += dummygl.o 21 libobj-$(TARGET_MIPS) += dummygl.o
22 libobj-$(TARGET_PPC) += dummygl.o 22 libobj-$(TARGET_PPC) += dummygl.o
23Index: qemu-0.12.4/target-i386/dummygl.c 23Index: qemu-0.13.0/target-i386/dummygl.c
24=================================================================== 24===================================================================
25--- /dev/null 1970-01-01 00:00:00.000000000 +0000 25--- /dev/null 1970-01-01 00:00:00.000000000 +0000
26+++ qemu-0.12.4/target-i386/dummygl.c 2010-08-31 15:25:25.000000000 +0800 26+++ qemu-0.13.0/target-i386/dummygl.c 2011-01-17 16:50:41.000000000 +0800
27@@ -0,0 +1,26 @@ 27@@ -0,0 +1,26 @@
28+#include <string.h> 28+#include <string.h>
29+#include <stdlib.h> 29+#include <stdlib.h>
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-configure-checks.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-configure-checks.patch
index 28ca2b3646..46ddc6e206 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-configure-checks.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-configure-checks.patch
@@ -6,15 +6,15 @@ added and files in the sysroot can be found.
6 6
7Patch from Paul Eggleton, Comments by RP 28/11/10 7Patch from Paul Eggleton, Comments by RP 28/11/10
8 8
9Index: qemu-0.12.4/configure 9Index: qemu-0.13.0/configure
10=================================================================== 10===================================================================
11--- qemu-0.12.4.orig/configure 11--- qemu-0.13.0.orig/configure 2010-10-16 04:56:09.000000000 +0800
12+++ qemu-0.12.4/configure 12+++ qemu-0.13.0/configure 2011-01-15 18:19:41.000000000 +0800
13@@ -99,6 +99,7 @@ QEMU_CFLAGS="-Wstrict-prototypes -Wredun 13@@ -134,6 +134,7 @@
14 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 14 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
15 QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS" 15 QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
16 QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS" 16 QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
17+QEMU_CFLAGS="$QEMU_CFLAGS $CFLAGS" 17+QEMU_CFLAGS="$QEMU_CFLAGS $CFLAGS"
18 LDFLAGS="-g $LDFLAGS" 18 LDFLAGS="-g $LDFLAGS"
19 19
20 gcc_flags="-Wold-style-declaration -Wold-style-definition" 20 gcc_flags="-Wold-style-declaration -Wold-style-definition -fstack-protector-all"
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-dirent.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-dirent.patch
index 8bbfa0e88e..8bbfa0e88e 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-dirent.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-dirent.patch
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-nogl.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-nogl.patch
index 528b6f0d18..fa518abbf7 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-nogl.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-nogl.patch
@@ -1,9 +1,9 @@
1Index: qemu-0.12.4/Makefile.target 1Index: qemu-0.13.0/Makefile.target
2=================================================================== 2===================================================================
3--- qemu-0.12.4.orig/Makefile.target 2010-06-24 07:59:15.669394205 +0100 3--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:53:08.000000000 +0800
4+++ qemu-0.12.4/Makefile.target 2010-06-24 08:07:38.739399512 +0100 4+++ qemu-0.13.0/Makefile.target 2011-01-17 16:53:11.000000000 +0800
5@@ -47,6 +47,10 @@ 5@@ -55,6 +55,10 @@
6 libobj-y += op_helper.o helper.o 6 endif
7 libobj-$(CONFIG_NEED_MMU) += mmu.o 7 libobj-$(CONFIG_NEED_MMU) += mmu.o
8 libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o 8 libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
9+libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o 9+libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
@@ -11,12 +11,12 @@ Index: qemu-0.12.4/Makefile.target
11+libobj-$(TARGET_MIPS) += dummygl.o 11+libobj-$(TARGET_MIPS) += dummygl.o
12+libobj-$(TARGET_PPC) += dummygl.o 12+libobj-$(TARGET_PPC) += dummygl.o
13 libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o 13 libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
14 libobj-$(TARGET_ALPHA) += alpha_palcode.o
15 14
16Index: qemu-0.12.4/target-arm/dummygl.c 15 libobj-y += disas.o
16Index: qemu-0.13.0/target-arm/dummygl.c
17=================================================================== 17===================================================================
18--- /dev/null 1970-01-01 00:00:00.000000000 +0000 18--- /dev/null 1970-01-01 00:00:00.000000000 +0000
19+++ qemu-0.12.4/target-arm/dummygl.c 2010-06-24 07:59:15.899401748 +0100 19+++ qemu-0.13.0/target-arm/dummygl.c 2011-01-17 16:53:11.000000000 +0800
20@@ -0,0 +1,22 @@ 20@@ -0,0 +1,22 @@
21+#include <string.h> 21+#include <string.h>
22+#include <stdlib.h> 22+#include <stdlib.h>
@@ -40,10 +40,10 @@ Index: qemu-0.12.4/target-arm/dummygl.c
40+{ 40+{
41+ 41+
42+} 42+}
43Index: qemu-0.12.4/target-mips/dummygl.c 43Index: qemu-0.13.0/target-mips/dummygl.c
44=================================================================== 44===================================================================
45--- /dev/null 1970-01-01 00:00:00.000000000 +0000 45--- /dev/null 1970-01-01 00:00:00.000000000 +0000
46+++ qemu-0.12.4/target-mips/dummygl.c 2010-06-24 07:59:15.899401748 +0100 46+++ qemu-0.13.0/target-mips/dummygl.c 2011-01-17 16:53:11.000000000 +0800
47@@ -0,0 +1,22 @@ 47@@ -0,0 +1,22 @@
48+#include <string.h> 48+#include <string.h>
49+#include <stdlib.h> 49+#include <stdlib.h>
@@ -67,10 +67,10 @@ Index: qemu-0.12.4/target-mips/dummygl.c
67+{ 67+{
68+ 68+
69+} 69+}
70Index: qemu-0.12.4/target-ppc/dummygl.c 70Index: qemu-0.13.0/target-ppc/dummygl.c
71=================================================================== 71===================================================================
72--- /dev/null 1970-01-01 00:00:00.000000000 +0000 72--- /dev/null 1970-01-01 00:00:00.000000000 +0000
73+++ qemu-0.12.4/target-ppc/dummygl.c 2010-06-24 08:07:59.070712946 +0100 73+++ qemu-0.13.0/target-ppc/dummygl.c 2011-01-17 16:53:11.000000000 +0800
74@@ -0,0 +1,22 @@ 74@@ -0,0 +1,22 @@
75+#include <string.h> 75+#include <string.h>
76+#include <stdlib.h> 76+#include <stdlib.h>
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/glflags.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/glflags.patch
index 0a27c2dee1..0a27c2dee1 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/glflags.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/glflags.patch
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/init-info.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/init-info.patch
index 8ba7d8ff4c..77022ae541 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/init-info.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/init-info.patch
@@ -2,11 +2,11 @@
2# makes info.info.x11.display zero and avoids the calls to 2# makes info.info.x11.display zero and avoids the calls to
3# opengl_exec_set_parent_window, one of which is crashing. 3# opengl_exec_set_parent_window, one of which is crashing.
4 4
5Index: qemu-0.12.4/sdl.c 5Index: qemu-0.13.0/ui/sdl.c
6=================================================================== 6===================================================================
7--- qemu-0.12.4.orig/sdl.c 7--- qemu-0.13.0.orig/ui/sdl.c 2011-01-15 17:40:59.000000000 +0800
8+++ qemu-0.12.4/sdl.c 8+++ qemu-0.13.0/ui/sdl.c 2011-01-15 17:41:04.000000000 +0800
9@@ -871,6 +871,7 @@ void sdl_display_init(DisplayState *ds, 9@@ -857,6 +857,7 @@
10 vi = SDL_GetVideoInfo(); 10 vi = SDL_GetVideoInfo();
11 host_format = *(vi->vfmt); 11 host_format = *(vi->vfmt);
12 12
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/linker-flags.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/linker-flags.patch
index 7b33aa4840..54c480f94b 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/linker-flags.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/linker-flags.patch
@@ -7,16 +7,16 @@ More information is available on the Fedora Wiki:
7https://fedoraproject.org/wiki/UnderstandingDSOLinkChange 7https://fedoraproject.org/wiki/UnderstandingDSOLinkChange
8 8
9JL - 15/06/10 9JL - 15/06/10
10Index: qemu-0.12.4/Makefile.target 10Index: qemu-0.13.0/Makefile.target
11=================================================================== 11===================================================================
12--- qemu-0.12.4.orig/Makefile.target 2010-06-15 11:21:52.000000000 +0100 12--- qemu-0.13.0.orig/Makefile.target 2011-01-15 17:30:45.000000000 +0800
13+++ qemu-0.12.4/Makefile.target 2010-06-15 11:25:27.212852910 +0100 13+++ qemu-0.13.0/Makefile.target 2011-01-15 17:33:22.000000000 +0800
14@@ -178,7 +178,7 @@ 14@@ -193,7 +193,7 @@
15 obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o virtio-pci.o 15 obj-y += rwhandler.o
16 obj-$(CONFIG_KVM) += kvm.o kvm-all.o 16 obj-$(CONFIG_KVM) += kvm.o kvm-all.o
17 obj-$(CONFIG_ISA_MMIO) += isa_mmio.o 17 obj-$(CONFIG_NO_KVM) += kvm-stub.o
18-LIBS+=-lz 18-LIBS+=-lz
19+LIBS+=-lz -lX11 -ldl 19+LIBS+=-lz -lX11 -ldl
20 20
21 sound-obj-y = 21 QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
22 sound-obj-$(CONFIG_SB16) += sb16.o 22 QEMU_CFLAGS += $(VNC_SASL_CFLAGS)
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/no-strip.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/no-strip.patch
index 8a95a688b3..62cdec6109 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/no-strip.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/no-strip.patch
@@ -1,9 +1,9 @@
1Index: qemu/Makefile 1Index: qemu-0.13.0/Makefile
2=================================================================== 2===================================================================
3--- qemu.orig/Makefile 2010-05-11 17:17:06.416912704 -0400 3--- qemu-0.13.0.orig/Makefile 2011-01-17 16:41:59.000000000 +0800
4+++ qemu/Makefile 2010-05-11 17:17:17.051812402 -0400 4+++ qemu-0.13.0/Makefile 2011-01-17 16:44:57.000000000 +0800
5@@ -300,7 +300,7 @@ endif 5@@ -185,7 +185,7 @@
6 install: all $(if $(BUILD_DOCS),install-doc) 6 install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig
7 $(INSTALL_DIR) "$(DESTDIR)$(bindir)" 7 $(INSTALL_DIR) "$(DESTDIR)$(bindir)"
8 ifneq ($(TOOLS),) 8 ifneq ($(TOOLS),)
9- $(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)" 9- $(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
@@ -11,11 +11,11 @@ Index: qemu/Makefile
11 endif 11 endif
12 ifneq ($(BLOBS),) 12 ifneq ($(BLOBS),)
13 $(INSTALL_DIR) "$(DESTDIR)$(datadir)" 13 $(INSTALL_DIR) "$(DESTDIR)$(datadir)"
14Index: qemu/Makefile.target 14Index: qemu-0.13.0/Makefile.target
15=================================================================== 15===================================================================
16--- qemu.orig/Makefile.target 2010-05-11 17:17:12.188784092 -0400 16--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:42:36.000000000 +0800
17+++ qemu/Makefile.target 2010-05-11 17:17:17.052808122 -0400 17+++ qemu-0.13.0/Makefile.target 2011-01-17 16:44:57.000000000 +0800
18@@ -351,7 +351,7 @@ clean: 18@@ -351,7 +351,7 @@
19 19
20 install: all 20 install: all
21 ifneq ($(PROGS),) 21 ifneq ($(PROGS),)
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch
new file mode 100644
index 0000000000..278b1a759d
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch
@@ -0,0 +1,34 @@
1Make -j(>=6) always fail as some job depends on config-host.h. Added following
2patch in upstream to resolve it.
3
4Could remove it in next upgrade if necessary.
5
6Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
7
8commit f0acb38015409024683911380daa94cc974e4e0e
9Author: Paul Brook <paul@codesourcery.com>
10Date: Fri Nov 26 18:46:03 2010 +0000
11
12 Add missing dependency.
13
14 Teach Makefile that cmd.o depends on a generated header (specifically
15 config-host.h).
16
17 Signed-off-by: Paul Brook <paul@codesourcery.com>
18 (cherry picked from commit 6e14404aab26f74a448747d1e793ac16bde8a92b)
19
20 Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
21
22Index: qemu-0.13.0/Makefile
23===================================================================
24--- qemu-0.13.0.orig/Makefile 2011-01-18 09:45:45.000000000 +0800
25+++ qemu-0.13.0/Makefile 2011-01-18 09:45:45.000000000 +0800
26@@ -107,7 +107,7 @@
27 ######################################################################
28
29 qemu-img.o: qemu-img-cmds.h
30-qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o: $(GENERATED_HEADERS)
31+qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o cmd.o: $(GENERATED_HEADERS)
32
33 qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o $(block-obj-y) $(qobject-obj-y)
34
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch
new file mode 100644
index 0000000000..e101c687c0
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch
@@ -0,0 +1,196 @@
1With qemu 0.13.0, poky failed to start on ppc arch because both ppc_prep_init
2and i8042_initfn try to register to port 0x92 then cause conflict. Introduce
3this patch from upstream to fix it.
4
5Could remove it in future if necessary.
6
7Signed-off-by: Zhai, Edwin <edwin.zhai@intel.com>
8
9commit 4b78a802ffaabb325a0f7b773031da92d173bde1
10Author: Blue Swirl <blauwirbel@gmail.com>
11Date: Thu Jan 6 18:24:35 2011 +0000
12
13 pc: move port 92 stuff back to pc.c from pckbd.c
14
15 956a3e6bb7386de48b642d4fee11f7f86a2fcf9a introduced a bug concerning
16 reset bit for port 92.
17
18 Since the keyboard output port and port 92 are not compatible anyway,
19 let's separate them.
20
21 Reported-by: Peter Lieven <pl@dlh.net>
22 Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
23 --
24 v2: added reset handler and VMState
25
26Index: qemu-0.13.0/hw/pc.c
27===================================================================
28--- qemu-0.13.0.orig/hw/pc.c 2010-10-16 04:56:09.000000000 +0800
29+++ qemu-0.13.0/hw/pc.c 2011-01-20 20:37:37.000000000 +0800
30@@ -409,11 +409,91 @@
31 qemu_register_reset(pc_cmos_init_late, &arg);
32 }
33
34+/* port 92 stuff: could be split off */
35+typedef struct Port92State {
36+ ISADevice dev;
37+ uint8_t outport;
38+ qemu_irq *a20_out;
39+} Port92State;
40+
41+static void port92_write(void *opaque, uint32_t addr, uint32_t val)
42+{
43+ Port92State *s = opaque;
44+
45+ DPRINTF("port92: write 0x%02x\n", val);
46+ s->outport = val;
47+ qemu_set_irq(*s->a20_out, (val >> 1) & 1);
48+ if (val & 1) {
49+ qemu_system_reset_request();
50+ }
51+}
52+
53+static uint32_t port92_read(void *opaque, uint32_t addr)
54+{
55+ Port92State *s = opaque;
56+ uint32_t ret;
57+
58+ ret = s->outport;
59+ DPRINTF("port92: read 0x%02x\n", ret);
60+ return ret;
61+}
62+
63+static void port92_init(ISADevice *dev, qemu_irq *a20_out)
64+{
65+ Port92State *s = DO_UPCAST(Port92State, dev, dev);
66+
67+ s->a20_out = a20_out;
68+}
69+
70+static const VMStateDescription vmstate_port92_isa = {
71+ .name = "port92",
72+ .version_id = 1,
73+ .minimum_version_id = 1,
74+ .minimum_version_id_old = 1,
75+ .fields = (VMStateField []) {
76+ VMSTATE_UINT8(outport, Port92State),
77+ VMSTATE_END_OF_LIST()
78+ }
79+};
80+
81+static void port92_reset(DeviceState *d)
82+{
83+ Port92State *s = container_of(d, Port92State, dev.qdev);
84+
85+ s->outport &= ~1;
86+}
87+
88+static int port92_initfn(ISADevice *dev)
89+{
90+ Port92State *s = DO_UPCAST(Port92State, dev, dev);
91+
92+ register_ioport_read(0x92, 1, 1, port92_read, s);
93+ register_ioport_write(0x92, 1, 1, port92_write, s);
94+ s->outport = 0;
95+ return 0;
96+}
97+
98+static ISADeviceInfo port92_info = {
99+ .qdev.name = "port92",
100+ .qdev.size = sizeof(Port92State),
101+ .qdev.vmsd = &vmstate_port92_isa,
102+ .qdev.no_user = 1,
103+ .qdev.reset = port92_reset,
104+ .init = port92_initfn,
105+};
106+
107+static void port92_register(void)
108+{
109+ isa_qdev_register(&port92_info);
110+}
111+device_init(port92_register)
112+
113 static void handle_a20_line_change(void *opaque, int irq, int level)
114 {
115 CPUState *cpu = opaque;
116
117 /* XXX: send to all CPUs ? */
118+ /* XXX: add logic to handle multiple A20 line sources */
119 cpu_x86_set_a20(cpu, level);
120 }
121
122@@ -1017,7 +1097,7 @@
123 PITState *pit;
124 qemu_irq rtc_irq = NULL;
125 qemu_irq *a20_line;
126- ISADevice *i8042;
127+ ISADevice *i8042, *port92;
128 qemu_irq *cpu_exit_irq;
129
130 register_ioport_write(0x80, 1, 1, ioport80_write, NULL);
131@@ -1051,10 +1131,12 @@
132 }
133 }
134
135- a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 1);
136+ a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2);
137 i8042 = isa_create_simple("i8042");
138- i8042_setup_a20_line(i8042, a20_line);
139+ i8042_setup_a20_line(i8042, &a20_line[0]);
140 vmmouse_init(i8042);
141+ port92 = isa_create_simple("port92");
142+ port92_init(port92, &a20_line[1]);
143
144 cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1);
145 DMA_init(0, cpu_exit_irq);
146Index: qemu-0.13.0/hw/pckbd.c
147===================================================================
148--- qemu-0.13.0.orig/hw/pckbd.c 2010-10-16 04:56:09.000000000 +0800
149+++ qemu-0.13.0/hw/pckbd.c 2011-01-20 20:33:44.000000000 +0800
150@@ -209,10 +209,8 @@
151 ps2_queue(s->kbd, b);
152 }
153
154-static void ioport92_write(void *opaque, uint32_t addr, uint32_t val)
155+static void outport_write(KBDState *s, uint32_t val)
156 {
157- KBDState *s = opaque;
158-
159 DPRINTF("kbd: write outport=0x%02x\n", val);
160 s->outport = val;
161 if (s->a20_out) {
162@@ -223,16 +221,6 @@
163 }
164 }
165
166-static uint32_t ioport92_read(void *opaque, uint32_t addr)
167-{
168- KBDState *s = opaque;
169- uint32_t ret;
170-
171- ret = s->outport;
172- DPRINTF("kbd: read outport=0x%02x\n", ret);
173- return ret;
174-}
175-
176 static void kbd_write_command(void *opaque, uint32_t addr, uint32_t val)
177 {
178 KBDState *s = opaque;
179@@ -340,7 +328,7 @@
180 kbd_queue(s, val, 1);
181 break;
182 case KBD_CCMD_WRITE_OUTPORT:
183- ioport92_write(s, 0, val);
184+ outport_write(s, val);
185 break;
186 case KBD_CCMD_WRITE_MOUSE:
187 ps2_write_mouse(s->mouse, val);
188@@ -469,8 +457,6 @@
189 register_ioport_write(0x60, 1, 1, kbd_write_data, s);
190 register_ioport_read(0x64, 1, 1, kbd_read_status, s);
191 register_ioport_write(0x64, 1, 1, kbd_write_command, s);
192- register_ioport_read(0x92, 1, 1, ioport92_read, s);
193- register_ioport_write(0x92, 1, 1, ioport92_write, s);
194
195 s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
196 s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/powerpc_rom.bin b/meta/recipes-devtools/qemu/qemu-0.13.0/powerpc_rom.bin
index c4044296c5..c4044296c5 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/powerpc_rom.bin
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/powerpc_rom.bin
Binary files differ
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-git-qemugl-host.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-git-qemugl-host.patch
index ab31476218..085477c575 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-git-qemugl-host.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-git-qemugl-host.patch
@@ -1,16 +1,16 @@
1Index: qemu-0.12.4/Makefile.target 1Index: qemu-0.13.0/Makefile.target
2=================================================================== 2===================================================================
3--- qemu-0.12.4.orig/Makefile.target 3--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:41:59.000000000 +0800
4+++ qemu-0.12.4/Makefile.target 4+++ qemu-0.13.0/Makefile.target 2011-01-17 16:42:36.000000000 +0800
5@@ -46,6 +46,7 @@ libobj-$(CONFIG_SOFTFLOAT) += fpu/softfl 5@@ -54,6 +54,7 @@
6 libobj-$(CONFIG_NOSOFTFLOAT) += fpu/softfloat-native.o 6 libobj-y += cpuid.o
7 libobj-y += op_helper.o helper.o 7 endif
8 libobj-$(CONFIG_NEED_MMU) += mmu.o 8 libobj-$(CONFIG_NEED_MMU) += mmu.o
9+libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o 9+libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
10 libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o 10 libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
11 libobj-$(TARGET_ALPHA) += alpha_palcode.o
12 11
13@@ -82,6 +83,21 @@ op_helper.o cpu-exec.o: QEMU_CFLAGS += $ 12 libobj-y += disas.o
13@@ -76,6 +77,21 @@
14 # cpu_signal_handler() in cpu-exec.c. 14 # cpu_signal_handler() in cpu-exec.c.
15 signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS) 15 signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
16 16
@@ -32,31 +32,31 @@ Index: qemu-0.12.4/Makefile.target
32 ######################################################### 32 #########################################################
33 # Linux user emulator target 33 # Linux user emulator target
34 34
35@@ -196,6 +212,10 @@ obj-i386-y += usb-uhci.o vmmouse.o vmpor 35@@ -202,6 +218,10 @@
36 obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o 36 obj-i386-y += debugcon.o multiboot.o
37 obj-i386-y += ne2000-isa.o 37 obj-i386-y += pc_piix.o
38 38
39+ifeq ($(TARGET_BASE_ARCH), i386) 39+ifeq ($(TARGET_BASE_ARCH), i386)
40+QEMU_CFLAGS += -DTARGET_OPENGL_OK 40+QEMU_CFLAGS += -DTARGET_OPENGL_OK
41+endif 41+endif
42+ 42+
43 # shared objects 43 # shared objects
44 obj-ppc-y = ppc.o ide/core.o ide/qdev.o ide/isa.o ide/pci.o ide/macio.o 44 obj-ppc-y = ppc.o
45 obj-ppc-y += ide/cmd646.o 45 obj-ppc-y += vga.o
46@@ -303,6 +323,8 @@ vl.o: qemu-options.h 46@@ -301,6 +321,8 @@
47 47
48 monitor.o: qemu-monitor.h 48 monitor.o: qemu-monitor.h
49 49
50+LIBS += -lGL -lGLU 50+LIBS += -lGL -lGLU
51+ 51+
52 ARLIBS=../libqemu_common.a libqemu.a $(HWLIB) 52 $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
53 53
54 endif # CONFIG_SOFTMMU 54 obj-y += $(addprefix ../, $(common-obj-y))
55Index: qemu-0.12.4/hw/pixel_ops.h 55Index: qemu-0.13.0/hw/pixel_ops.h
56=================================================================== 56===================================================================
57--- qemu-0.12.4.orig/hw/pixel_ops.h 57--- qemu-0.13.0.orig/hw/pixel_ops.h 2011-01-17 16:41:59.000000000 +0800
58+++ qemu-0.12.4/hw/pixel_ops.h 58+++ qemu-0.13.0/hw/pixel_ops.h 2011-01-17 16:42:36.000000000 +0800
59@@ -4,6 +4,12 @@ static inline unsigned int rgb_to_pixel8 59@@ -4,6 +4,12 @@
60 return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6); 60 return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6);
61 } 61 }
62 62
@@ -69,11 +69,11 @@ Index: qemu-0.12.4/hw/pixel_ops.h
69 static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g, 69 static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g,
70 unsigned int b) 70 unsigned int b)
71 { 71 {
72Index: qemu-0.12.4/hw/vmware_vga.c 72Index: qemu-0.13.0/hw/vmware_vga.c
73=================================================================== 73===================================================================
74--- qemu-0.12.4.orig/hw/vmware_vga.c 74--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-17 16:41:59.000000000 +0800
75+++ qemu-0.12.4/hw/vmware_vga.c 75+++ qemu-0.13.0/hw/vmware_vga.c 2011-01-17 16:42:36.000000000 +0800
76@@ -489,6 +489,8 @@ static inline void vmsvga_cursor_define( 76@@ -519,6 +519,8 @@
77 77
78 #define CMD(f) le32_to_cpu(s->cmd->f) 78 #define CMD(f) le32_to_cpu(s->cmd->f)
79 79
@@ -82,7 +82,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
82 static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s) 82 static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)
83 { 83 {
84 if (!s->config || !s->enable) 84 if (!s->config || !s->enable)
85@@ -498,11 +500,18 @@ static inline int vmsvga_fifo_empty(stru 85@@ -528,11 +530,18 @@
86 86
87 static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s) 87 static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)
88 { 88 {
@@ -105,7 +105,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
105 } 105 }
106 106
107 static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s) 107 static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
108@@ -512,12 +521,12 @@ static inline uint32_t vmsvga_fifo_read( 108@@ -542,12 +551,12 @@
109 109
110 static void vmsvga_fifo_run(struct vmsvga_state_s *s) 110 static void vmsvga_fifo_run(struct vmsvga_state_s *s)
111 { 111 {
@@ -120,7 +120,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
120 case SVGA_CMD_UPDATE: 120 case SVGA_CMD_UPDATE:
121 case SVGA_CMD_UPDATE_VERBOSE: 121 case SVGA_CMD_UPDATE_VERBOSE:
122 x = vmsvga_fifo_read(s); 122 x = vmsvga_fifo_read(s);
123@@ -624,7 +633,7 @@ static void vmsvga_fifo_run(struct vmsvg 123@@ -654,7 +663,7 @@
124 while (args --) 124 while (args --)
125 vmsvga_fifo_read(s); 125 vmsvga_fifo_read(s);
126 printf("%s: Unknown command 0x%02x in SVGA command FIFO\n", 126 printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",
@@ -129,7 +129,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
129 break; 129 break;
130 } 130 }
131 131
132@@ -1143,6 +1152,12 @@ static void vmsvga_init(struct vmsvga_st 132@@ -1173,6 +1182,12 @@
133 133
134 vga_init_vbe(&s->vga); 134 vga_init_vbe(&s->vga);
135 135
@@ -142,11 +142,11 @@ Index: qemu-0.12.4/hw/vmware_vga.c
142 rom_add_vga(VGABIOS_FILENAME); 142 rom_add_vga(VGABIOS_FILENAME);
143 143
144 vmsvga_reset(s); 144 vmsvga_reset(s);
145Index: qemu-0.12.4/qemu-char.c 145Index: qemu-0.13.0/qemu-char.c
146=================================================================== 146===================================================================
147--- qemu-0.12.4.orig/qemu-char.c 147--- qemu-0.13.0.orig/qemu-char.c 2011-01-17 16:41:59.000000000 +0800
148+++ qemu-0.12.4/qemu-char.c 148+++ qemu-0.13.0/qemu-char.c 2011-01-17 16:42:36.000000000 +0800
149@@ -2235,6 +2235,69 @@ static CharDriverState *qemu_chr_open_so 149@@ -2278,6 +2278,69 @@
150 return NULL; 150 return NULL;
151 } 151 }
152 152
@@ -216,7 +216,7 @@ Index: qemu-0.12.4/qemu-char.c
216 QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename) 216 QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
217 { 217 {
218 char host[65], port[33], width[8], height[8]; 218 char host[65], port[33], width[8], height[8];
219@@ -2353,6 +2416,10 @@ QemuOpts *qemu_chr_parse_compat(const ch 219@@ -2396,6 +2459,10 @@
220 qemu_opt_set(opts, "path", filename); 220 qemu_opt_set(opts, "path", filename);
221 return opts; 221 return opts;
222 } 222 }
@@ -227,7 +227,7 @@ Index: qemu-0.12.4/qemu-char.c
227 227
228 fail: 228 fail:
229 qemu_opts_del(opts); 229 qemu_opts_del(opts);
230@@ -2368,6 +2435,7 @@ static const struct { 230@@ -2411,6 +2478,7 @@
231 { .name = "udp", .open = qemu_chr_open_udp }, 231 { .name = "udp", .open = qemu_chr_open_udp },
232 { .name = "msmouse", .open = qemu_chr_open_msmouse }, 232 { .name = "msmouse", .open = qemu_chr_open_msmouse },
233 { .name = "vc", .open = text_console_init }, 233 { .name = "vc", .open = text_console_init },
@@ -235,136 +235,19 @@ Index: qemu-0.12.4/qemu-char.c
235 #ifdef _WIN32 235 #ifdef _WIN32
236 { .name = "file", .open = qemu_chr_open_win_file_out }, 236 { .name = "file", .open = qemu_chr_open_win_file_out },
237 { .name = "pipe", .open = qemu_chr_open_win_pipe }, 237 { .name = "pipe", .open = qemu_chr_open_win_pipe },
238Index: qemu-0.12.4/sdl.c 238Index: qemu-0.13.0/slirp/udp.c
239=================================================================== 239===================================================================
240--- qemu-0.12.4.orig/sdl.c 240--- qemu-0.13.0.orig/slirp/udp.c 2011-01-17 16:41:59.000000000 +0800
241+++ qemu-0.12.4/sdl.c 241+++ qemu-0.13.0/slirp/udp.c 2011-01-17 16:42:36.000000000 +0800
242@@ -58,6 +58,8 @@ static uint8_t allocator;
243 static SDL_PixelFormat host_format;
244 static int scaling_active = 0;
245
246+extern void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window);
247+
248 static void sdl_update(DisplayState *ds, int x, int y, int w, int h)
249 {
250 // printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
251@@ -119,12 +121,22 @@ static void do_sdl_resize(int new_width,
252
253 static void sdl_resize(DisplayState *ds)
254 {
255- if (!allocator) {
256+ SDL_SysWMinfo info;
257+ static Display *dpy;
258+
259+ if (!allocator) {
260 if (!scaling_active)
261 do_sdl_resize(ds_get_width(ds), ds_get_height(ds), 0);
262 else if (real_screen->format->BitsPerPixel != ds_get_bits_per_pixel(ds))
263 do_sdl_resize(real_screen->w, real_screen->h, ds_get_bits_per_pixel(ds));
264 sdl_setdata(ds);
265+
266+ SDL_GetWMInfo(&info);
267+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display &&
268+ (!dpy || dpy == info.info.x11.display)) {
269+ dpy = info.info.x11.display;
270+ opengl_exec_set_parent_window(dpy, info.info.x11.window);
271+ }
272 } else {
273 if (guest_screen != NULL) {
274 SDL_FreeSurface(guest_screen);
275@@ -453,7 +465,7 @@ static void sdl_show_cursor(void)
276
277 if (!kbd_mouse_is_absolute()) {
278 SDL_ShowCursor(1);
279- if (guest_cursor &&
280+ if (guest_cursor && !force_pointer &&
281 (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
282 SDL_SetCursor(guest_sprite);
283 else
284@@ -464,7 +476,8 @@ static void sdl_show_cursor(void)
285 static void sdl_grab_start(void)
286 {
287 if (guest_cursor) {
288- SDL_SetCursor(guest_sprite);
289+ if (!force_pointer)
290+ SDL_SetCursor(guest_sprite);
291 if (!kbd_mouse_is_absolute() && !absolute_enabled)
292 SDL_WarpMouse(guest_x, guest_y);
293 } else
294@@ -505,8 +518,8 @@ static void sdl_send_mouse_event(int dx,
295 absolute_enabled = 1;
296 }
297
298- dx = x * 0x7FFF / (width - 1);
299- dy = y * 0x7FFF / (height - 1);
300+ dx = x * 0x7FFF / (width - 1);
301+ dy = y * 0x7FFF / (height - 1);
302 } else if (absolute_enabled) {
303 sdl_show_cursor();
304 absolute_enabled = 0;
305@@ -761,7 +774,8 @@ static void sdl_mouse_warp(int x, int y,
306 if (!guest_cursor)
307 sdl_show_cursor();
308 if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) {
309- SDL_SetCursor(guest_sprite);
310+ if (!force_pointer)
311+ SDL_SetCursor(guest_sprite);
312 if (!kbd_mouse_is_absolute() && !absolute_enabled)
313 SDL_WarpMouse(x, y);
314 }
315@@ -815,7 +829,7 @@ static void sdl_mouse_define(int width,
316 }
317 guest_sprite = SDL_CreateCursor(sprite, mask, width, height, hot_x, hot_y);
318
319- if (guest_cursor &&
320+ if (guest_cursor && !force_pointer &&
321 (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
322 SDL_SetCursor(guest_sprite);
323 }
324@@ -832,6 +846,7 @@ void sdl_display_init(DisplayState *ds,
325 int flags;
326 uint8_t data = 0;
327 DisplayAllocator *da;
328+ SDL_SysWMinfo info;
329 const SDL_VideoInfo *vi;
330
331 #if defined(__APPLE__)
332@@ -856,6 +871,12 @@ void sdl_display_init(DisplayState *ds,
333 vi = SDL_GetVideoInfo();
334 host_format = *(vi->vfmt);
335
336+ SDL_GetWMInfo(&info);
337+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
338+ opengl_exec_set_parent_window(info.info.x11.display,
339+ RootWindow(info.info.x11.display,
340+ DefaultScreen(info.info.x11.display)));
341+
342 dcl = qemu_mallocz(sizeof(DisplayChangeListener));
343 dcl->dpy_update = sdl_update;
344 dcl->dpy_resize = sdl_resize;
345@@ -891,4 +912,9 @@ void sdl_display_init(DisplayState *ds,
346 gui_fullscreen_initial_grab = 1;
347 sdl_grab_start();
348 }
349+
350+ SDL_GetWMInfo(&info);
351+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
352+ opengl_exec_set_parent_window(info.info.x11.display,
353+ info.info.x11.window);
354 }
355Index: qemu-0.12.4/slirp/udp.c
356===================================================================
357--- qemu-0.12.4.orig/slirp/udp.c
358+++ qemu-0.12.4/slirp/udp.c
359@@ -40,6 +40,7 @@ 242@@ -40,6 +40,7 @@
360 243
361 #include <slirp.h> 244 #include <slirp.h>
362 #include "ip_icmp.h" 245 #include "ip_icmp.h"
363+#include "bswap.h" 246+#include "bswap.h"
364 247
365 static u_int8_t udp_tos(struct socket *so); 248 static uint8_t udp_tos(struct socket *so);
366 249
367@@ -125,6 +126,11 @@ udp_input(register struct mbuf *m, int i 250@@ -125,6 +126,11 @@
368 goto bad; 251 goto bad;
369 } 252 }
370 253
@@ -376,11 +259,11 @@ Index: qemu-0.12.4/slirp/udp.c
376 if (slirp->restricted) { 259 if (slirp->restricted) {
377 goto bad; 260 goto bad;
378 } 261 }
379Index: qemu-0.12.4/sysemu.h 262Index: qemu-0.13.0/sysemu.h
380=================================================================== 263===================================================================
381--- qemu-0.12.4.orig/sysemu.h 264--- qemu-0.13.0.orig/sysemu.h 2011-01-17 16:41:59.000000000 +0800
382+++ qemu-0.12.4/sysemu.h 265+++ qemu-0.13.0/sysemu.h 2011-01-17 16:42:36.000000000 +0800
383@@ -141,6 +141,7 @@ extern int semihosting_enabled; 266@@ -133,6 +133,7 @@
384 extern int old_param; 267 extern int old_param;
385 extern int boot_menu; 268 extern int boot_menu;
386 extern QEMUClock *rtc_clock; 269 extern QEMUClock *rtc_clock;
@@ -388,10 +271,10 @@ Index: qemu-0.12.4/sysemu.h
388 271
389 #define MAX_NODES 64 272 #define MAX_NODES 64
390 extern int nb_numa_nodes; 273 extern int nb_numa_nodes;
391Index: qemu-0.12.4/target-i386/beginend_funcs.sh 274Index: qemu-0.13.0/target-i386/beginend_funcs.sh
392=================================================================== 275===================================================================
393--- /dev/null 276--- /dev/null 1970-01-01 00:00:00.000000000 +0000
394+++ qemu-0.12.4/target-i386/beginend_funcs.sh 277+++ qemu-0.13.0/target-i386/beginend_funcs.sh 2011-01-17 16:42:36.000000000 +0800
395@@ -0,0 +1,23 @@ 278@@ -0,0 +1,23 @@
396+#! /bin/sh 279+#! /bin/sh
397+# Copyright 2008 (C) Intel Corporation 280+# Copyright 2008 (C) Intel Corporation
@@ -416,10 +299,10 @@ Index: qemu-0.12.4/target-i386/beginend_funcs.sh
416+echo -e MAGIC_MACRO\(glCallList\)\\n 299+echo -e MAGIC_MACRO\(glCallList\)\\n
417+echo -e MAGIC_MACRO\(glCallLists\)\\n 300+echo -e MAGIC_MACRO\(glCallLists\)\\n
418+echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n 301+echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n
419Index: qemu-0.12.4/target-i386/ghash.c 302Index: qemu-0.13.0/target-i386/ghash.c
420=================================================================== 303===================================================================
421--- /dev/null 304--- /dev/null 1970-01-01 00:00:00.000000000 +0000
422+++ qemu-0.12.4/target-i386/ghash.c 305+++ qemu-0.13.0/target-i386/ghash.c 2011-01-17 16:42:36.000000000 +0800
423@@ -0,0 +1,347 @@ 306@@ -0,0 +1,347 @@
424+/* This is a modified and simplified version of original ghash.c */ 307+/* This is a modified and simplified version of original ghash.c */
425+ 308+
@@ -768,10 +651,10 @@ Index: qemu-0.12.4/target-i386/ghash.c
768+ hash_node = next; 651+ hash_node = next;
769+ } 652+ }
770+} 653+}
771Index: qemu-0.12.4/target-i386/ghash.h 654Index: qemu-0.13.0/target-i386/ghash.h
772=================================================================== 655===================================================================
773--- /dev/null 656--- /dev/null 1970-01-01 00:00:00.000000000 +0000
774+++ qemu-0.12.4/target-i386/ghash.h 657+++ qemu-0.13.0/target-i386/ghash.h 2011-01-17 16:42:36.000000000 +0800
775@@ -0,0 +1,59 @@ 658@@ -0,0 +1,59 @@
776+/* This is a modified and simplified version of original ghash.h */ 659+/* This is a modified and simplified version of original ghash.h */
777+ 660+
@@ -832,10 +715,10 @@ Index: qemu-0.12.4/target-i386/ghash.h
832+ 715+
833+#endif /* __SIMPLE_HASH_H__ */ 716+#endif /* __SIMPLE_HASH_H__ */
834+ 717+
835Index: qemu-0.12.4/target-i386/gl_func_perso.h 718Index: qemu-0.13.0/target-i386/gl_func_perso.h
836=================================================================== 719===================================================================
837--- /dev/null 720--- /dev/null 1970-01-01 00:00:00.000000000 +0000
838+++ qemu-0.12.4/target-i386/gl_func_perso.h 721+++ qemu-0.13.0/target-i386/gl_func_perso.h 2011-01-17 16:42:36.000000000 +0800
839@@ -0,0 +1,135 @@ 722@@ -0,0 +1,135 @@
840+/* 723+/*
841+ * Hand-implemented GL/GLX API 724+ * Hand-implemented GL/GLX API
@@ -972,11 +855,11 @@ Index: qemu-0.12.4/target-i386/gl_func_perso.h
972+MAGIC_MACRO(_glGetSelectBuffer_fake), 855+MAGIC_MACRO(_glGetSelectBuffer_fake),
973+MAGIC_MACRO(_glFeedbackBuffer_fake), 856+MAGIC_MACRO(_glFeedbackBuffer_fake),
974+MAGIC_MACRO(_glGetFeedbackBuffer_fake), 857+MAGIC_MACRO(_glGetFeedbackBuffer_fake),
975Index: qemu-0.12.4/target-i386/helper.c 858Index: qemu-0.13.0/target-i386/helper.c
976=================================================================== 859===================================================================
977--- qemu-0.12.4.orig/target-i386/helper.c 860--- qemu-0.13.0.orig/target-i386/helper.c 2011-01-17 16:41:59.000000000 +0800
978+++ qemu-0.12.4/target-i386/helper.c 861+++ qemu-0.13.0/target-i386/helper.c 2011-01-17 16:42:36.000000000 +0800
979@@ -1435,7 +1435,7 @@ target_phys_addr_t cpu_get_phys_page_deb 862@@ -914,7 +914,7 @@
980 } 863 }
981 864
982 page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1); 865 page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1);
@@ -985,21 +868,21 @@ Index: qemu-0.12.4/target-i386/helper.c
985 return paddr; 868 return paddr;
986 } 869 }
987 870
988Index: qemu-0.12.4/target-i386/helper.h 871Index: qemu-0.13.0/target-i386/helper.h
989=================================================================== 872===================================================================
990--- qemu-0.12.4.orig/target-i386/helper.h 873--- qemu-0.13.0.orig/target-i386/helper.h 2011-01-17 16:41:59.000000000 +0800
991+++ qemu-0.12.4/target-i386/helper.h 874+++ qemu-0.13.0/target-i386/helper.h 2011-01-17 16:42:36.000000000 +0800
992@@ -217,4 +217,6 @@ DEF_HELPER_2(rclq, tl, tl, tl) 875@@ -217,4 +217,6 @@
993 DEF_HELPER_2(rcrq, tl, tl, tl) 876 DEF_HELPER_2(rcrq, tl, tl, tl)
994 #endif 877 #endif
995 878
996+DEF_HELPER_0(opengl, void) 879+DEF_HELPER_0(opengl, void)
997+ 880+
998 #include "def-helper.h" 881 #include "def-helper.h"
999Index: qemu-0.12.4/target-i386/helper_opengl.c 882Index: qemu-0.13.0/target-i386/helper_opengl.c
1000=================================================================== 883===================================================================
1001--- /dev/null 884--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1002+++ qemu-0.12.4/target-i386/helper_opengl.c 885+++ qemu-0.13.0/target-i386/helper_opengl.c 2011-01-17 16:44:27.000000000 +0800
1003@@ -0,0 +1,1207 @@ 886@@ -0,0 +1,1207 @@
1004+/* 887+/*
1005+ * Host-side implementation of GL/GLX API 888+ * Host-side implementation of GL/GLX API
@@ -1086,7 +969,7 @@ Index: qemu-0.12.4/target-i386/helper_opengl.c
1086+ cpu_x86_handle_mmu_fault((CPUState *) env, addr, 0, 1, 1)); 969+ cpu_x86_handle_mmu_fault((CPUState *) env, addr, 0, 1, 1));
1087+ return NULL; 970+ return NULL;
1088+ } else { 971+ } else {
1089+ if (ret + TARGET_PAGE_SIZE <= last_ram_offset) { 972+ if (ret + TARGET_PAGE_SIZE <= ram_bytes_total()) {
1090+ return qemu_get_ram_ptr(ret + 973+ return qemu_get_ram_ptr(ret +
1091+ (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1))); 974+ (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1)));
1092+ } else { 975+ } else {
@@ -1095,7 +978,7 @@ Index: qemu-0.12.4/target-i386/helper_opengl.c
1095+ TARGET_FMT_lx "\n", addr, ret); 978+ TARGET_FMT_lx "\n", addr, ret);
1096+ fprintf(stderr, 979+ fprintf(stderr,
1097+ "ret=" TARGET_FMT_lx " last_ram_offset= " TARGET_FMT_lx 980+ "ret=" TARGET_FMT_lx " last_ram_offset= " TARGET_FMT_lx
1098+ "\n", ret, (target_ulong) last_ram_offset); 981+ "\n", ret, (target_ulong) ram_bytes_total());
1099+ return NULL; 982+ return NULL;
1100+ } 983+ }
1101+ } 984+ }
@@ -2201,19 +2084,19 @@ Index: qemu-0.12.4/target-i386/helper_opengl.c
2201+ 2084+
2202+ allow_kernel = 0; 2085+ allow_kernel = 0;
2203+ if (kvm_enabled()) 2086+ if (kvm_enabled())
2204+ kvm_arch_put_registers(env); 2087+ kvm_arch_put_registers(env, KVM_PUT_RUNTIME_STATE);
2205+ 2088+
2206+ printf("Granted OpenGL access to process '%s'\n", name); 2089+ printf("Granted OpenGL access to process '%s'\n", name);
2207+ 2090+
2208+ io_register(); 2091+ io_register();
2209+} 2092+}
2210+#endif 2093+#endif
2211Index: qemu-0.12.4/target-i386/kvm.c 2094Index: qemu-0.13.0/target-i386/kvm.c
2212=================================================================== 2095===================================================================
2213--- qemu-0.12.4.orig/target-i386/kvm.c 2096--- qemu-0.13.0.orig/target-i386/kvm.c 2011-01-17 16:41:59.000000000 +0800
2214+++ qemu-0.12.4/target-i386/kvm.c 2097+++ qemu-0.13.0/target-i386/kvm.c 2011-01-17 16:42:36.000000000 +0800
2215@@ -529,7 +529,7 @@ static int kvm_get_fpu(CPUState *env) 2098@@ -746,7 +746,7 @@
2216 return 0; 2099 #endif
2217 } 2100 }
2218 2101
2219-static int kvm_get_sregs(CPUState *env) 2102-static int kvm_get_sregs(CPUState *env)
@@ -2221,10 +2104,10 @@ Index: qemu-0.12.4/target-i386/kvm.c
2221 { 2104 {
2222 struct kvm_sregs sregs; 2105 struct kvm_sregs sregs;
2223 uint32_t hflags; 2106 uint32_t hflags;
2224Index: qemu-0.12.4/target-i386/mesa_enums.c 2107Index: qemu-0.13.0/target-i386/mesa_enums.c
2225=================================================================== 2108===================================================================
2226--- /dev/null 2109--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2227+++ qemu-0.12.4/target-i386/mesa_enums.c 2110+++ qemu-0.13.0/target-i386/mesa_enums.c 2011-01-17 16:42:36.000000000 +0800
2228@@ -0,0 +1,4890 @@ 2111@@ -0,0 +1,4890 @@
2229+/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */ 2112+/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */
2230+ 2113+
@@ -7116,10 +6999,10 @@ Index: qemu-0.12.4/target-i386/mesa_enums.c
7116+} 6999+}
7117+ 7000+
7118+ 7001+
7119Index: qemu-0.12.4/target-i386/mesa_get.c 7002Index: qemu-0.13.0/target-i386/mesa_get.c
7120=================================================================== 7003===================================================================
7121--- /dev/null 7004--- /dev/null 1970-01-01 00:00:00.000000000 +0000
7122+++ qemu-0.12.4/target-i386/mesa_get.c 7005+++ qemu-0.13.0/target-i386/mesa_get.c 2011-01-17 16:42:36.000000000 +0800
7123@@ -0,0 +1,5563 @@ 7006@@ -0,0 +1,5563 @@
7124+ 7007+
7125+/*** 7008+/***
@@ -12684,10 +12567,10 @@ Index: qemu-0.12.4/target-i386/mesa_get.c
12684+ params[i] = (GLdouble) values[i]; 12567+ params[i] = (GLdouble) values[i];
12685+} 12568+}
12686+ 12569+
12687Index: qemu-0.12.4/target-i386/mesa_gl.h 12570Index: qemu-0.13.0/target-i386/mesa_gl.h
12688=================================================================== 12571===================================================================
12689--- /dev/null 12572--- /dev/null 1970-01-01 00:00:00.000000000 +0000
12690+++ qemu-0.12.4/target-i386/mesa_gl.h 12573+++ qemu-0.13.0/target-i386/mesa_gl.h 2011-01-17 16:42:36.000000000 +0800
12691@@ -0,0 +1,2251 @@ 12574@@ -0,0 +1,2251 @@
12692+/* 12575+/*
12693+ * Mesa 3-D graphics library 12576+ * Mesa 3-D graphics library
@@ -14940,10 +14823,10 @@ Index: qemu-0.12.4/target-i386/mesa_gl.h
14940+#endif 14823+#endif
14941+ 14824+
14942+#endif /* __gl_h_ */ 14825+#endif /* __gl_h_ */
14943Index: qemu-0.12.4/target-i386/mesa_glext.h 14826Index: qemu-0.13.0/target-i386/mesa_glext.h
14944=================================================================== 14827===================================================================
14945--- /dev/null 14828--- /dev/null 1970-01-01 00:00:00.000000000 +0000
14946+++ qemu-0.12.4/target-i386/mesa_glext.h 14829+++ qemu-0.13.0/target-i386/mesa_glext.h 2011-01-17 16:42:36.000000000 +0800
14947@@ -0,0 +1,7279 @@ 14830@@ -0,0 +1,7279 @@
14948+#ifndef __glext_h_ 14831+#ifndef __glext_h_
14949+#define __glext_h_ 14832+#define __glext_h_
@@ -22224,10 +22107,10 @@ Index: qemu-0.12.4/target-i386/mesa_glext.h
22224+ 22107+
22225+/* ERO */ 22108+/* ERO */
22226+GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data); 22109+GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data);
22227Index: qemu-0.12.4/target-i386/mesa_glu.h 22110Index: qemu-0.13.0/target-i386/mesa_glu.h
22228=================================================================== 22111===================================================================
22229--- /dev/null 22112--- /dev/null 1970-01-01 00:00:00.000000000 +0000
22230+++ qemu-0.12.4/target-i386/mesa_glu.h 22113+++ qemu-0.13.0/target-i386/mesa_glu.h 2011-01-17 16:42:36.000000000 +0800
22231@@ -0,0 +1,354 @@ 22114@@ -0,0 +1,354 @@
22232+/* 22115+/*
22233+** License Applicability. Except to the extent portions of this file are 22116+** License Applicability. Except to the extent portions of this file are
@@ -22583,10 +22466,10 @@ Index: qemu-0.12.4/target-i386/mesa_glu.h
22583+#endif 22466+#endif
22584+ 22467+
22585+#endif /* __glu_h__ */ 22468+#endif /* __glu_h__ */
22586Index: qemu-0.12.4/target-i386/mesa_glx.h 22469Index: qemu-0.13.0/target-i386/mesa_glx.h
22587=================================================================== 22470===================================================================
22588--- /dev/null 22471--- /dev/null 1970-01-01 00:00:00.000000000 +0000
22589+++ qemu-0.12.4/target-i386/mesa_glx.h 22472+++ qemu-0.13.0/target-i386/mesa_glx.h 2011-01-17 16:42:36.000000000 +0800
22590@@ -0,0 +1,510 @@ 22473@@ -0,0 +1,510 @@
22591+/* 22474+/*
22592+ * Mesa 3-D graphics library 22475+ * Mesa 3-D graphics library
@@ -23098,10 +22981,10 @@ Index: qemu-0.12.4/target-i386/mesa_glx.h
23098+#endif 22981+#endif
23099+ 22982+
23100+#endif 22983+#endif
23101Index: qemu-0.12.4/target-i386/mesa_glxext.h 22984Index: qemu-0.13.0/target-i386/mesa_glxext.h
23102=================================================================== 22985===================================================================
23103--- /dev/null 22986--- /dev/null 1970-01-01 00:00:00.000000000 +0000
23104+++ qemu-0.12.4/target-i386/mesa_glxext.h 22987+++ qemu-0.13.0/target-i386/mesa_glxext.h 2011-01-17 16:42:36.000000000 +0800
23105@@ -0,0 +1,785 @@ 22988@@ -0,0 +1,785 @@
23106+#ifndef __glxext_h_ 22989+#ifndef __glxext_h_
23107+#define __glxext_h_ 22990+#define __glxext_h_
@@ -23888,10 +23771,10 @@ Index: qemu-0.12.4/target-i386/mesa_glxext.h
23888+#endif 23771+#endif
23889+ 23772+
23890+#endif 23773+#endif
23891Index: qemu-0.12.4/target-i386/mesa_mipmap.c 23774Index: qemu-0.13.0/target-i386/mesa_mipmap.c
23892=================================================================== 23775===================================================================
23893--- /dev/null 23776--- /dev/null 1970-01-01 00:00:00.000000000 +0000
23894+++ qemu-0.12.4/target-i386/mesa_mipmap.c 23777+++ qemu-0.13.0/target-i386/mesa_mipmap.c 2011-01-17 16:42:36.000000000 +0800
23895@@ -0,0 +1,824 @@ 23778@@ -0,0 +1,824 @@
23896+ 23779+
23897+/* 23780+/*
@@ -24717,10 +24600,10 @@ Index: qemu-0.12.4/target-i386/mesa_mipmap.c
24717+ 24600+
24718+ return retval; 24601+ return retval;
24719+} 24602+}
24720Index: qemu-0.12.4/target-i386/opengl_exec.c 24603Index: qemu-0.13.0/target-i386/opengl_exec.c
24721=================================================================== 24604===================================================================
24722--- /dev/null 24605--- /dev/null 1970-01-01 00:00:00.000000000 +0000
24723+++ qemu-0.12.4/target-i386/opengl_exec.c 24606+++ qemu-0.13.0/target-i386/opengl_exec.c 2011-01-17 16:42:36.000000000 +0800
24724@@ -0,0 +1,3931 @@ 24607@@ -0,0 +1,3931 @@
24725+/* 24608+/*
24726+ * Host-side implementation of GL/GLX API 24609+ * Host-side implementation of GL/GLX API
@@ -28653,10 +28536,10 @@ Index: qemu-0.12.4/target-i386/opengl_exec.c
28653+ 28536+
28654+ return ret_int; 28537+ return ret_int;
28655+} 28538+}
28656Index: qemu-0.12.4/target-i386/opengl_func.h 28539Index: qemu-0.13.0/target-i386/opengl_func.h
28657=================================================================== 28540===================================================================
28658--- /dev/null 28541--- /dev/null 1970-01-01 00:00:00.000000000 +0000
28659+++ qemu-0.12.4/target-i386/opengl_func.h 28542+++ qemu-0.13.0/target-i386/opengl_func.h 2011-01-17 16:42:36.000000000 +0800
28660@@ -0,0 +1,1108 @@ 28543@@ -0,0 +1,1108 @@
28661+/* 28544+/*
28662+ * Main header for both host and guest sides 28545+ * Main header for both host and guest sides
@@ -29766,10 +29649,10 @@ Index: qemu-0.12.4/target-i386/opengl_func.h
29766+#error Unsupported ABI 29649+#error Unsupported ABI
29767+#endif 29650+#endif
29768+#endif 29651+#endif
29769Index: qemu-0.12.4/target-i386/opengl_player.c 29652Index: qemu-0.13.0/target-i386/opengl_player.c
29770=================================================================== 29653===================================================================
29771--- /dev/null 29654--- /dev/null 1970-01-01 00:00:00.000000000 +0000
29772+++ qemu-0.12.4/target-i386/opengl_player.c 29655+++ qemu-0.13.0/target-i386/opengl_player.c 2011-01-17 16:42:36.000000000 +0800
29773@@ -0,0 +1,1461 @@ 29656@@ -0,0 +1,1461 @@
29774+/* 29657+/*
29775+ * Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server 29658+ * Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server
@@ -31232,10 +31115,10 @@ Index: qemu-0.12.4/target-i386/opengl_player.c
31232+ } 31115+ }
31233+ return 0; 31116+ return 0;
31234+} 31117+}
31235Index: qemu-0.12.4/target-i386/opengl_server.c 31118Index: qemu-0.13.0/target-i386/opengl_server.c
31236=================================================================== 31119===================================================================
31237--- /dev/null 31120--- /dev/null 1970-01-01 00:00:00.000000000 +0000
31238+++ qemu-0.12.4/target-i386/opengl_server.c 31121+++ qemu-0.13.0/target-i386/opengl_server.c 2011-01-17 16:42:36.000000000 +0800
31239@@ -0,0 +1,826 @@ 31122@@ -0,0 +1,826 @@
31240+/* 31123+/*
31241+ * TCP/IP OpenGL server 31124+ * TCP/IP OpenGL server
@@ -32063,10 +31946,10 @@ Index: qemu-0.12.4/target-i386/opengl_server.c
32063+ 31946+
32064+ return 0; 31947+ return 0;
32065+} 31948+}
32066Index: qemu-0.12.4/target-i386/opengl_utils.h 31949Index: qemu-0.13.0/target-i386/opengl_utils.h
32067=================================================================== 31950===================================================================
32068--- /dev/null 31951--- /dev/null 1970-01-01 00:00:00.000000000 +0000
32069+++ qemu-0.12.4/target-i386/opengl_utils.h 31952+++ qemu-0.13.0/target-i386/opengl_utils.h 2011-01-17 16:42:36.000000000 +0800
32070@@ -0,0 +1,453 @@ 31953@@ -0,0 +1,453 @@
32071+/* 31954+/*
32072+ * Functions used by host & client sides 31955+ * Functions used by host & client sides
@@ -32521,10 +32404,10 @@ Index: qemu-0.12.4/target-i386/opengl_utils.h
32521+} 32404+}
32522+ 32405+
32523+#endif 32406+#endif
32524Index: qemu-0.12.4/target-i386/parse_gl_h.c 32407Index: qemu-0.13.0/target-i386/parse_gl_h.c
32525=================================================================== 32408===================================================================
32526--- /dev/null 32409--- /dev/null 1970-01-01 00:00:00.000000000 +0000
32527+++ qemu-0.12.4/target-i386/parse_gl_h.c 32410+++ qemu-0.13.0/target-i386/parse_gl_h.c 2011-01-17 16:42:36.000000000 +0800
32528@@ -0,0 +1,1496 @@ 32411@@ -0,0 +1,1496 @@
32529+/* 32412+/*
32530+ * Parse gl.h et glx.h to auto-generate source code 32413+ * Parse gl.h et glx.h to auto-generate source code
@@ -34022,10 +33905,10 @@ Index: qemu-0.12.4/target-i386/parse_gl_h.c
34022+ 33905+
34023+ return 0; 33906+ return 0;
34024+} 33907+}
34025Index: qemu-0.12.4/target-i386/parse_mesa_get_c.c 33908Index: qemu-0.13.0/target-i386/parse_mesa_get_c.c
34026=================================================================== 33909===================================================================
34027--- /dev/null 33910--- /dev/null 1970-01-01 00:00:00.000000000 +0000
34028+++ qemu-0.12.4/target-i386/parse_mesa_get_c.c 33911+++ qemu-0.13.0/target-i386/parse_mesa_get_c.c 2011-01-17 16:42:36.000000000 +0800
34029@@ -0,0 +1,225 @@ 33912@@ -0,0 +1,225 @@
34030+/* 33913+/*
34031+ * Parse the "get.c" from mesa source tree to generate "glgetv_cst.h" 33914+ * Parse the "get.c" from mesa source tree to generate "glgetv_cst.h"
@@ -34252,11 +34135,11 @@ Index: qemu-0.12.4/target-i386/parse_mesa_get_c.c
34252+ fclose(outf); 34135+ fclose(outf);
34253+ return 0; 34136+ return 0;
34254+} 34137+}
34255Index: qemu-0.12.4/target-i386/translate.c 34138Index: qemu-0.13.0/target-i386/translate.c
34256=================================================================== 34139===================================================================
34257--- qemu-0.12.4.orig/target-i386/translate.c 34140--- qemu-0.13.0.orig/target-i386/translate.c 2011-01-17 16:41:59.000000000 +0800
34258+++ qemu-0.12.4/target-i386/translate.c 34141+++ qemu-0.13.0/target-i386/translate.c 2011-01-17 16:42:36.000000000 +0800
34259@@ -743,6 +743,8 @@ static void gen_check_io(DisasContext *s 34142@@ -745,6 +745,8 @@
34260 int state_saved; 34143 int state_saved;
34261 target_ulong next_eip; 34144 target_ulong next_eip;
34262 34145
@@ -34265,8 +34148,8 @@ Index: qemu-0.12.4/target-i386/translate.c
34265 state_saved = 0; 34148 state_saved = 0;
34266 if (s->pe && (s->cpl > s->iopl || s->vm86)) { 34149 if (s->pe && (s->cpl > s->iopl || s->vm86)) {
34267 if (s->cc_op != CC_OP_DYNAMIC) 34150 if (s->cc_op != CC_OP_DYNAMIC)
34268@@ -2676,11 +2678,18 @@ static void gen_exception(DisasContext * 34151@@ -2672,11 +2674,18 @@
34269 s->is_jmp = 3; 34152 s->is_jmp = DISAS_TB_JUMP;
34270 } 34153 }
34271 34154
34272+int enable_gl = 0; 34155+int enable_gl = 0;
@@ -34284,27 +34167,26 @@ Index: qemu-0.12.4/target-i386/translate.c
34284 if (s->cc_op != CC_OP_DYNAMIC) 34167 if (s->cc_op != CC_OP_DYNAMIC)
34285 gen_op_set_cc_op(s->cc_op); 34168 gen_op_set_cc_op(s->cc_op);
34286 gen_jmp_im(cur_eip); 34169 gen_jmp_im(cur_eip);
34287Index: qemu-0.12.4/vl.c 34170Index: qemu-0.13.0/vl.c
34288=================================================================== 34171===================================================================
34289--- qemu-0.12.4.orig/vl.c 34172--- qemu-0.13.0.orig/vl.c 2011-01-17 16:41:59.000000000 +0800
34290+++ qemu-0.12.4/vl.c 34173+++ qemu-0.13.0/vl.c 2011-01-17 16:42:36.000000000 +0800
34291@@ -238,6 +238,7 @@ int semihosting_enabled = 0; 34174@@ -217,12 +217,14 @@
34292 #ifdef TARGET_ARM 34175 int nb_option_roms;
34176 int semihosting_enabled = 0;
34293 int old_param = 0; 34177 int old_param = 0;
34294 #endif
34295+int force_pointer = 0; 34178+int force_pointer = 0;
34296 const char *qemu_name; 34179 const char *qemu_name;
34297 int alt_grab = 0; 34180 int alt_grab = 0;
34298 int ctrl_grab = 0; 34181 int ctrl_grab = 0;
34299@@ -246,6 +247,7 @@ unsigned int nb_prom_envs = 0; 34182 unsigned int nb_prom_envs = 0;
34300 const char *prom_envs[MAX_PROM_ENVS]; 34183 const char *prom_envs[MAX_PROM_ENVS];
34301 #endif
34302 int boot_menu; 34184 int boot_menu;
34303+extern int enable_gl; 34185+extern int enable_gl;
34304 34186
34305 int nb_numa_nodes; 34187 int nb_numa_nodes;
34306 uint64_t node_mem[MAX_NODES]; 34188 uint64_t node_mem[MAX_NODES];
34307@@ -4432,6 +4434,8 @@ static void select_vgahw (const char *p) 34189@@ -1433,6 +1435,8 @@
34308 } else if (strstart(p, "xenfb", &opts)) { 34190 } else if (strstart(p, "xenfb", &opts)) {
34309 vga_interface_type = VGA_XENFB; 34191 vga_interface_type = VGA_XENFB;
34310 } else if (!strstart(p, "none", &opts)) { 34192 } else if (!strstart(p, "none", &opts)) {
@@ -34313,17 +34195,17 @@ Index: qemu-0.12.4/vl.c
34313 invalid_vga: 34195 invalid_vga:
34314 fprintf(stderr, "Unknown vga type: %s\n", p); 34196 fprintf(stderr, "Unknown vga type: %s\n", p);
34315 exit(1); 34197 exit(1);
34316@@ -5563,6 +5567,9 @@ int main(int argc, char **argv, char **e 34198@@ -2535,6 +2539,9 @@
34199 case QEMU_OPTION_old_param:
34317 old_param = 1; 34200 old_param = 1;
34318 break; 34201 break;
34319 #endif
34320+ case QEMU_OPTION_force_pointer: 34202+ case QEMU_OPTION_force_pointer:
34321+ force_pointer = 1; 34203+ force_pointer = 1;
34322+ break; 34204+ break;
34323 case QEMU_OPTION_clock: 34205 case QEMU_OPTION_clock:
34324 configure_alarms(optarg); 34206 configure_alarms(optarg);
34325 break; 34207 break;
34326@@ -5577,6 +5584,12 @@ int main(int argc, char **argv, char **e 34208@@ -2548,6 +2555,12 @@
34327 } 34209 }
34328 configure_rtc(opts); 34210 configure_rtc(opts);
34329 break; 34211 break;
@@ -34336,9 +34218,9 @@ Index: qemu-0.12.4/vl.c
34336 case QEMU_OPTION_tb_size: 34218 case QEMU_OPTION_tb_size:
34337 tb_size = strtol(optarg, NULL, 0); 34219 tb_size = strtol(optarg, NULL, 0);
34338 if (tb_size < 0) 34220 if (tb_size < 0)
34339@@ -5933,6 +5946,14 @@ int main(int argc, char **argv, char **e 34221@@ -2887,6 +2900,14 @@
34340 } 34222 if (foreach_device_config(DEV_USB, usb_parse) < 0)
34341 } 34223 exit(1);
34342 } 34224 }
34343+#ifdef TARGET_OPENGL_OK 34225+#ifdef TARGET_OPENGL_OK
34344+ if (enable_gl) { 34226+ if (enable_gl) {
@@ -34349,24 +34231,24 @@ Index: qemu-0.12.4/vl.c
34349+ } 34231+ }
34350+#endif 34232+#endif
34351 34233
34352 if (foreach_device_config(DEV_SERIAL, serial_parse) < 0) 34234 /* init generic devices */
34353 exit(1); 34235 if (qemu_opts_foreach(&qemu_device_opts, device_init_func, NULL, 1) != 0)
34354Index: qemu-0.12.4/qemu-options.hx 34236Index: qemu-0.13.0/qemu-options.hx
34355=================================================================== 34237===================================================================
34356--- qemu-0.12.4.orig/qemu-options.hx 34238--- qemu-0.13.0.orig/qemu-options.hx 2011-01-17 16:41:59.000000000 +0800
34357+++ qemu-0.12.4/qemu-options.hx 34239+++ qemu-0.13.0/qemu-options.hx 2011-01-17 16:44:27.000000000 +0800
34358@@ -1789,6 +1789,18 @@ many timer interrupts were not processed 34240@@ -2024,6 +2024,18 @@
34359 re-inject them. 34241 re-inject them.
34360 ETEXI 34242 ETEXI
34361 34243
34362+DEF("enable-gl", 0, QEMU_OPTION_enable_gl, \ 34244+DEF("enable-gl", 0, QEMU_OPTION_enable_gl, \
34363+ "-enable-gl\n") 34245+ "-enable-gl\n", QEMU_ARCH_I386)
34364+STEXI 34246+STEXI
34365+@item -enable-gl 34247+@item -enable-gl
34366+ETEXI 34248+ETEXI
34367+ 34249+
34368+DEF("force-pointer", 0, QEMU_OPTION_force_pointer, \ 34250+DEF("force-pointer", 0, QEMU_OPTION_force_pointer, \
34369+ "-force-pointer\n") 34251+ "-force-pointer\n", QEMU_ARCH_ALL)
34370+STEXI 34252+STEXI
34371+@item -force-pointer 34253+@item -force-pointer
34372+ETEXI 34254+ETEXI
@@ -34374,3 +34256,109 @@ Index: qemu-0.12.4/qemu-options.hx
34374 DEF("icount", HAS_ARG, QEMU_OPTION_icount, \ 34256 DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
34375 "-icount [N|auto]\n" \ 34257 "-icount [N|auto]\n" \
34376 " enable virtual instruction counter with 2^N clock ticks per\n" \ 34258 " enable virtual instruction counter with 2^N clock ticks per\n" \
34259Index: qemu-0.13.0/ui/sdl.c
34260===================================================================
34261--- qemu-0.13.0.orig/ui/sdl.c 2011-01-17 16:41:59.000000000 +0800
34262+++ qemu-0.13.0/ui/sdl.c 2011-01-17 16:42:36.000000000 +0800
34263@@ -59,6 +59,8 @@
34264 static int scaling_active = 0;
34265 static Notifier mouse_mode_notifier;
34266
34267+extern void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window);
34268+
34269 static void sdl_update(DisplayState *ds, int x, int y, int w, int h)
34270 {
34271 // printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
34272@@ -121,12 +123,22 @@
34273
34274 static void sdl_resize(DisplayState *ds)
34275 {
34276- if (!allocator) {
34277+ SDL_SysWMinfo info;
34278+ static Display *dpy;
34279+
34280+ if (!allocator) {
34281 if (!scaling_active)
34282 do_sdl_resize(ds_get_width(ds), ds_get_height(ds), 0);
34283 else if (real_screen->format->BitsPerPixel != ds_get_bits_per_pixel(ds))
34284 do_sdl_resize(real_screen->w, real_screen->h, ds_get_bits_per_pixel(ds));
34285 sdl_setdata(ds);
34286+
34287+ SDL_GetWMInfo(&info);
34288+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display &&
34289+ (!dpy || dpy == info.info.x11.display)) {
34290+ dpy = info.info.x11.display;
34291+ opengl_exec_set_parent_window(dpy, info.info.x11.window);
34292+ }
34293 } else {
34294 if (guest_screen != NULL) {
34295 SDL_FreeSurface(guest_screen);
34296@@ -455,7 +467,7 @@
34297
34298 if (!kbd_mouse_is_absolute()) {
34299 SDL_ShowCursor(1);
34300- if (guest_cursor &&
34301+ if (guest_cursor && !force_pointer &&
34302 (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
34303 SDL_SetCursor(guest_sprite);
34304 else
34305@@ -466,7 +478,8 @@
34306 static void sdl_grab_start(void)
34307 {
34308 if (guest_cursor) {
34309- SDL_SetCursor(guest_sprite);
34310+ if (!force_pointer)
34311+ SDL_SetCursor(guest_sprite);
34312 if (!kbd_mouse_is_absolute() && !absolute_enabled)
34313 SDL_WarpMouse(guest_x, guest_y);
34314 } else
34315@@ -768,7 +781,8 @@
34316 if (!guest_cursor)
34317 sdl_show_cursor();
34318 if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) {
34319- SDL_SetCursor(guest_sprite);
34320+ if (!force_pointer)
34321+ SDL_SetCursor(guest_sprite);
34322 if (!kbd_mouse_is_absolute() && !absolute_enabled)
34323 SDL_WarpMouse(x, y);
34324 }
34325@@ -796,7 +810,7 @@
34326 qemu_free(image);
34327 qemu_free(mask);
34328
34329- if (guest_cursor &&
34330+ if (guest_cursor && !force_pointer &&
34331 (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
34332 SDL_SetCursor(guest_sprite);
34333 }
34334@@ -813,6 +827,7 @@
34335 int flags;
34336 uint8_t data = 0;
34337 DisplayAllocator *da;
34338+ SDL_SysWMinfo info;
34339 const SDL_VideoInfo *vi;
34340
34341 #if defined(__APPLE__)
34342@@ -842,6 +857,12 @@
34343 vi = SDL_GetVideoInfo();
34344 host_format = *(vi->vfmt);
34345
34346+ SDL_GetWMInfo(&info);
34347+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
34348+ opengl_exec_set_parent_window(info.info.x11.display,
34349+ RootWindow(info.info.x11.display,
34350+ DefaultScreen(info.info.x11.display)));
34351+
34352 dcl = qemu_mallocz(sizeof(DisplayChangeListener));
34353 dcl->dpy_update = sdl_update;
34354 dcl->dpy_resize = sdl_resize;
34355@@ -876,4 +897,9 @@
34356 gui_fullscreen_initial_grab = 1;
34357 sdl_grab_start();
34358 }
34359+
34360+ SDL_GetWMInfo(&info);
34361+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
34362+ opengl_exec_set_parent_window(info.info.x11.display,
34363+ info.info.x11.window);
34364 }
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch
new file mode 100644
index 0000000000..6f45788183
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch
@@ -0,0 +1,108 @@
1Quick fixes to get the ppc system model to boot a 603e based
2kernel.
3
4Index: qemu-0.13.0/hw/m48t59.c
5===================================================================
6--- qemu-0.13.0.orig/hw/m48t59.c 2010-10-16 04:56:09.000000000 +0800
7+++ qemu-0.13.0/hw/m48t59.c 2011-01-17 16:40:09.000000000 +0800
8@@ -50,6 +50,7 @@
9 */
10
11 struct M48t59State {
12+ SysBusDevice busdev;
13 /* Model parameters */
14 uint32_t type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
15 /* Hardware parameters */
16@@ -74,11 +75,6 @@
17 M48t59State state;
18 } M48t59ISAState;
19
20-typedef struct M48t59SysBusState {
21- SysBusDevice busdev;
22- M48t59State state;
23-} M48t59SysBusState;
24-
25 /* Fake timer functions */
26
27 /* Alarm management */
28@@ -629,8 +625,7 @@
29
30 static void m48t59_reset_sysbus(DeviceState *d)
31 {
32- M48t59SysBusState *sys = container_of(d, M48t59SysBusState, busdev.qdev);
33- M48t59State *NVRAM = &sys->state;
34+ M48t59State *NVRAM = container_of(d, M48t59State, busdev.qdev);
35
36 m48t59_reset_common(NVRAM);
37 }
38@@ -641,7 +636,7 @@
39 {
40 DeviceState *dev;
41 SysBusDevice *s;
42- M48t59SysBusState *d;
43+ M48t59State *d;
44
45 dev = qdev_create(NULL, "m48t59");
46 qdev_prop_set_uint32(dev, "type", type);
47@@ -658,9 +653,9 @@
48 sysbus_mmio_map(s, 0, mem_base);
49 }
50
51- d = FROM_SYSBUS(M48t59SysBusState, s);
52+ d = FROM_SYSBUS(M48t59State, s);
53
54- return &d->state;
55+ return d;
56 }
57
58 M48t59State *m48t59_init_isa(uint32_t io_base, uint16_t size, int type)
59@@ -710,8 +705,7 @@
60
61 static int m48t59_init1(SysBusDevice *dev)
62 {
63- M48t59SysBusState *d = FROM_SYSBUS(M48t59SysBusState, dev);
64- M48t59State *s = &d->state;
65+ M48t59State *s = FROM_SYSBUS(M48t59State, dev);
66 int mem_index;
67
68 sysbus_init_irq(dev, &s->IRQ);
69@@ -740,12 +734,12 @@
70 static SysBusDeviceInfo m48t59_info = {
71 .init = m48t59_init1,
72 .qdev.name = "m48t59",
73- .qdev.size = sizeof(M48t59SysBusState),
74+ .qdev.size = sizeof(M48t59State),
75 .qdev.reset = m48t59_reset_sysbus,
76 .qdev.props = (Property[]) {
77- DEFINE_PROP_UINT32("size", M48t59SysBusState, state.size, -1),
78- DEFINE_PROP_UINT32("type", M48t59SysBusState, state.type, -1),
79- DEFINE_PROP_HEX32( "io_base", M48t59SysBusState, state.io_base, 0),
80+ DEFINE_PROP_UINT32("size", M48t59State, size, -1),
81+ DEFINE_PROP_UINT32("type", M48t59State, type, -1),
82+ DEFINE_PROP_HEX32( "io_base", M48t59State, io_base, 0),
83 DEFINE_PROP_END_OF_LIST(),
84 }
85 };
86Index: qemu-0.13.0/hw/ppc_prep.c
87===================================================================
88--- qemu-0.13.0.orig/hw/ppc_prep.c 2010-10-16 04:56:09.000000000 +0800
89+++ qemu-0.13.0/hw/ppc_prep.c 2011-01-15 18:29:25.000000000 +0800
90@@ -74,7 +74,7 @@
91 /* Constants for devices init */
92 static const int ide_iobase[2] = { 0x1f0, 0x170 };
93 static const int ide_iobase2[2] = { 0x3f6, 0x376 };
94-static const int ide_irq[2] = { 13, 13 };
95+static const int ide_irq[2] = { 13, 14 };
96
97 #define NE2000_NB_MAX 6
98
99@@ -631,9 +631,6 @@
100 if (filename) {
101 qemu_free(filename);
102 }
103- if (env->nip < 0xFFF80000 && bios_size < 0x00100000) {
104- hw_error("PowerPC 601 / 620 / 970 need a 1MB BIOS\n");
105- }
106
107 if (linux_boot) {
108 kernel_base = KERNEL_LOAD_ADDR;
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-vmware-vga-depth.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-vmware-vga-depth.patch
index 43071868f3..5bdbaf3937 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-vmware-vga-depth.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-vmware-vga-depth.patch
@@ -1,11 +1,11 @@
1# fix VMware VGA driver depth calculation error, which may cause segmentation fault 1# fix VMware VGA driver depth calculation error, which may cause segmentation fault
2# 2#
3# ktian1, 06/29/2010 3# ktian1, 06/29/2010
4diff --git a/console.h b/console.h 4Index: qemu-0.13.0/console.h
5index dfc8ae4..05fbf17 100644 5===================================================================
6--- a/console.h 6--- qemu-0.13.0.orig/console.h 2011-01-17 16:41:58.000000000 +0800
7+++ b/console.h 7+++ qemu-0.13.0/console.h 2011-01-17 16:48:00.000000000 +0800
8@@ -122,6 +122,12 @@ struct DisplayAllocator { 8@@ -171,6 +171,12 @@
9 void (*free_displaysurface)(DisplaySurface *surface); 9 void (*free_displaysurface)(DisplaySurface *surface);
10 }; 10 };
11 11
@@ -18,15 +18,15 @@ index dfc8ae4..05fbf17 100644
18 struct DisplayState { 18 struct DisplayState {
19 struct DisplaySurface *surface; 19 struct DisplaySurface *surface;
20 void *opaque; 20 void *opaque;
21@@ -129,6 +135,7 @@ struct DisplayState { 21@@ -178,6 +184,7 @@
22 22
23 struct DisplayAllocator* allocator; 23 struct DisplayAllocator* allocator;
24 struct DisplayChangeListener* listeners; 24 struct DisplayChangeListener* listeners;
25+ struct DisplayPostCallback* postcalls; 25+ struct DisplayPostCallback* postcalls;
26 26
27 void (*mouse_set)(int x, int y, int on); 27 void (*mouse_set)(int x, int y, int on);
28 void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y, 28 void (*cursor_define)(QEMUCursor *cursor);
29@@ -185,6 +192,12 @@ static inline void register_displaychangelistener(DisplayState *ds, DisplayChang 29@@ -229,6 +236,12 @@
30 ds->listeners = dcl; 30 ds->listeners = dcl;
31 } 31 }
32 32
@@ -39,11 +39,11 @@ index dfc8ae4..05fbf17 100644
39 static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) 39 static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
40 { 40 {
41 struct DisplayChangeListener *dcl = s->listeners; 41 struct DisplayChangeListener *dcl = s->listeners;
42diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c 42Index: qemu-0.13.0/hw/vmware_vga.c
43index 01bb85b..d73cca6 100644 43===================================================================
44--- a/hw/vmware_vga.c 44--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-17 16:42:36.000000000 +0800
45+++ b/hw/vmware_vga.c 45+++ qemu-0.13.0/hw/vmware_vga.c 2011-01-17 16:48:00.000000000 +0800
46@@ -927,8 +927,9 @@ static void vmsvga_update_display(void *opaque) 46@@ -957,8 +957,9 @@
47 } 47 }
48 } 48 }
49 49
@@ -54,7 +54,7 @@ index 01bb85b..d73cca6 100644
54 s->index = 0; 54 s->index = 0;
55 s->enable = 0; 55 s->enable = 0;
56 s->config = 0; 56 s->config = 0;
57@@ -1133,6 +1134,8 @@ static const VMStateDescription vmstate_vmware_vga = { 57@@ -1163,6 +1164,8 @@
58 58
59 static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size) 59 static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
60 { 60 {
@@ -63,7 +63,7 @@ index 01bb85b..d73cca6 100644
63 s->scratch_size = SVGA_SCRATCH_SIZE; 63 s->scratch_size = SVGA_SCRATCH_SIZE;
64 s->scratch = qemu_malloc(s->scratch_size * 4); 64 s->scratch = qemu_malloc(s->scratch_size * 4);
65 65
66@@ -1160,7 +1163,10 @@ static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size) 66@@ -1190,7 +1193,10 @@
67 67
68 rom_add_vga(VGABIOS_FILENAME); 68 rom_add_vga(VGABIOS_FILENAME);
69 69
@@ -75,11 +75,11 @@ index 01bb85b..d73cca6 100644
75 } 75 }
76 76
77 static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num, 77 static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num,
78diff --git a/qemu-common.h b/qemu-common.h 78Index: qemu-0.13.0/qemu-common.h
79index a23afbc..19f107a 100644 79===================================================================
80--- a/qemu-common.h 80--- qemu-0.13.0.orig/qemu-common.h 2011-01-17 16:41:58.000000000 +0800
81+++ b/qemu-common.h 81+++ qemu-0.13.0/qemu-common.h 2011-01-17 16:48:00.000000000 +0800
82@@ -198,6 +198,7 @@ typedef struct DisplayState DisplayState; 82@@ -205,6 +205,7 @@
83 typedef struct DisplayChangeListener DisplayChangeListener; 83 typedef struct DisplayChangeListener DisplayChangeListener;
84 typedef struct DisplaySurface DisplaySurface; 84 typedef struct DisplaySurface DisplaySurface;
85 typedef struct DisplayAllocator DisplayAllocator; 85 typedef struct DisplayAllocator DisplayAllocator;
@@ -87,11 +87,11 @@ index a23afbc..19f107a 100644
87 typedef struct PixelFormat PixelFormat; 87 typedef struct PixelFormat PixelFormat;
88 typedef struct TextConsole TextConsole; 88 typedef struct TextConsole TextConsole;
89 typedef TextConsole QEMUConsole; 89 typedef TextConsole QEMUConsole;
90diff --git a/vl.c b/vl.c 90Index: qemu-0.13.0/vl.c
91index 39182ea..9a3e9fd 100644 91===================================================================
92--- a/vl.c 92--- qemu-0.13.0.orig/vl.c 2011-01-17 16:42:36.000000000 +0800
93+++ b/vl.c 93+++ qemu-0.13.0/vl.c 2011-01-17 16:48:00.000000000 +0800
94@@ -4863,6 +4863,7 @@ int main(int argc, char **argv, char **envp) 94@@ -1814,6 +1814,7 @@
95 char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */ 95 char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
96 DisplayState *ds; 96 DisplayState *ds;
97 DisplayChangeListener *dcl; 97 DisplayChangeListener *dcl;
@@ -99,7 +99,7 @@ index 39182ea..9a3e9fd 100644
99 int cyls, heads, secs, translation; 99 int cyls, heads, secs, translation;
100 QemuOpts *hda_opts = NULL, *opts; 100 QemuOpts *hda_opts = NULL, *opts;
101 int optind; 101 int optind;
102@@ -6053,6 +6053,13 @@ int main(int argc, char **argv, char **envp) 102@@ -2960,6 +2961,13 @@
103 } 103 }
104 dpy_resize(ds); 104 dpy_resize(ds);
105 105
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemugl-allow-glxcontext-release.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemugl-allow-glxcontext-release.patch
index 43acc361a0..43acc361a0 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemugl-allow-glxcontext-release.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemugl-allow-glxcontext-release.patch
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/vmware-vga-fifo-rewind.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/vmware-vga-fifo-rewind.patch
index ef92f54c8b..867e54ba11 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/vmware-vga-fifo-rewind.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/vmware-vga-fifo-rewind.patch
@@ -14,11 +14,11 @@ Date: Fri Sep 10 02:23:31 2010 +0200
14 this should be relatively rare but it is suspected to have been the 14 this should be relatively rare but it is suspected to have been the
15 cause of the occasional FIFO overrun that killed the display. 15 cause of the occasional FIFO overrun that killed the display.
16 16
17Index: qemu-0.12.4/hw/vmware_vga.c 17Index: qemu-0.13.0/hw/vmware_vga.c
18=================================================================== 18===================================================================
19--- qemu-0.12.4.orig/hw/vmware_vga.c 2010-09-30 23:04:34.000000000 +0800 19--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-15 18:06:06.000000000 +0800
20+++ qemu-0.12.4/hw/vmware_vga.c 2010-10-01 01:17:02.000000000 +0800 20+++ qemu-0.13.0/hw/vmware_vga.c 2011-01-15 18:17:04.000000000 +0800
21@@ -491,27 +491,37 @@ 21@@ -521,27 +521,37 @@
22 22
23 static uint32_t last_cmd; 23 static uint32_t last_cmd;
24 24
@@ -64,7 +64,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
64 } 64 }
65 65
66 static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s) 66 static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
67@@ -522,13 +532,23 @@ 67@@ -552,13 +562,23 @@
68 static void vmsvga_fifo_run(struct vmsvga_state_s *s) 68 static void vmsvga_fifo_run(struct vmsvga_state_s *s)
69 { 69 {
70 uint32_t colour; 70 uint32_t colour;
@@ -90,7 +90,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
90 x = vmsvga_fifo_read(s); 90 x = vmsvga_fifo_read(s);
91 y = vmsvga_fifo_read(s); 91 y = vmsvga_fifo_read(s);
92 width = vmsvga_fifo_read(s); 92 width = vmsvga_fifo_read(s);
93@@ -537,6 +557,10 @@ 93@@ -567,6 +587,10 @@
94 break; 94 break;
95 95
96 case SVGA_CMD_RECT_FILL: 96 case SVGA_CMD_RECT_FILL:
@@ -101,7 +101,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
101 colour = vmsvga_fifo_read(s); 101 colour = vmsvga_fifo_read(s);
102 x = vmsvga_fifo_read(s); 102 x = vmsvga_fifo_read(s);
103 y = vmsvga_fifo_read(s); 103 y = vmsvga_fifo_read(s);
104@@ -546,10 +570,15 @@ 104@@ -576,10 +600,15 @@
105 vmsvga_fill_rect(s, colour, x, y, width, height); 105 vmsvga_fill_rect(s, colour, x, y, width, height);
106 break; 106 break;
107 #else 107 #else
@@ -117,7 +117,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
117 x = vmsvga_fifo_read(s); 117 x = vmsvga_fifo_read(s);
118 y = vmsvga_fifo_read(s); 118 y = vmsvga_fifo_read(s);
119 dx = vmsvga_fifo_read(s); 119 dx = vmsvga_fifo_read(s);
120@@ -560,10 +589,15 @@ 120@@ -590,10 +619,15 @@
121 vmsvga_copy_rect(s, x, y, dx, dy, width, height); 121 vmsvga_copy_rect(s, x, y, dx, dy, width, height);
122 break; 122 break;
123 #else 123 #else
@@ -133,7 +133,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
133 cursor.id = vmsvga_fifo_read(s); 133 cursor.id = vmsvga_fifo_read(s);
134 cursor.hot_x = vmsvga_fifo_read(s); 134 cursor.hot_x = vmsvga_fifo_read(s);
135 cursor.hot_y = vmsvga_fifo_read(s); 135 cursor.hot_y = vmsvga_fifo_read(s);
136@@ -572,11 +606,14 @@ 136@@ -602,11 +636,14 @@
137 vmsvga_fifo_read(s); 137 vmsvga_fifo_read(s);
138 cursor.bpp = vmsvga_fifo_read(s); 138 cursor.bpp = vmsvga_fifo_read(s);
139 139
@@ -151,7 +151,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
151 151
152 for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++) 152 for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++)
153 cursor.mask[args] = vmsvga_fifo_read_raw(s); 153 cursor.mask[args] = vmsvga_fifo_read_raw(s);
154@@ -595,6 +632,10 @@ 154@@ -625,6 +662,10 @@
155 * for so we can avoid FIFO desync if driver uses them illegally. 155 * for so we can avoid FIFO desync if driver uses them illegally.
156 */ 156 */
157 case SVGA_CMD_DEFINE_ALPHA_CURSOR: 157 case SVGA_CMD_DEFINE_ALPHA_CURSOR:
@@ -162,7 +162,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
162 vmsvga_fifo_read(s); 162 vmsvga_fifo_read(s);
163 vmsvga_fifo_read(s); 163 vmsvga_fifo_read(s);
164 vmsvga_fifo_read(s); 164 vmsvga_fifo_read(s);
165@@ -609,6 +650,10 @@ 165@@ -639,6 +680,10 @@
166 args = 7; 166 args = 7;
167 goto badcmd; 167 goto badcmd;
168 case SVGA_CMD_DRAW_GLYPH_CLIPPED: 168 case SVGA_CMD_DRAW_GLYPH_CLIPPED:
@@ -173,7 +173,7 @@ Index: qemu-0.12.4/hw/vmware_vga.c
173 vmsvga_fifo_read(s); 173 vmsvga_fifo_read(s);
174 vmsvga_fifo_read(s); 174 vmsvga_fifo_read(s);
175 args = 7 + (vmsvga_fifo_read(s) >> 2); 175 args = 7 + (vmsvga_fifo_read(s) >> 2);
176@@ -629,14 +674,22 @@ 176@@ -659,14 +704,22 @@
177 break; /* Nop */ 177 break; /* Nop */
178 178
179 default: 179 default:
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch
new file mode 100644
index 0000000000..b8210db2b1
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch
@@ -0,0 +1,65 @@
1qemu 0.13.0 cause seg fault in qemu_remove_mouse_event_handler, this patch from
2upstream can fix it.
3
4Should remove it in next upgrade if necessary.
5
6Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
7
8commit b2d4d8329963b13c5cebe5944dcc99f0e9d1b5c7
9Author: Gerd Hoffmann <kraxel@redhat.com>
10Date: Fri Oct 8 12:30:14 2010 +0200
11
12 wacom tablet: activate event handlers.
13
14 Add qemu_activate_mouse_event_handler() calls to the usb wavom tablet so
15 it actually receives events. Also make sure we only remove the handler
16 if we registered it before.
17
18 Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
19 Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
20
21Index: qemu-0.13.0/hw/usb-wacom.c
22===================================================================
23--- qemu-0.13.0.orig/hw/usb-wacom.c 2010-10-16 04:56:09.000000000 +0800
24+++ qemu-0.13.0/hw/usb-wacom.c 2011-01-18 16:58:44.000000000 +0800
25@@ -160,6 +160,7 @@
26 if (!s->mouse_grabbed) {
27 s->eh_entry = qemu_add_mouse_event_handler(usb_mouse_event, s, 0,
28 "QEMU PenPartner tablet");
29+ qemu_activate_mouse_event_handler(s->eh_entry);
30 s->mouse_grabbed = 1;
31 }
32
33@@ -197,6 +198,7 @@
34 if (!s->mouse_grabbed) {
35 s->eh_entry = qemu_add_mouse_event_handler(usb_wacom_event, s, 1,
36 "QEMU PenPartner tablet");
37+ qemu_activate_mouse_event_handler(s->eh_entry);
38 s->mouse_grabbed = 1;
39 }
40
41@@ -334,8 +336,10 @@
42 ret = 0;
43 break;
44 case WACOM_SET_REPORT:
45- qemu_remove_mouse_event_handler(s->eh_entry);
46- s->mouse_grabbed = 0;
47+ if (s->mouse_grabbed) {
48+ qemu_remove_mouse_event_handler(s->eh_entry);
49+ s->mouse_grabbed = 0;
50+ }
51 s->mode = data[0];
52 ret = 0;
53 break;
54@@ -397,7 +401,10 @@
55 {
56 USBWacomState *s = (USBWacomState *) dev;
57
58- qemu_remove_mouse_event_handler(s->eh_entry);
59+ if (s->mouse_grabbed) {
60+ qemu_remove_mouse_event_handler(s->eh_entry);
61+ s->mouse_grabbed = 0;
62+ }
63 }
64
65 static int usb_wacom_initfn(USBDevice *dev)
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/workaround_bad_futex_headers.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/workaround_bad_futex_headers.patch
index 7727a39f37..a08e2d9acd 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/workaround_bad_futex_headers.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/workaround_bad_futex_headers.patch
@@ -2,11 +2,11 @@
2 linux-user/syscall.c | 10 +++++++++- 2 linux-user/syscall.c | 10 +++++++++-
3 1 file changed, 9 insertions(+), 1 deletion(-) 3 1 file changed, 9 insertions(+), 1 deletion(-)
4 4
5Index: qemu/linux-user/syscall.c 5Index: qemu-0.13.0/linux-user/syscall.c
6=================================================================== 6===================================================================
7--- qemu.orig/linux-user/syscall.c 2010-05-11 16:52:16.929785275 -0400 7--- qemu-0.13.0.orig/linux-user/syscall.c 2011-01-17 16:52:18.000000000 +0800
8+++ qemu/linux-user/syscall.c 2010-05-11 16:52:25.174783517 -0400 8+++ qemu-0.13.0/linux-user/syscall.c 2011-01-17 16:52:20.000000000 +0800
9@@ -94,6 +94,15 @@ 9@@ -99,6 +99,15 @@
10 #define CLONE_NPTL_FLAGS2 0 10 #define CLONE_NPTL_FLAGS2 0
11 #endif 11 #endif
12 12
diff --git a/meta/recipes-devtools/qemu/qemu_0.12.4.bb b/meta/recipes-devtools/qemu/qemu_0.13.0.bb
index 6125bca0d1..945c570f7c 100644
--- a/meta/recipes-devtools/qemu/qemu_0.12.4.bb
+++ b/meta/recipes-devtools/qemu/qemu_0.13.0.bb
@@ -3,7 +3,7 @@ require qemu.inc
3LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \ 3LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
4 file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913" 4 file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
5 5
6PR = "r23" 6PR = "r0"
7 7
8FILESPATH = "${FILE_DIRNAME}/qemu-${PV}" 8FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
9FILESDIR = "${WORKDIR}" 9FILESDIR = "${WORKDIR}"
@@ -21,16 +21,15 @@ SRC_URI = "\
21 file://qemu-vmware-vga-depth.patch \ 21 file://qemu-vmware-vga-depth.patch \
22 file://qemu-ppc-hack.patch \ 22 file://qemu-ppc-hack.patch \
23 file://enable-i386-linux-user.patch \ 23 file://enable-i386-linux-user.patch \
24 file://arm-cp15-fix.patch \
25 file://cursor-shadow-fix.patch \
26 file://vmware-vga-fifo-rewind.patch \ 24 file://vmware-vga-fifo-rewind.patch \
27 file://fix-configure-checks.patch \ 25 file://fix-configure-checks.patch \
28 file://powerpc_rom.bin \ 26 file://parallel_make.patch \
29 file://arm_timer-fix-oneshot-mode.patch \ 27 file://wacom-tablet-fix.patch \
30 file://arm_timer-reload-timer-when-enabled.patch" 28 file://port92_fix.patch \
29 file://powerpc_rom.bin"
31 30
32SRC_URI[md5sum] = "93e6b134dff89b2799f57b7d9e0e0fc5" 31SRC_URI[md5sum] = "397a0d665da8ba9d3b9583629f3d6421"
33SRC_URI[sha256sum] = "1a29a5b5151162d1de035c4926d1a1dbffee4a145ef61ee865d6b82aaea0602e" 32SRC_URI[sha256sum] = "1e6f5851b05cea6e377c835f4668408d4124cfb845f9948d922808743c5fd877"
34 33
35do_install_append () { 34do_install_append () {
36 install -d ${D}${datadir}/qemu 35 install -d ${D}${datadir}/qemu