X86: Fix a decoder bug and add in some missing instructions.
authorGabe Black <gblack@eecs.umich.edu>
Fri, 27 Feb 2009 17:24:10 +0000 (09:24 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Fri, 27 Feb 2009 17:24:10 +0000 (09:24 -0800)
src/arch/x86/isa/decoder/two_byte_opcodes.isa

index 9c376e2c4ed233061e3b53ff16a2873b7929bc89..64920bcbdcc8ab45a77770187586490d5e5be815 100644 (file)
                 0x4: shrd_Ev_Gv_Ib();
                 0x5: shrd_Ev_Gv_rCl();
                 //0x6: group16();
-                0x6: decode MODRM_MOD {
-                    0x3: decode MODRM_REG {
-                        0x5: BasicOperate::LFENCE(
+                0x6: decode MODRM_REG {
+                    0x0: fxsave();
+                    0x1: fxrstor();
+                    0x2: ldmxcsr();
+                    0x3: stmxcsr();
+                    0x4: Inst::UD2();
+                    0x5: decode MODRM_MOD {
+                        0x3: BasicOperate::LFENCE(
                                      {{/*Nothing*/}}, IsReadBarrier);
-                        0x6: BasicOperate::MFENCE(
+                        default: Inst::UD2();
+                    }
+                    0x6: decode MODRM_MOD {
+                        0x3: BasicOperate::MFENCE(
                                      {{/*Nothing*/}}, IsMemBarrier);
-                        0x7: BasicOperate::SFENCE(
-                                     {{/*Nothing*/}}, IsWriteBarrier);
                         default: Inst::UD2();
                     }
-                    default: decode MODRM_REG {
-                        0x0: fxsave();
-                        0x1: fxrstor();
-                        0x7: clflush();
+                    0x7: decode MODRM_MOD {
+                        0x3: BasicOperate::SFENCE(
+                                     {{/*Nothing*/}}, IsWriteBarrier);
                         default: Inst::UD2();
                     }
                 }