diff options
Diffstat (limited to 'src/arch/x86/isa/decoder/one_byte_opcodes.isa')
-rw-r--r-- | src/arch/x86/isa/decoder/one_byte_opcodes.isa | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/arch/x86/isa/decoder/one_byte_opcodes.isa b/src/arch/x86/isa/decoder/one_byte_opcodes.isa index 62b8c8d59..0d1d7aacd 100644 --- a/src/arch/x86/isa/decoder/one_byte_opcodes.isa +++ b/src/arch/x86/isa/decoder/one_byte_opcodes.isa @@ -292,9 +292,21 @@ 0x1: MOV(Ev,Gv); 0x2: MOV(Gb,Eb); 0x3: MOV(Gv,Ev); - 0x4: WarnUnimpl::mov_MwRv_Sw(); //What to do with this one? + 0x4: decode MODRM_REG { + 0x0, 0x1, 0x2, + 0x3, 0x4, 0x5: MOV(Ev,Sv); + } 0x5: LEA(Gv,M); - 0x6: WarnUnimpl::mov_Sw_MwRv(); + 0x6: decode MODE_SUBMODE { + 0x3, 0x4: MOV_REAL(Sv,Ev); + default: decode MODRM_REG { + 0x1: UD2(); // Moving to the CS selector is illegal. + 0x2: MOVSS(Sv,Ev); + 0x0, 0x3, + 0x4, 0x5: MOV(Sv,Ev); + default: UD2(); + } + } //0x7: group10_Ev(); 0x7: decode MODRM_REG { 0x0: POP(Ev); |