From 63d8d50cfc0dee134ef60cef518cefae8ec737e2 Mon Sep 17 00:00:00 2001 From: Stanislav Shwartsman Date: Sun, 20 Jan 2008 20:11:17 +0000 Subject: [PATCH] code cleanup --- bochs/cpu/cpu.h | 11 +- bochs/cpu/fetchdecode.cc | 92 +++++----- bochs/cpu/fetchdecode64.cc | 336 +++++++++++++++++----------------- bochs/cpu/segment_ctrl_pro.cc | 54 +++--- 4 files changed, 244 insertions(+), 249 deletions(-) diff --git a/bochs/cpu/cpu.h b/bochs/cpu/cpu.h index c639cfbf5..1668720c1 100644 --- a/bochs/cpu/cpu.h +++ b/bochs/cpu/cpu.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: cpu.h,v 1.413 2008-01-18 09:36:13 sshwarts Exp $ +// $Id: cpu.h,v 1.414 2008-01-20 20:11:16 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -3910,13 +3910,12 @@ IMPLEMENT_EFLAG_ACCESSOR (TF, 8) #define Bx3ByteOpTable 0x0060 // Group encoding: 110 // Group encoding: 111 -#define BxPrefix 0x0080 // bit 7 -#define BxLockable 0x0100 // bit 8 -#define Bx3ByteOpcode 0x0200 // bit 9 -#define BxRepeatable 0x0400 // bit 10 +#define BxLockable 0x0080 // bit 7 +#define Bx3ByteOpcode 0x0100 // bit 8 +#define BxRepeatable 0x0200 // bit 9 #if BX_SUPPORT_TRACE_CACHE - #define BxTraceEnd 0x2000 // bit 13 + #define BxTraceEnd 0x1000 // bit 12 #else #define BxTraceEnd 0 #endif diff --git a/bochs/cpu/fetchdecode.cc b/bochs/cpu/fetchdecode.cc index 594dd54ef..bbbc81f6e 100644 --- a/bochs/cpu/fetchdecode.cc +++ b/bochs/cpu/fetchdecode.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: fetchdecode.cc,v 1.159 2008-01-18 09:36:13 sshwarts Exp $ +// $Id: fetchdecode.cc,v 1.160 2008-01-20 20:11:17 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -222,7 +222,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 23 /wr */ { 0, &BX_CPU_C::AND_GwEwR }, /* 24 /wr */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /wr */ { BxImmediate_Iw, &BX_CPU_C::AND_AXIw }, - /* 26 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /wr */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /wr */ { 0, &BX_CPU_C::DAA }, /* 28 /wr */ { 0, &BX_CPU_C::SUB_EbGbR }, /* 29 /wr */ { 0, &BX_CPU_C::SUB_EwGwR }, @@ -230,7 +230,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 2B /wr */ { 0, &BX_CPU_C::SUB_GwEwR }, /* 2C /wr */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /wr */ { BxImmediate_Iw, &BX_CPU_C::SUB_AXIw }, - /* 2E /wr */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /wr */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /wr */ { 0, &BX_CPU_C::DAS }, /* 30 /wr */ { 0, &BX_CPU_C::XOR_EbGbR }, /* 31 /wr */ { 0, &BX_CPU_C::XOR_EwGwR }, @@ -238,7 +238,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 33 /wr */ { 0, &BX_CPU_C::XOR_GwEwR }, /* 34 /wr */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /wr */ { BxImmediate_Iw, &BX_CPU_C::XOR_AXIw }, - /* 36 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /wr */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /wr */ { 0, &BX_CPU_C::AAA }, /* 38 /wr */ { 0, &BX_CPU_C::CMP_EbGbR }, /* 39 /wr */ { 0, &BX_CPU_C::CMP_EwGwR }, @@ -246,7 +246,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 3B /wr */ { 0, &BX_CPU_C::CMP_GwEwR }, /* 3C /wr */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /wr */ { BxImmediate_Iw, &BX_CPU_C::CMP_AXIw }, - /* 3E /wr */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /wr */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /wr */ { 0, &BX_CPU_C::AAS }, /* 40 /wr */ { 0, &BX_CPU_C::INC_RX }, /* 41 /wr */ { 0, &BX_CPU_C::INC_RX }, @@ -284,10 +284,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 61 /wr */ { 0, &BX_CPU_C::POPAD16 }, /* 62 /wr */ { 0, &BX_CPU_C::BxError }, // BOUND /* 63 /wr */ { 0, &BX_CPU_C::ARPL_EwGw }, - /* 64 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /wr */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /wr */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /wr */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /wr */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /wr */ { BxImmediate_Iw, &BX_CPU_C::PUSH_Iw }, /* 69 /wr */ { BxImmediate_Iw, &BX_CPU_C::IMUL_GwEwIw }, /* 6A /wr */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH_Iw }, @@ -436,10 +436,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* ED /wr */ { 0, &BX_CPU_C::IN_AXDX }, /* EE /wr */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /wr */ { 0, &BX_CPU_C::OUT_DXAX }, - /* F0 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK + /* F0 /wr */ { 0, &BX_CPU_C::BxError }, // LOCK /* F1 /wr */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REP, REPE/REPZ + /* F2 /wr */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /wr */ { 0, &BX_CPU_C::BxError }, // REP, REPE/REPZ /* F4 /wr */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /wr */ { 0, &BX_CPU_C::CMC }, /* F6 /wr */ { BxGroup3, NULL, BxOpcodeInfoG3EbR }, @@ -786,7 +786,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 23 /dr */ { 0, &BX_CPU_C::AND_GdEdR }, /* 24 /dr */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /dr */ { BxImmediate_Id, &BX_CPU_C::AND_EAXId }, - /* 26 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /dr */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /dr */ { 0, &BX_CPU_C::DAA }, /* 28 /dr */ { 0, &BX_CPU_C::SUB_EbGbR }, /* 29 /dr */ { 0, &BX_CPU_C::SUB_EdGdR }, @@ -794,7 +794,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 2B /dr */ { 0, &BX_CPU_C::SUB_GdEdR }, /* 2C /dr */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /dr */ { BxImmediate_Id, &BX_CPU_C::SUB_EAXId }, - /* 2E /dr */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /dr */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /dr */ { 0, &BX_CPU_C::DAS }, /* 30 /dr */ { 0, &BX_CPU_C::XOR_EbGbR }, /* 31 /dr */ { 0, &BX_CPU_C::XOR_EdGdR }, @@ -802,7 +802,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 33 /dr */ { 0, &BX_CPU_C::XOR_GdEdR }, /* 34 /dr */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /dr */ { BxImmediate_Id, &BX_CPU_C::XOR_EAXId }, - /* 36 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /dr */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /dr */ { 0, &BX_CPU_C::AAA }, /* 38 /dr */ { 0, &BX_CPU_C::CMP_EbGbR }, /* 39 /dr */ { 0, &BX_CPU_C::CMP_EdGdR }, @@ -810,7 +810,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 3B /dr */ { 0, &BX_CPU_C::CMP_GdEdR }, /* 3C /dr */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /dr */ { BxImmediate_Id, &BX_CPU_C::CMP_EAXId }, - /* 3E /dr */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /dr */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /dr */ { 0, &BX_CPU_C::AAS }, /* 40 /dr */ { 0, &BX_CPU_C::INC_ERX }, /* 41 /dr */ { 0, &BX_CPU_C::INC_ERX }, @@ -848,10 +848,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* 61 /dr */ { 0, &BX_CPU_C::POPAD32 }, /* 62 /dr */ { 0, &BX_CPU_C::BxError }, // BOUND /* 63 /dr */ { 0, &BX_CPU_C::ARPL_EwGw }, - /* 64 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /dr */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /dr */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /dr */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /dr */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /dr */ { BxImmediate_Id, &BX_CPU_C::PUSH_Id }, /* 69 /dr */ { BxImmediate_Id, &BX_CPU_C::IMUL_GdEdId }, /* 6A /dr */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH_Id }, @@ -1000,10 +1000,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = { /* ED /dr */ { 0, &BX_CPU_C::IN_EAXDX }, /* EE /dr */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /dr */ { 0, &BX_CPU_C::OUT_DXEAX }, - /* F0 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK: + /* F0 /dr */ { 0, &BX_CPU_C::BxError }, // LOCK: /* F1 /dr */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REP,REPE/REPZ + /* F2 /dr */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /dr */ { 0, &BX_CPU_C::BxError }, // REP,REPE/REPZ /* F4 /dr */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /dr */ { 0, &BX_CPU_C::CMC }, /* F6 /dr */ { BxGroup3, NULL, BxOpcodeInfoG3EbR }, @@ -1357,7 +1357,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 23 /wm */ { 0, &BX_CPU_C::AND_GwEwM }, /* 24 /wm */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /wm */ { BxImmediate_Iw, &BX_CPU_C::AND_AXIw }, - /* 26 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /wm */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /wm */ { 0, &BX_CPU_C::DAA }, /* 28 /wm */ { BxLockable, &BX_CPU_C::SUB_EbGbM }, /* 29 /wm */ { BxLockable, &BX_CPU_C::SUB_EwGwM }, @@ -1365,7 +1365,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 2B /wm */ { 0, &BX_CPU_C::SUB_GwEwM }, /* 2C /wm */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /wm */ { BxImmediate_Iw, &BX_CPU_C::SUB_AXIw }, - /* 2E /wm */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /wm */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /wm */ { 0, &BX_CPU_C::DAS }, /* 30 /wm */ { BxLockable, &BX_CPU_C::XOR_EbGbM }, /* 31 /wm */ { BxLockable, &BX_CPU_C::XOR_EwGwM }, @@ -1373,7 +1373,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 33 /wm */ { 0, &BX_CPU_C::XOR_GwEwM }, /* 34 /wm */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /wm */ { BxImmediate_Iw, &BX_CPU_C::XOR_AXIw }, - /* 36 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /wm */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /wm */ { 0, &BX_CPU_C::AAA }, /* 38 /wm */ { 0, &BX_CPU_C::CMP_EbGbM }, /* 39 /wm */ { 0, &BX_CPU_C::CMP_EwGwM }, @@ -1381,7 +1381,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 3B /wm */ { 0, &BX_CPU_C::CMP_GwEwM }, /* 3C /wm */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /wm */ { BxImmediate_Iw, &BX_CPU_C::CMP_AXIw }, - /* 3E /wm */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /wm */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /wm */ { 0, &BX_CPU_C::AAS }, /* 40 /wm */ { 0, &BX_CPU_C::INC_RX }, /* 41 /wm */ { 0, &BX_CPU_C::INC_RX }, @@ -1419,10 +1419,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 61 /wm */ { 0, &BX_CPU_C::POPAD16 }, /* 62 /wm */ { 0, &BX_CPU_C::BOUND_GwMa }, /* 63 /wm */ { 0, &BX_CPU_C::ARPL_EwGw }, - /* 64 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /wm */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /wm */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /wm */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /wm */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /wm */ { BxImmediate_Iw, &BX_CPU_C::PUSH_Iw }, /* 69 /wm */ { BxImmediate_Iw, &BX_CPU_C::IMUL_GwEwIw }, /* 6A /wm */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH_Iw }, @@ -1571,10 +1571,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* ED /wm */ { 0, &BX_CPU_C::IN_AXDX }, /* EE /wm */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /wm */ { 0, &BX_CPU_C::OUT_DXAX }, - /* F0 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK + /* F0 /wm */ { 0, &BX_CPU_C::BxError }, // LOCK /* F1 /wm */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REP, REPE/REPZ + /* F2 /wm */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /wm */ { 0, &BX_CPU_C::BxError }, // REP, REPE/REPZ /* F4 /wm */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /wm */ { 0, &BX_CPU_C::CMC }, /* F6 /wm */ { BxGroup3, NULL, BxOpcodeInfoG3EbM }, @@ -1921,7 +1921,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 23 /dm */ { 0, &BX_CPU_C::AND_GdEdM }, /* 24 /dm */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /dm */ { BxImmediate_Id, &BX_CPU_C::AND_EAXId }, - /* 26 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /dm */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /dm */ { 0, &BX_CPU_C::DAA }, /* 28 /dm */ { BxLockable, &BX_CPU_C::SUB_EbGbM }, /* 29 /dm */ { BxLockable, &BX_CPU_C::SUB_EdGdM }, @@ -1929,7 +1929,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 2B /dm */ { 0, &BX_CPU_C::SUB_GdEdM }, /* 2C /dm */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /dm */ { BxImmediate_Id, &BX_CPU_C::SUB_EAXId }, - /* 2E /dm */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /dm */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /dm */ { 0, &BX_CPU_C::DAS }, /* 30 /dm */ { BxLockable, &BX_CPU_C::XOR_EbGbM }, /* 31 /dm */ { BxLockable, &BX_CPU_C::XOR_EdGdM }, @@ -1937,7 +1937,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 33 /dm */ { 0, &BX_CPU_C::XOR_GdEdM }, /* 34 /dm */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /dm */ { BxImmediate_Id, &BX_CPU_C::XOR_EAXId }, - /* 36 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /dm */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /dm */ { 0, &BX_CPU_C::AAA }, /* 38 /dm */ { 0, &BX_CPU_C::CMP_EbGbM }, /* 39 /dm */ { 0, &BX_CPU_C::CMP_EdGdM }, @@ -1945,7 +1945,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 3B /dm */ { 0, &BX_CPU_C::CMP_GdEdM }, /* 3C /dm */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /dm */ { BxImmediate_Id, &BX_CPU_C::CMP_EAXId }, - /* 3E /dm */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /dm */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /dm */ { 0, &BX_CPU_C::AAS }, /* 40 /dm */ { 0, &BX_CPU_C::INC_ERX }, /* 41 /dm */ { 0, &BX_CPU_C::INC_ERX }, @@ -1983,10 +1983,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* 61 /dm */ { 0, &BX_CPU_C::POPAD32 }, /* 62 /dm */ { 0, &BX_CPU_C::BOUND_GdMa }, /* 63 /dm */ { 0, &BX_CPU_C::ARPL_EwGw }, - /* 64 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /dm */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /dm */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /dm */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /dm */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /dm */ { BxImmediate_Id, &BX_CPU_C::PUSH_Id }, /* 69 /dm */ { BxImmediate_Id, &BX_CPU_C::IMUL_GdEdId }, /* 6A /dm */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH_Id }, @@ -2135,10 +2135,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = { /* ED /dm */ { 0, &BX_CPU_C::IN_EAXDX }, /* EE /dm */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /dm */ { 0, &BX_CPU_C::OUT_DXEAX }, - /* F0 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK: + /* F0 /dm */ { 0, &BX_CPU_C::BxError }, // LOCK: /* F1 /dm */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REP,REPE/REPZ + /* F2 /dm */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /dm */ { 0, &BX_CPU_C::BxError }, // REP,REPE/REPZ /* F4 /dm */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /dm */ { 0, &BX_CPU_C::CMC }, /* F6 /dm */ { BxGroup3, NULL, BxOpcodeInfoG3EbM }, @@ -2469,7 +2469,7 @@ BX_CPU_C::fetchDecode32(Bit8u *iptr, bxInstruction_c *i, unsigned remainingInPag i->ResolveModrm = 0; i->initMetaInfo(/*os32*/ is_32, /*as32*/ is_32, - /*os64*/ 0, /*as64*/ 0); + /*os64*/ 0, /*as64*/ 0); offset = os_32 << 9; // * 512 diff --git a/bochs/cpu/fetchdecode64.cc b/bochs/cpu/fetchdecode64.cc index 62ea16497..70c3cdb70 100644 --- a/bochs/cpu/fetchdecode64.cc +++ b/bochs/cpu/fetchdecode64.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: fetchdecode64.cc,v 1.166 2008-01-18 09:36:15 sshwarts Exp $ +// $Id: fetchdecode64.cc,v 1.167 2008-01-20 20:11:17 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -211,7 +211,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 23 /wr */ { 0, &BX_CPU_C::AND_GwEwR }, /* 24 /wr */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /wr */ { BxImmediate_Iw, &BX_CPU_C::AND_AXIw }, - /* 26 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /wr */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /wr */ { 0, &BX_CPU_C::BxError }, /* 28 /wr */ { 0, &BX_CPU_C::SUB_EbGbR }, /* 29 /wr */ { 0, &BX_CPU_C::SUB_EwGwR }, @@ -219,7 +219,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 2B /wr */ { 0, &BX_CPU_C::SUB_GwEwR }, /* 2C /wr */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /wr */ { BxImmediate_Iw, &BX_CPU_C::SUB_AXIw }, - /* 2E /wr */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /wr */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /wr */ { 0, &BX_CPU_C::BxError }, /* 30 /wr */ { 0, &BX_CPU_C::XOR_EbGbR }, /* 31 /wr */ { 0, &BX_CPU_C::XOR_EwGwR }, @@ -227,7 +227,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 33 /wr */ { 0, &BX_CPU_C::XOR_GwEwR }, /* 34 /wr */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /wr */ { BxImmediate_Iw, &BX_CPU_C::XOR_AXIw }, - /* 36 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /wr */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /wr */ { 0, &BX_CPU_C::BxError }, /* 38 /wr */ { 0, &BX_CPU_C::CMP_EbGbR }, /* 39 /wr */ { 0, &BX_CPU_C::CMP_EwGwR }, @@ -235,24 +235,24 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 3B /wr */ { 0, &BX_CPU_C::CMP_GwEwR }, /* 3C /wr */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /wr */ { BxImmediate_Iw, &BX_CPU_C::CMP_AXIw }, - /* 3E /wr */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /wr */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /wr */ { 0, &BX_CPU_C::BxError }, - /* 40 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 41 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 42 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 43 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 44 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 45 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 46 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 47 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 48 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 49 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4A /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4B /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4C /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4D /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4E /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4F /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: + /* 40 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 41 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 42 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 43 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 44 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 45 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 46 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 47 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 48 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 49 /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4A /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4B /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4C /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4D /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4E /wr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4F /wr */ { 0, &BX_CPU_C::BxError }, // REX: /* 50 /wr */ { 0, &BX_CPU_C::PUSH_RX }, /* 51 /wr */ { 0, &BX_CPU_C::PUSH_RX }, /* 52 /wr */ { 0, &BX_CPU_C::PUSH_RX }, @@ -273,10 +273,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 61 /wr */ { 0, &BX_CPU_C::BxError }, /* 62 /wr */ { 0, &BX_CPU_C::BxError }, /* 63 /wr */ { 0, &BX_CPU_C::MOV_GwEwR }, // MOVSX_GwEw - /* 64 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /wr */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /wr */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /wr */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /wr */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /wr */ { BxImmediate_Iw, &BX_CPU_C::PUSH_Iw }, /* 69 /wr */ { BxImmediate_Iw, &BX_CPU_C::IMUL_GwEwIw }, /* 6A /wr */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH_Iw }, @@ -414,10 +414,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* ED /wr */ { 0, &BX_CPU_C::IN_AXDX }, /* EE /wr */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /wr */ { 0, &BX_CPU_C::OUT_DXAX }, - /* F0 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK + /* F0 /wr */ { 0, &BX_CPU_C::BxError }, // LOCK /* F1 /wr */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /wr */ { BxPrefix, &BX_CPU_C::BxError }, // REP, REPE/REPZ + /* F2 /wr */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /wr */ { 0, &BX_CPU_C::BxError }, // REP, REPE/REPZ /* F4 /wr */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /wr */ { 0, &BX_CPU_C::CMC }, /* F6 /wr */ { BxGroup3, NULL, BxOpcodeInfoG3EbR }, @@ -740,7 +740,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 23 /dr */ { 0, &BX_CPU_C::AND_GdEdR }, /* 24 /dr */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /dr */ { BxImmediate_Id, &BX_CPU_C::AND_EAXId }, - /* 26 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /dr */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /dr */ { 0, &BX_CPU_C::BxError }, /* 28 /dr */ { 0, &BX_CPU_C::SUB_EbGbR }, /* 29 /dr */ { 0, &BX_CPU_C::SUB_EdGdR }, @@ -748,7 +748,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 2B /dr */ { 0, &BX_CPU_C::SUB_GdEdR }, /* 2C /dr */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /dr */ { BxImmediate_Id, &BX_CPU_C::SUB_EAXId }, - /* 2E /dr */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /dr */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /dr */ { 0, &BX_CPU_C::BxError }, /* 30 /dr */ { 0, &BX_CPU_C::XOR_EbGbR }, /* 31 /dr */ { 0, &BX_CPU_C::XOR_EdGdR }, @@ -756,7 +756,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 33 /dr */ { 0, &BX_CPU_C::XOR_GdEdR }, /* 34 /dr */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /dr */ { BxImmediate_Id, &BX_CPU_C::XOR_EAXId }, - /* 36 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /dr */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /dr */ { 0, &BX_CPU_C::BxError }, /* 38 /dr */ { 0, &BX_CPU_C::CMP_EbGbR }, /* 39 /dr */ { 0, &BX_CPU_C::CMP_EdGdR }, @@ -764,24 +764,24 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 3B /dr */ { 0, &BX_CPU_C::CMP_GdEdR }, /* 3C /dr */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /dr */ { BxImmediate_Id, &BX_CPU_C::CMP_EAXId }, - /* 3E /dr */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /dr */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /dr */ { 0, &BX_CPU_C::BxError }, - /* 40 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 41 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 42 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 43 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 44 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 45 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 46 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 47 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 48 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 49 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4A /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4B /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4C /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4D /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4E /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4F /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: + /* 40 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 41 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 42 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 43 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 44 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 45 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 46 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 47 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 48 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 49 /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4A /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4B /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4C /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4D /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4E /dr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4F /dr */ { 0, &BX_CPU_C::BxError }, // REX: /* 50 /dr */ { 0, &BX_CPU_C::PUSH_RRX }, /* 51 /dr */ { 0, &BX_CPU_C::PUSH_RRX }, /* 52 /dr */ { 0, &BX_CPU_C::PUSH_RRX }, @@ -802,10 +802,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 61 /dr */ { 0, &BX_CPU_C::BxError }, /* 62 /dr */ { 0, &BX_CPU_C::BxError }, /* 63 /dr */ { 0, &BX_CPU_C::MOV_GdEdR }, // MOVSX_GdEd - /* 64 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /dr */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /dr */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /dr */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /dr */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /dr */ { BxImmediate_Id, &BX_CPU_C::PUSH64_Id }, /* 69 /dr */ { BxImmediate_Id, &BX_CPU_C::IMUL_GdEdId }, /* 6A /dr */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH64_Id }, @@ -943,10 +943,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* ED /dr */ { 0, &BX_CPU_C::IN_EAXDX }, /* EE /dr */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /dr */ { 0, &BX_CPU_C::OUT_DXEAX }, - /* F0 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK: + /* F0 /dr */ { 0, &BX_CPU_C::BxError }, // LOCK: /* F1 /dr */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /dr */ { BxPrefix, &BX_CPU_C::BxError }, // REP,REPE/REPZ + /* F2 /dr */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /dr */ { 0, &BX_CPU_C::BxError }, // REP,REPE/REPZ /* F4 /dr */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /dr */ { 0, &BX_CPU_C::CMC }, /* F6 /dr */ { BxGroup3, NULL, BxOpcodeInfoG3EbR }, @@ -1269,7 +1269,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 23 /qr */ { 0, &BX_CPU_C::AND_GqEqR }, /* 24 /qr */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /qr */ { BxImmediate_Id, &BX_CPU_C::AND_RAXId }, - /* 26 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /qr */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /qr */ { 0, &BX_CPU_C::BxError }, /* 28 /qr */ { 0, &BX_CPU_C::SUB_EbGbR }, /* 29 /qr */ { 0, &BX_CPU_C::SUB_EqGqR }, @@ -1277,7 +1277,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 2B /qr */ { 0, &BX_CPU_C::SUB_GqEqR }, /* 2C /qr */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /qr */ { BxImmediate_Id, &BX_CPU_C::SUB_RAXId }, - /* 2E /qr */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /qr */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /qr */ { 0, &BX_CPU_C::BxError }, /* 30 /qr */ { 0, &BX_CPU_C::XOR_EbGbR }, /* 31 /qr */ { 0, &BX_CPU_C::XOR_EqGqR }, @@ -1285,7 +1285,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 33 /qr */ { 0, &BX_CPU_C::XOR_GqEqR }, /* 34 /qr */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /qr */ { BxImmediate_Id, &BX_CPU_C::XOR_RAXId }, - /* 36 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /qr */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /qr */ { 0, &BX_CPU_C::BxError }, /* 38 /qr */ { 0, &BX_CPU_C::CMP_EbGbR }, /* 39 /qr */ { 0, &BX_CPU_C::CMP_EqGqR }, @@ -1293,24 +1293,24 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 3B /qr */ { 0, &BX_CPU_C::CMP_GqEqR }, /* 3C /qr */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /qr */ { BxImmediate_Id, &BX_CPU_C::CMP_RAXId }, - /* 3E /qr */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /qr */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /qr */ { 0, &BX_CPU_C::BxError }, - /* 40 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 41 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 42 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 43 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 44 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 45 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 46 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 47 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 48 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 49 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4A /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4B /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4C /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4D /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4E /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4F /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REX: + /* 40 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 41 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 42 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 43 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 44 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 45 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 46 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 47 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 48 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 49 /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4A /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4B /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4C /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4D /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4E /qr */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4F /qr */ { 0, &BX_CPU_C::BxError }, // REX: /* 50 /qr */ { 0, &BX_CPU_C::PUSH_RRX }, /* 51 /qr */ { 0, &BX_CPU_C::PUSH_RRX }, /* 52 /qr */ { 0, &BX_CPU_C::PUSH_RRX }, @@ -1331,10 +1331,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* 61 /qr */ { 0, &BX_CPU_C::BxError }, /* 62 /qr */ { 0, &BX_CPU_C::BxError }, /* 63 /qr */ { 0, &BX_CPU_C::MOVSX_GqEdR }, - /* 64 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /qr */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /qr */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /qr */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /qr */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /qr */ { BxImmediate_Id, &BX_CPU_C::PUSH64_Id }, /* 69 /qr */ { BxImmediate_Id, &BX_CPU_C::IMUL_GqEqId }, /* 6A /qr */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH64_Id }, @@ -1472,10 +1472,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = { /* ED /qr */ { 0, &BX_CPU_C::IN_EAXDX }, /* EE /qr */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /qr */ { 0, &BX_CPU_C::OUT_DXEAX }, - /* F0 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK: + /* F0 /qr */ { 0, &BX_CPU_C::BxError }, // LOCK: /* F1 /qr */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /qr */ { BxPrefix, &BX_CPU_C::BxError }, // REP,REPE/REPZ + /* F2 /qr */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /qr */ { 0, &BX_CPU_C::BxError }, // REP,REPE/REPZ /* F4 /qr */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /qr */ { 0, &BX_CPU_C::CMC }, /* F6 /qr */ { BxGroup3, NULL, BxOpcodeInfoG3EbR }, @@ -1804,7 +1804,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 23 /wm */ { 0, &BX_CPU_C::AND_GwEwM }, /* 24 /wm */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /wm */ { BxImmediate_Iw, &BX_CPU_C::AND_AXIw }, - /* 26 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /wm */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /wm */ { 0, &BX_CPU_C::BxError }, /* 28 /wm */ { BxLockable, &BX_CPU_C::SUB_EbGbM }, /* 29 /wm */ { BxLockable, &BX_CPU_C::SUB_EwGwM }, @@ -1812,7 +1812,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 2B /wm */ { 0, &BX_CPU_C::SUB_GwEwM }, /* 2C /wm */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /wm */ { BxImmediate_Iw, &BX_CPU_C::SUB_AXIw }, - /* 2E /wm */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /wm */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /wm */ { 0, &BX_CPU_C::BxError }, /* 30 /wm */ { BxLockable, &BX_CPU_C::XOR_EbGbM }, /* 31 /wm */ { BxLockable, &BX_CPU_C::XOR_EwGwM }, @@ -1820,7 +1820,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 33 /wm */ { 0, &BX_CPU_C::XOR_GwEwM }, /* 34 /wm */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /wm */ { BxImmediate_Iw, &BX_CPU_C::XOR_AXIw }, - /* 36 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /wm */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /wm */ { 0, &BX_CPU_C::BxError }, /* 38 /wm */ { 0, &BX_CPU_C::CMP_EbGbM }, /* 39 /wm */ { 0, &BX_CPU_C::CMP_EwGwM }, @@ -1828,24 +1828,24 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 3B /wm */ { 0, &BX_CPU_C::CMP_GwEwM }, /* 3C /wm */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /wm */ { BxImmediate_Iw, &BX_CPU_C::CMP_AXIw }, - /* 3E /wm */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /wm */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /wm */ { 0, &BX_CPU_C::BxError }, - /* 40 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 41 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 42 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 43 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 44 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 45 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 46 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 47 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 48 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 49 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4A /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4B /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4C /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4D /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4E /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4F /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: + /* 40 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 41 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 42 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 43 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 44 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 45 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 46 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 47 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 48 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 49 /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4A /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4B /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4C /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4D /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4E /wm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4F /wm */ { 0, &BX_CPU_C::BxError }, // REX: /* 50 /wm */ { 0, &BX_CPU_C::PUSH_RX }, /* 51 /wm */ { 0, &BX_CPU_C::PUSH_RX }, /* 52 /wm */ { 0, &BX_CPU_C::PUSH_RX }, @@ -1866,10 +1866,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 61 /wm */ { 0, &BX_CPU_C::BxError }, /* 62 /wm */ { 0, &BX_CPU_C::BxError }, /* 63 /wm */ { 0, &BX_CPU_C::MOV_GwEwM }, // MOVSX_GwEw - /* 64 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /wm */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /wm */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /wm */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /wm */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /wm */ { BxImmediate_Iw, &BX_CPU_C::PUSH_Iw }, /* 69 /wm */ { BxImmediate_Iw, &BX_CPU_C::IMUL_GwEwIw }, /* 6A /wm */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH_Iw }, @@ -2007,10 +2007,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* ED /wm */ { 0, &BX_CPU_C::IN_AXDX }, /* EE /wm */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /wm */ { 0, &BX_CPU_C::OUT_DXAX }, - /* F0 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK + /* F0 /wm */ { 0, &BX_CPU_C::BxError }, // LOCK /* F1 /wm */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /wm */ { BxPrefix, &BX_CPU_C::BxError }, // REP, REPE/REPZ + /* F2 /wm */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /wm */ { 0, &BX_CPU_C::BxError }, // REP, REPE/REPZ /* F4 /wm */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /wm */ { 0, &BX_CPU_C::CMC }, /* F6 /wm */ { BxGroup3, NULL, BxOpcodeInfoG3EbM }, @@ -2333,7 +2333,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 23 /dm */ { 0, &BX_CPU_C::AND_GdEdM }, /* 24 /dm */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /dm */ { BxImmediate_Id, &BX_CPU_C::AND_EAXId }, - /* 26 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /dm */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /dm */ { 0, &BX_CPU_C::BxError }, /* 28 /dm */ { BxLockable, &BX_CPU_C::SUB_EbGbM }, /* 29 /dm */ { BxLockable, &BX_CPU_C::SUB_EdGdM }, @@ -2341,7 +2341,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 2B /dm */ { 0, &BX_CPU_C::SUB_GdEdM }, /* 2C /dm */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /dm */ { BxImmediate_Id, &BX_CPU_C::SUB_EAXId }, - /* 2E /dm */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /dm */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /dm */ { 0, &BX_CPU_C::BxError }, /* 30 /dm */ { BxLockable, &BX_CPU_C::XOR_EbGbM }, /* 31 /dm */ { BxLockable, &BX_CPU_C::XOR_EdGdM }, @@ -2349,7 +2349,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 33 /dm */ { 0, &BX_CPU_C::XOR_GdEdM }, /* 34 /dm */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /dm */ { BxImmediate_Id, &BX_CPU_C::XOR_EAXId }, - /* 36 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /dm */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /dm */ { 0, &BX_CPU_C::BxError }, /* 38 /dm */ { 0, &BX_CPU_C::CMP_EbGbM }, /* 39 /dm */ { 0, &BX_CPU_C::CMP_EdGdM }, @@ -2357,24 +2357,24 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 3B /dm */ { 0, &BX_CPU_C::CMP_GdEdM }, /* 3C /dm */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /dm */ { BxImmediate_Id, &BX_CPU_C::CMP_EAXId }, - /* 3E /dm */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /dm */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /dm */ { 0, &BX_CPU_C::BxError }, - /* 40 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 41 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 42 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 43 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 44 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 45 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 46 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 47 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 48 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 49 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4A /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4B /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4C /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4D /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4E /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4F /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: + /* 40 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 41 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 42 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 43 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 44 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 45 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 46 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 47 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 48 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 49 /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4A /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4B /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4C /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4D /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4E /dm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4F /dm */ { 0, &BX_CPU_C::BxError }, // REX: /* 50 /dm */ { 0, &BX_CPU_C::PUSH_RRX }, /* 51 /dm */ { 0, &BX_CPU_C::PUSH_RRX }, /* 52 /dm */ { 0, &BX_CPU_C::PUSH_RRX }, @@ -2395,10 +2395,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 61 /dm */ { 0, &BX_CPU_C::BxError }, /* 62 /dm */ { 0, &BX_CPU_C::BxError }, /* 63 /dm */ { 0, &BX_CPU_C::MOV_GdEdM }, // MOVSX_GdEd - /* 64 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /dm */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /dm */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /dm */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /dm */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /dm */ { BxImmediate_Id, &BX_CPU_C::PUSH64_Id }, /* 69 /dm */ { BxImmediate_Id, &BX_CPU_C::IMUL_GdEdId }, /* 6A /dm */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH64_Id }, @@ -2536,10 +2536,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* ED /dm */ { 0, &BX_CPU_C::IN_EAXDX }, /* EE /dm */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /dm */ { 0, &BX_CPU_C::OUT_DXEAX }, - /* F0 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK: + /* F0 /dm */ { 0, &BX_CPU_C::BxError }, // LOCK: /* F1 /dm */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /dm */ { BxPrefix, &BX_CPU_C::BxError }, // REP,REPE/REPZ + /* F2 /dm */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /dm */ { 0, &BX_CPU_C::BxError }, // REP,REPE/REPZ /* F4 /dm */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /dm */ { 0, &BX_CPU_C::CMC }, /* F6 /dm */ { BxGroup3, NULL, BxOpcodeInfoG3EbM }, @@ -2862,7 +2862,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 23 /qm */ { 0, &BX_CPU_C::AND_GqEqM }, /* 24 /qm */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 /qm */ { BxImmediate_Id, &BX_CPU_C::AND_RAXId }, - /* 26 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // ES: + /* 26 /qm */ { 0, &BX_CPU_C::BxError }, // ES: /* 27 /qm */ { 0, &BX_CPU_C::BxError }, /* 28 /qm */ { BxLockable, &BX_CPU_C::SUB_EbGbM }, /* 29 /qm */ { BxLockable, &BX_CPU_C::SUB_EqGqM }, @@ -2870,7 +2870,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 2B /qm */ { 0, &BX_CPU_C::SUB_GqEqM }, /* 2C /qm */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D /qm */ { BxImmediate_Id, &BX_CPU_C::SUB_RAXId }, - /* 2E /qm */ { BxPrefix, &BX_CPU_C::BxError }, // CS: + /* 2E /qm */ { 0, &BX_CPU_C::BxError }, // CS: /* 2F /qm */ { 0, &BX_CPU_C::BxError }, /* 30 /qm */ { BxLockable, &BX_CPU_C::XOR_EbGbM }, /* 31 /qm */ { BxLockable, &BX_CPU_C::XOR_EqGqM }, @@ -2878,7 +2878,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 33 /qm */ { 0, &BX_CPU_C::XOR_GqEqM }, /* 34 /qm */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 /qm */ { BxImmediate_Id, &BX_CPU_C::XOR_RAXId }, - /* 36 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // SS: + /* 36 /qm */ { 0, &BX_CPU_C::BxError }, // SS: /* 37 /qm */ { 0, &BX_CPU_C::BxError }, /* 38 /qm */ { 0, &BX_CPU_C::CMP_EbGbM }, /* 39 /qm */ { 0, &BX_CPU_C::CMP_EqGqM }, @@ -2886,24 +2886,24 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 3B /qm */ { 0, &BX_CPU_C::CMP_GqEqM }, /* 3C /qm */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D /qm */ { BxImmediate_Id, &BX_CPU_C::CMP_RAXId }, - /* 3E /qm */ { BxPrefix, &BX_CPU_C::BxError }, // DS: + /* 3E /qm */ { 0, &BX_CPU_C::BxError }, // DS: /* 3F /qm */ { 0, &BX_CPU_C::BxError }, - /* 40 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 41 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 42 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 43 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 44 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 45 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 46 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 47 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 48 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 49 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4A /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4B /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4C /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4D /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4E /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: - /* 4F /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REX: + /* 40 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 41 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 42 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 43 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 44 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 45 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 46 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 47 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 48 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 49 /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4A /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4B /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4C /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4D /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4E /qm */ { 0, &BX_CPU_C::BxError }, // REX: + /* 4F /qm */ { 0, &BX_CPU_C::BxError }, // REX: /* 50 /qm */ { 0, &BX_CPU_C::PUSH_RRX }, /* 51 /qm */ { 0, &BX_CPU_C::PUSH_RRX }, /* 52 /qm */ { 0, &BX_CPU_C::PUSH_RRX }, @@ -2924,10 +2924,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* 61 /qm */ { 0, &BX_CPU_C::BxError }, /* 62 /qm */ { 0, &BX_CPU_C::BxError }, /* 63 /qm */ { 0, &BX_CPU_C::MOVSX_GqEdM }, - /* 64 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // FS: - /* 65 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // GS: - /* 66 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // OS: - /* 67 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // AS: + /* 64 /qm */ { 0, &BX_CPU_C::BxError }, // FS: + /* 65 /qm */ { 0, &BX_CPU_C::BxError }, // GS: + /* 66 /qm */ { 0, &BX_CPU_C::BxError }, // OS: + /* 67 /qm */ { 0, &BX_CPU_C::BxError }, // AS: /* 68 /qm */ { BxImmediate_Id, &BX_CPU_C::PUSH64_Id }, /* 69 /qm */ { BxImmediate_Id, &BX_CPU_C::IMUL_GqEqId }, /* 6A /qm */ { BxImmediate_Ib_SE, &BX_CPU_C::PUSH64_Id }, @@ -3065,10 +3065,10 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = { /* ED /qm */ { 0, &BX_CPU_C::IN_EAXDX }, /* EE /qm */ { 0, &BX_CPU_C::OUT_DXAL }, /* EF /qm */ { 0, &BX_CPU_C::OUT_DXEAX }, - /* F0 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // LOCK: + /* F0 /qm */ { 0, &BX_CPU_C::BxError }, // LOCK: /* F1 /qm */ { BxTraceEnd, &BX_CPU_C::INT1 }, - /* F2 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REPNE/REPNZ - /* F3 /qm */ { BxPrefix, &BX_CPU_C::BxError }, // REP,REPE/REPZ + /* F2 /qm */ { 0, &BX_CPU_C::BxError }, // REPNE/REPNZ + /* F3 /qm */ { 0, &BX_CPU_C::BxError }, // REP,REPE/REPZ /* F4 /qm */ { BxTraceEnd, &BX_CPU_C::HLT }, /* F5 /qm */ { 0, &BX_CPU_C::CMC }, /* F6 /qm */ { BxGroup3, NULL, BxOpcodeInfoG3EbM }, @@ -3360,7 +3360,7 @@ BX_CPU_C::fetchDecode64(Bit8u *iptr, bxInstruction_c *i, unsigned remainingInPag unsigned remain = (remainingInPage < 15) ? remainingInPage : 15; unsigned b1, b2, ilen=0, attr, lock=0; - unsigned imm_mode, offset, rex_r = 0, rex_x = 0, rex_b = 0; + unsigned imm_mode, offset = 512, rex_r = 0, rex_x = 0, rex_b = 0; unsigned rm = 0, mod = 0, nnn = 0; #define SSE_PREFIX_NONE 0 #define SSE_PREFIX_66 1 @@ -3369,13 +3369,11 @@ BX_CPU_C::fetchDecode64(Bit8u *iptr, bxInstruction_c *i, unsigned remainingInPag unsigned sse_prefix = SSE_PREFIX_NONE; unsigned rex_prefix = 0; - offset = 512*1; - i->ResolveModrm = 0; i->initMetaInfo(/*os32*/ 1, // operand size 32 override defaults to 1 - /*as32*/ 1, // address size 32 override defaults to 1 - /*os64*/ 0, // operand size 64 override defaults to 0 - /*as64*/ 1); // address size 64 override defaults to 1 + /*as32*/ 1, // address size 32 override defaults to 1 + /*os64*/ 0, // operand size 64 override defaults to 0 + /*as64*/ 1); // address size 64 override defaults to 1 fetch_b1: b1 = *iptr++; diff --git a/bochs/cpu/segment_ctrl_pro.cc b/bochs/cpu/segment_ctrl_pro.cc index 4cc77db1e..2ae6c2ce7 100644 --- a/bochs/cpu/segment_ctrl_pro.cc +++ b/bochs/cpu/segment_ctrl_pro.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: segment_ctrl_pro.cc,v 1.78 2008-01-20 17:46:02 sshwarts Exp $ +// $Id: segment_ctrl_pro.cc,v 1.79 2008-01-20 20:11:17 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -672,6 +672,7 @@ BX_CPU_C::fetch_raw_descriptor(const bx_selector_t *selector, Bit32u *dword1, Bit32u *dword2, unsigned exception_no) { Bit32u index = selector->index; + bx_address offset; if (selector->ti == 0) { /* GDT */ if ((index*8 + 7) > BX_CPU_THIS_PTR gdtr.limit) { @@ -679,9 +680,7 @@ BX_CPU_C::fetch_raw_descriptor(const bx_selector_t *selector, index*8 + 7, index, BX_CPU_THIS_PTR gdtr.limit)); exception(exception_no, selector->value & 0xfffc, 0); } - bx_address offset = BX_CPU_THIS_PTR gdtr.base + index*8; - access_linear(offset, 4, 0, BX_READ, dword1); - access_linear(offset + 4, 4, 0, BX_READ, dword2); + offset = BX_CPU_THIS_PTR gdtr.base + index*8; } else { /* LDT */ if (BX_CPU_THIS_PTR ldtr.cache.valid==0) { @@ -693,37 +692,38 @@ BX_CPU_C::fetch_raw_descriptor(const bx_selector_t *selector, index*8 + 7, index, BX_CPU_THIS_PTR ldtr.cache.u.system.limit_scaled)); exception(exception_no, selector->value & 0xfffc, 0); } - bx_address offset = BX_CPU_THIS_PTR ldtr.cache.u.system.base + index*8; - access_linear(offset, 4, 0, BX_READ, dword1); - access_linear(offset + 4, 4, 0, BX_READ, dword2); + offset = BX_CPU_THIS_PTR ldtr.cache.u.system.base + index*8; } + + access_linear(offset, 4, 0, BX_READ, dword1); + access_linear(offset + 4, 4, 0, BX_READ, dword2); } bx_bool BX_CPP_AttrRegparmN(3) BX_CPU_C::fetch_raw_descriptor2(const bx_selector_t *selector, Bit32u *dword1, Bit32u *dword2) { Bit32u index = selector->index; + bx_address offset; if (selector->ti == 0) { /* GDT */ if ((index*8 + 7) > BX_CPU_THIS_PTR gdtr.limit) - return(0); - bx_address offset = BX_CPU_THIS_PTR gdtr.base + index*8; - access_linear(offset, 4, 0, BX_READ, dword1); - access_linear(offset + 4, 4, 0, BX_READ, dword2); - return(1); + return 0; + offset = BX_CPU_THIS_PTR gdtr.base + index*8; } else { /* LDT */ if (BX_CPU_THIS_PTR ldtr.cache.valid==0) { BX_PANIC(("fetch_raw_descriptor2: LDTR.valid=0")); - return(0); + return 0; } if ((index*8 + 7) > BX_CPU_THIS_PTR ldtr.cache.u.system.limit_scaled) - return(0); - bx_address offset = BX_CPU_THIS_PTR ldtr.cache.u.system.base + index*8; - access_linear(offset, 4, 0, BX_READ, dword1); - access_linear(offset + 4, 4, 0, BX_READ, dword2); - return(1); + return 0; + offset = BX_CPU_THIS_PTR ldtr.cache.u.system.base + index*8; } + + access_linear(offset, 4, 0, BX_READ, dword1); + access_linear(offset + 4, 4, 0, BX_READ, dword2); + + return 1; } #if BX_SUPPORT_X86_64 @@ -732,6 +732,7 @@ void BX_CPU_C::fetch_raw_descriptor64(const bx_selector_t *selector, { Bit32u index = selector->index; Bit32u dword4; + bx_address offset; if (selector->ti == 0) { /* GDT */ if ((index*8 + 15) > BX_CPU_THIS_PTR gdtr.limit) { @@ -739,11 +740,7 @@ void BX_CPU_C::fetch_raw_descriptor64(const bx_selector_t *selector, index*8 + 15, index, BX_CPU_THIS_PTR gdtr.limit)); exception(exception_no, selector->value & 0xfffc, 0); } - bx_address offset = BX_CPU_THIS_PTR gdtr.base + index*8; - access_linear(offset, 4, 0, BX_READ, dword1); - access_linear(offset + 4, 4, 0, BX_READ, dword2); - access_linear(offset + 8, 4, 0, BX_READ, dword3); - access_linear(offset + 12, 4, 0, BX_READ, &dword4); + offset = BX_CPU_THIS_PTR gdtr.base + index*8; } else { /* LDT */ if (BX_CPU_THIS_PTR ldtr.cache.valid==0) { @@ -755,13 +752,14 @@ void BX_CPU_C::fetch_raw_descriptor64(const bx_selector_t *selector, index*8 + 15, index, BX_CPU_THIS_PTR ldtr.cache.u.system.limit_scaled)); exception(exception_no, selector->value & 0xfffc, 0); } - bx_address offset = BX_CPU_THIS_PTR ldtr.cache.u.system.base + index*8; - access_linear(offset, 4, 0, BX_READ, dword1); - access_linear(offset + 4, 4, 0, BX_READ, dword2); - access_linear(offset + 8, 4, 0, BX_READ, dword3); - access_linear(offset + 12, 4, 0, BX_READ, &dword4); + offset = BX_CPU_THIS_PTR ldtr.cache.u.system.base + index*8; } + access_linear(offset, 4, 0, BX_READ, dword1); + access_linear(offset + 4, 4, 0, BX_READ, dword2); + access_linear(offset + 8, 4, 0, BX_READ, dword3); + access_linear(offset + 12, 4, 0, BX_READ, &dword4); + if (dword4 != 0) { BX_ERROR(("fetch_raw_descriptor64: extended attributes DWORD4 != 0")); exception(BX_GP_EXCEPTION, selector->value & 0xfffc, 0);