diff options
Diffstat (limited to 'emulators/kqemu-kmod-devel/files/extra-patch-jk-200905-02')
-rw-r--r-- | emulators/kqemu-kmod-devel/files/extra-patch-jk-200905-02 | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/emulators/kqemu-kmod-devel/files/extra-patch-jk-200905-02 b/emulators/kqemu-kmod-devel/files/extra-patch-jk-200905-02 deleted file mode 100644 index 84a8568879e7..000000000000 --- a/emulators/kqemu-kmod-devel/files/extra-patch-jk-200905-02 +++ /dev/null @@ -1,102 +0,0 @@ -From: jan.kiszka@siemens.com (Jan Kiszka) -Subject: [Qemu-devel] [PATCH 2/5] kqemu: i386: Reorder DS and ES on - exception stack -Date: Fri, 29 May 2009 19:18:31 +0200 -Message-ID: <20090529171831.14265.74474.stgit@mchn012c.ww002.siemens.net> -To: qemu-devel@nongnu.org - -This is a KQEMU upstream bug: In case the non-trivial paths of -LOAD_SEG_CACHE in exception_return are taken for both DS and ES, the -current code will break as it assumes to read from the monitor's DS in -the restore code for ES. Fix this by swapping both segments on the stack -so that ES is always restored before DS. - -Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> ---- - - common/i386/monitor_asm.S | 16 ++++++++-------- - common/kqemu_int.h | 6 +++--- - 2 files changed, 11 insertions(+), 11 deletions(-) - -diff --git common/i386/monitor_asm.S b/common/i386/monitor_asm.S -index 04f4258..e996553 100644 -Index: common/i386/monitor_asm.S ---- common/i386/monitor_asm.S -+++ common/i386/monitor_asm.S -@@ -214,8 +214,8 @@ __monitor_exception: - pushl %edx - pushl %ecx - pushl %eax -- pushl %es - pushl %ds -+ pushl %es - - /* compute the address of the monitor context */ - call 1f -@@ -260,17 +260,17 @@ exception_return: - cmpb $3, KQEMU_STATE_cpu_state_cpl(%ebx) - je normal_seg_load - popl %eax -- LOAD_SEG_CACHE(%ds, R_DS, (11 * 4)) -+ LOAD_SEG_CACHE(%es, R_ES, (11 * 4)) - popl %eax -- LOAD_SEG_CACHE(%es, R_ES, (10 * 4)) -+ LOAD_SEG_CACHE(%ds, R_DS, (10 * 4)) - jmp 2f - normal_seg_load: - #endif - 1: -- popl %ds -+ popl %es - SEG_EXCEPTION(1b) - 1: -- popl %es -+ popl %ds - SEG_EXCEPTION(1b) - 2: - -@@ -295,10 +295,10 @@ SEG_EXCEPTION(1b) - - exception_return_to_monitor: - 1: -- popl %ds -+ popl %es - SEG_EXCEPTION(1b) - 1: -- popl %es -+ popl %ds - SEG_EXCEPTION(1b) - popl %eax - popl %ecx -@@ -363,8 +363,8 @@ __monitor_interrupt: - pushl %edx - pushl %ecx - pushl %eax -- pushl %es - pushl %ds -+ pushl %es - - /* compute the address of the monitor context */ - call 1f -diff --git common/kqemu_int.h common/kqemu_int.h -index f19f7ca..4b59cb3 100644 -Index: common/kqemu_int.h ---- common/kqemu_int.h -+++ common/kqemu_int.h -@@ -367,10 +367,10 @@ struct kqemu_exception_regs { - }; - #else - struct kqemu_exception_regs { -- uint16_t ds_sel; /* 0 */ -- uint16_t ds_sel_h; -- uint16_t es_sel; /* 1 */ -+ uint16_t es_sel; /* 0 */ - uint16_t es_sel_h; -+ uint16_t ds_sel; /* 1 */ -+ uint16_t ds_sel_h; - uint32_t eax; /* 2 */ - uint32_t ecx; - uint32_t edx; - - - |