diff options
author | marha <marha@users.sourceforge.net> | 2010-11-15 16:51:22 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-11-15 16:51:22 +0000 |
commit | f586b49ae23c573681b939ca44b3f418c83c84b2 (patch) | |
tree | ffafe2da4517c5121ab4a8c64966e72829147215 /xorg-server/hw/xfree86/x86emu | |
parent | 728ff03357b2dfd7048ab093183a239a0ba044c4 (diff) | |
parent | 3a82f8a35b2c6d094cf9d0d5a3ccb9dd9b85f626 (diff) | |
download | vcxsrv-f586b49ae23c573681b939ca44b3f418c83c84b2.tar.gz vcxsrv-f586b49ae23c573681b939ca44b3f418c83c84b2.tar.bz2 vcxsrv-f586b49ae23c573681b939ca44b3f418c83c84b2.zip |
svn merge "^/branches/released" .
Solved mouse motion bug in new version of dix/getevents.c
Diffstat (limited to 'xorg-server/hw/xfree86/x86emu')
-rw-r--r-- | xorg-server/hw/xfree86/x86emu/ops.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/xorg-server/hw/xfree86/x86emu/ops.c b/xorg-server/hw/xfree86/x86emu/ops.c index 740a3a58d..c0cfbd8c1 100644 --- a/xorg-server/hw/xfree86/x86emu/ops.c +++ b/xorg-server/hw/xfree86/x86emu/ops.c @@ -9691,15 +9691,23 @@ Handles opcode 0xe9 ****************************************************************************/
static void x86emuOp_jump_near_IMM(u8 X86EMU_UNUSED(op1))
{
- int ip;
+ u32 ip;
START_OF_INSTR();
DECODE_PRINTF("JMP\t");
- ip = (s16)fetch_word_imm();
- ip += (s16)M.x86.R_IP;
- DECODE_PRINTF2("%04x\n", (u16)ip);
- TRACE_AND_STEP();
- M.x86.R_IP = (u16)ip;
+ if (M.x86.mode & SYSMODE_PREFIX_DATA) {
+ ip = (u32)fetch_long_imm();
+ ip += (u32)M.x86.R_EIP;
+ DECODE_PRINTF2("%08x\n", (u32)ip);
+ TRACE_AND_STEP();
+ M.x86.R_EIP = (u32)ip;
+ } else {
+ ip = (s16)fetch_word_imm();
+ ip += (s16)M.x86.R_IP;
+ DECODE_PRINTF2("%04x\n", (u16)ip);
+ TRACE_AND_STEP();
+ M.x86.R_IP = (u16)ip;
+ }
DECODE_CLEAR_SEGOVR();
END_OF_INSTR();
}
|