// Tables for DS: 32-bit instructions // (ie. no FS:, but DATA: specified) /*++ Copyright (c) 1995 Microsoft Corporation Module Name: lds16tbl.c Abstract: Dispatch tables for instructions with DATA: override and the LOCK prefix. It is used for both DS: and FS: overrides. Author: 23-Aug-1995 Ori Gershony (t-orig) Revision History: --*/ #include #include #include #include #include #include "threadst.h" #include "instr.h" #include "decoderp.h" #include "bytefns.h" #include "wordfns.h" #include "miscfns.h" #include "floatfns.h" pfnDispatchInstruction LockDispatch16[256] = { // 0 LOCKadd_m_r8, LOCKadd_m_r16, LOCKadd_r_m8, LOCKadd_r_m16, bad, bad, bad, bad, // 8 LOCKor_m_r8, LOCKor_m_r16, LOCKor_r_m8, LOCKor_r_m16, bad, bad, bad, LOCKdispatch216, // 10 LOCKadc_m_r8, LOCKadc_m_r16, LOCKadc_r_m8, LOCKadc_r_m16, bad, bad, bad, bad, // 18 LOCKsbb_m_r8, LOCKsbb_m_r16, LOCKsbb_r_m8, LOCKsbb_r_m16, bad, bad, bad, bad, // 20 LOCKand_m_r8, LOCKand_m_r16, LOCKand_r_m8, LOCKand_r_m16, bad, bad, bad, bad, // 28 LOCKsub_m_r8, LOCKsub_m_r16, LOCKsub_r_m8, LOCKsub_r_m16, bad, bad, bad, bad, // 30 LOCKxor_m_r8, LOCKxor_m_r16, LOCKxor_r_m8, LOCKxor_r_m16, bad, bad, bad, bad, // 38 bad, bad, bad, bad, bad, bad, bad, bad, // 40 bad, bad, bad, bad, bad, bad, bad, bad, // 48 bad, bad, bad, bad, bad, bad, bad, bad, // 50 bad, bad, bad, bad, bad, bad, bad, bad, // 58 bad, bad, bad, bad, bad, bad, bad, bad, // 60 bad, bad, bad, bad, bad, bad, bad, bad, // 68 bad, bad, bad, bad, bad, bad, bad, bad, // 70 bad, bad, bad, bad, bad, bad, bad, bad, // 78 bad, bad, bad, bad, bad, bad, bad, bad, // 80 LOCKGROUP_18, LOCKGROUP_116, bad, LOCKGROUP_1WS16, bad, bad, xchg_r_m8, xchg_r_m16, // 88 bad, bad, bad, bad, bad, bad, bad, bad, // 90 bad, bad, bad, bad, bad, bad, bad, bad, // 98 bad, bad, bad, bad, bad, bad, bad, bad, // a0 bad, bad, bad, bad, bad, bad, bad, bad, // a8 bad, bad, bad, bad, bad, bad, bad, bad, // b0 bad, bad, bad, bad, bad, bad, bad, bad, // b8 bad, bad, bad, bad, bad, bad, bad, bad, // c0 bad, bad, bad, bad, bad, bad, bad, bad, // c8 bad, bad, bad, bad, bad, bad, bad, bad, // d0 bad, bad, bad, bad, bad, bad, bad, bad, // d8 bad, bad, bad, bad, bad, bad, bad, bad, // e0 bad, bad, bad, bad, bad, bad, bad, bad, // e8 bad, bad, bad, bad, bad, bad, bad, bad, // f0 bad, bad, bad, bad, bad, bad, LOCKGROUP_38, LOCKGROUP_316, // f8 bad, bad, bad, bad, bad, bad, bad, LOCKGROUP_516, }; pfnDispatchInstruction LockDispatch216[256] = { // 0 bad, bad, bad, bad, bad, bad, bad, bad, // 8 bad, bad, bad, bad, bad, bad, bad, bad, // 10 bad, bad, bad, bad, bad, bad, bad, bad, // 18 bad, bad, bad, bad, bad, bad, bad, bad, // 20 bad, bad, bad, bad, bad, bad, bad, bad, // 28 bad, bad, bad, bad, bad, bad, bad, bad, // 30 bad, bad, bad, bad, bad, bad, bad, bad, // 38 bad, bad, bad, bad, bad, bad, bad, bad, // 40 bad, bad, bad, bad, bad, bad, bad, bad, // 48 bad, bad, bad, bad, bad, bad, bad, bad, // 50 bad, bad, bad, bad, bad, bad, bad, bad, // 58 bad, bad, bad, bad, bad, bad, bad, bad, // 60 bad, bad, bad, bad, bad, bad, bad, bad, // 68 bad, bad, bad, bad, bad, bad, bad, bad, // 70 bad, bad, bad, bad, bad, bad, bad, bad, // 78 bad, bad, bad, bad, bad, bad, bad, bad, // 80 bad, bad, bad, bad, bad, bad, bad, bad, // 88 bad, bad, bad, bad, bad, bad, bad, bad, // 90 bad, bad, bad, bad, bad, bad, bad, bad, // 98 bad, bad, bad, bad, bad, bad, bad, bad, // a0 bad, bad, bad, bad, bad, bad, bad, bad, // a8 bad, bad, bad, LOCKbts_m_r16, bad, bad, bad, bad, // b0 LOCKcmpxchg_m_r8, LOCKcmpxchg_m_r16, bad, LOCKbtr_m_r16, bad, bad, bad, bad, // b8 bad, bad, LOCKGROUP_816, LOCKbtc_m_r16, bad, bad, bad, bad, // c0 LOCKxadd_m_r8, LOCKxadd_m_r16, bad, bad, bad, bad, bad, bad, // c8 bad, bad, bad, bad, bad, bad, bad, bad, // d0 bad, bad, bad, bad, bad, bad, bad, bad, // d8 bad, bad, bad, bad, bad, bad, bad, bad, // e0 bad, bad, bad, bad, bad, bad, bad, bad, // e8 bad, bad, bad, bad, bad, bad, bad, bad, // f0 bad, bad, bad, bad, bad, bad, bad, bad, // f8 bad, bad, bad, bad, bad, bad, bad, bad };