summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-02-27 09:24:10 -0800
committerGabe Black <gblack@eecs.umich.edu>2009-02-27 09:24:10 -0800
commit79bc1b37400ffc4aacfbf19b64aed4c7d568c941 (patch)
tree46ac04ca4ec707ff863a4fe8db1b4e0be483b768 /src/arch
parent3dfa564e70e4804ef118ba94c81233fb85f56ba2 (diff)
downloadgem5-79bc1b37400ffc4aacfbf19b64aed4c7d568c941.tar.xz
X86: Fix a decoder bug and add in some missing instructions.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/isa/decoder/two_byte_opcodes.isa25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index 9c376e2c4..64920bcbd 100644
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
@@ -829,20 +829,25 @@
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();
}
}