diff --git a/src/cpu/core_full/load.h b/src/cpu/core_full/load.h index d5b7987b..74009c6f 100644 --- a/src/cpu/core_full/load.h +++ b/src/cpu/core_full/load.h @@ -526,6 +526,9 @@ l_M_Ed: LEAVECORE; CPU_HLT(IPPoint-inst.opcode_start); return CBRET_NONE; + case D_CLTS: + //TODO Really clear it sometime + goto nextopcode; default: LOG(LOG_CPU,LOG_ERROR)("LOAD:Unhandled code %d opcode %X",inst.code.load,inst.entry); break; diff --git a/src/cpu/core_full/optable.h b/src/cpu/core_full/optable.h index 7b24e956..fdd3454a 100644 --- a/src/cpu/core_full/optable.h +++ b/src/cpu/core_full/optable.h @@ -184,7 +184,7 @@ static OpCode OpCodeTable[1024]={ {L_MODRM ,O_GRP6w ,S_Ew ,M_Ew },{L_MODRM ,O_GRP7w ,S_Ew ,M_Ew }, {L_MODRM ,O_LAR ,S_Gw ,M_Ew },{L_MODRM ,O_LSL ,S_Gw ,M_Ew }, {0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, -{0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, +{D_CLTS ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, /* 0x108 - 0x10f */ {0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, {0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, @@ -540,7 +540,7 @@ static OpCode OpCodeTable[1024]={ {L_MODRM ,O_GRP6d ,S_Ew ,M_Ew },{L_MODRM ,O_GRP7d ,S_Ew ,M_Ew }, {L_MODRM ,O_LAR ,S_Gd ,M_Ew },{L_MODRM ,O_LSL ,S_Gd ,M_Ew }, {0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, -{0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, +{D_CLTS ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, /* 0x308 - 0x30f */ {0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, {0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 }, diff --git a/src/cpu/core_full/support.h b/src/cpu/core_full/support.h index d3e94623..9306928c 100644 --- a/src/cpu/core_full/support.h +++ b/src/cpu/core_full/support.h @@ -38,12 +38,12 @@ enum { D_NOP,D_WAIT, D_ENTERw,D_ENTERd, D_LEAVEw,D_LEAVEd, - L_ERROR, - + D_RETFw,D_RETFd, D_RETFwIw,D_RETFdIw, D_CPUID, - D_HLT, + D_HLT,D_CLTS, + L_ERROR, };