diff --git a/bochs/cpu/fetchdecode.cc b/bochs/cpu/fetchdecode.cc index 4af6920ba..3a630a7e9 100644 --- a/bochs/cpu/fetchdecode.cc +++ b/bochs/cpu/fetchdecode.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: fetchdecode.cc,v 1.166 2008-02-14 18:59:40 sshwarts Exp $ +// $Id: fetchdecode.cc,v 1.167 2008-02-15 12:23:47 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -39,16 +39,18 @@ // immediate constant /////////////////////////// +#define X 0 /* undefined opcode */ + static const bx_bool BxOpcodeHasModrm32[512] = { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* ------------------------------- */ - /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, + /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,X, /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, - /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, - /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, + /* 20 */ 1,1,1,1,0,0,X,0,1,1,1,1,0,0,X,0, + /* 30 */ 1,1,1,1,0,0,X,0,1,1,1,1,0,0,X,0, /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - /* 60 */ 0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0, + /* 60 */ 0,0,1,1,X,X,X,X,0,1,0,1,0,0,0,0, /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -57,17 +59,17 @@ static const bx_bool BxOpcodeHasModrm32[512] = { /* C0 */ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* D0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* E0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - /* F0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1, + /* F0 */ X,0,X,X,0,0,1,1,0,0,0,0,0,0,1,1, /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* ------------------------------- */ - 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0F 00 */ + 1,1,1,1,X,0,0,0,0,0,X,0,X,1,0,1, /* 0F 00 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 10 */ - 1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 0F 20 */ - 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 0F 30 */ + 1,1,1,1,1,X,1,X,1,1,1,1,1,1,1,1, /* 0F 20 */ + 0,0,0,0,0,0,X,X,1,X,1,X,X,X,X,X, /* 0F 30 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 40 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 50 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 60 */ - 1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1, /* 0F 70 */ + 1,1,1,1,1,1,1,0,1,1,X,X,1,1,1,1, /* 0F 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0F 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 90 */ 0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1, /* 0F A0 */ @@ -75,11 +77,13 @@ static const bx_bool BxOpcodeHasModrm32[512] = { 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* 0F C0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F D0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F E0 */ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 /* 0F F0 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,X /* 0F F0 */ /* ------------------------------- */ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ }; +#undef X + /* *********** */ // LOCK PREFIX // /* *********** */ diff --git a/bochs/cpu/fetchdecode64.cc b/bochs/cpu/fetchdecode64.cc index b91558f42..5cb0421f9 100644 --- a/bochs/cpu/fetchdecode64.cc +++ b/bochs/cpu/fetchdecode64.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: fetchdecode64.cc,v 1.172 2008-02-14 18:59:41 sshwarts Exp $ +// $Id: fetchdecode64.cc,v 1.173 2008-02-15 12:23:49 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -45,47 +45,51 @@ // table for 32-bit due to undefined opcodes, which // were valid in 32-bit mode +#define X 0 /* undefined opcode */ + static const bx_bool BxOpcodeHasModrm64[512] = { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* ------------------------------- */ - /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, - /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, - /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, - /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, - /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 00 */ 1,1,1,1,0,0,X,X,1,1,1,1,0,0,X,X, + /* 10 */ 1,1,1,1,0,0,X,X,1,1,1,1,0,0,X,X, + /* 20 */ 1,1,1,1,0,0,X,X,1,1,1,1,0,0,X,X, + /* 30 */ 1,1,1,1,0,0,X,X,1,1,1,1,0,0,X,X, + /* 40 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - /* 60 */ 0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0, + /* 60 */ X,X,X,1,X,X,X,X,0,1,0,1,0,0,0,0, /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - /* 80 */ 1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1, - /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 80 */ 1,1,X,1,1,1,1,1,1,1,1,1,1,1,1,1, + /* 90 */ 0,0,0,0,0,0,0,0,0,0,X,0,0,0,0,0, /* A0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - /* C0 */ 1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0, - /* D0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, - /* E0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - /* F0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1, + /* C0 */ 1,1,0,0,X,X,1,1,0,0,0,0,0,0,X,0, + /* D0 */ 1,1,1,1,X,X,X,0,1,1,1,1,1,1,1,1, + /* E0 */ 0,0,0,0,0,0,0,0,0,0,X,0,0,0,0,0, + /* F0 */ X,0,X,X,0,0,1,1,0,0,0,0,0,0,1,1, /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* ------------------------------- */ - 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0F 00 */ + 1,1,1,1,X,0,0,0,0,0,X,0,X,1,0,1, /* 0F 00 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 10 */ - 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* 0F 20 */ - 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 0F 30 */ + 1,1,1,1,X,X,X,X,1,1,1,1,1,1,1,1, /* 0F 20 */ + 0,0,0,0,X,X,X,X,1,X,1,X,X,X,X,X, /* 0F 30 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 40 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 50 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 60 */ - 1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1, /* 0F 70 */ + 1,1,1,1,1,1,1,0,1,1,X,X,1,1,1,1, /* 0F 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0F 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 90 */ - 0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1, /* 0F A0 */ + 0,0,0,1,1,1,X,X,0,0,0,1,1,1,1,1, /* 0F A0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F B0 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* 0F C0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F D0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F E0 */ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 /* 0F F0 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,X /* 0F F0 */ /* ------------------------------- */ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ }; +#undef X + /* *********** */ // LOCK PREFIX // /* *********** */