/*++ Copyright (c) 1995 Microsoft Corporation Module Name: lds32tbl.c Abstract: Dispatch table for 32bit instructions with the LOCK prefix. 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 "dwordfns.h" #include "miscfns.h" #include "floatfns.h" pfnDispatchInstruction LockDispatch32[256] = { // 0 LOCKadd_m_r8, LOCKadd_m_r32, LOCKadd_r_m8, LOCKadd_r_m32, bad, bad, bad, bad, // 8 LOCKor_m_r8, LOCKor_m_r32, LOCKor_r_m8, LOCKor_r_m32, bad, bad, bad, LOCKdispatch232, // 10 LOCKadc_m_r8, LOCKadc_m_r32, LOCKadc_r_m8, LOCKadc_r_m32, bad, bad, bad, bad, // 18 LOCKsbb_m_r8, LOCKsbb_m_r32, LOCKsbb_r_m8, LOCKsbb_r_m32, bad, bad, bad, bad, // 20 LOCKand_m_r8, LOCKand_m_r32, LOCKand_r_m8, LOCKand_r_m32, bad, bad, bad, bad, // 28 LOCKsub_m_r8, LOCKsub_m_r32, LOCKsub_r_m8, LOCKsub_r_m32, bad, bad, bad, bad, // 30 LOCKxor_m_r8, LOCKxor_m_r32, LOCKxor_r_m8, LOCKxor_r_m32, 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_132, bad, LOCKGROUP_1WS32, bad, bad, xchg_r_m8, xchg_r_m32, // 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_332, // f8 bad, bad, bad, bad, bad, bad, bad, LOCKGROUP_532, }; pfnDispatchInstruction LockDispatch232[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_r32, bad, bad, bad, bad, // b0 LOCKcmpxchg_m_r8, LOCKcmpxchg_m_r32, bad, LOCKbtr_m_r32, bad, bad, bad, bad, // b8 bad, bad, LOCKGROUP_832, LOCKbtc_m_r32, bad, bad, bad, bad, // c0 LOCKxadd_m_r8, LOCKxadd_m_r32, bad, bad, bad, bad, bad, LOCKcmpxchg8b, // 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 };