diff options
| -rw-r--r-- | src/long_mode/display.rs | 2 | ||||
| -rw-r--r-- | src/long_mode/mod.rs | 4 | ||||
| -rw-r--r-- | src/protected_mode/display.rs | 2 | ||||
| -rw-r--r-- | src/protected_mode/mod.rs | 1 | ||||
| -rw-r--r-- | test/long_mode/mod.rs | 2 | 
5 files changed, 10 insertions, 1 deletions
diff --git a/src/long_mode/display.rs b/src/long_mode/display.rs index 049b96d..5f74a3e 100644 --- a/src/long_mode/display.rs +++ b/src/long_mode/display.rs @@ -598,6 +598,7 @@ const MNEMONICS: &[&'static str] = &[      "vmlaunch",      "vmresume",      "vmxoff", +    "pconfig",      "monitor",      "mwait",      "monitorx", @@ -3131,6 +3132,7 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {              Opcode::VMSAVE |              Opcode::VMRUN |              Opcode::VMXOFF | +            Opcode::PCONFIG |              Opcode::MONITOR |              Opcode::MWAIT |              Opcode::MONITORX | diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index 41e24e6..125716f 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -1295,6 +1295,7 @@ pub enum Opcode {      VMLAUNCH,      VMRESUME,      VMXOFF, +    PCONFIG,      MONITOR,      MWAIT,      MONITORX, @@ -9157,6 +9158,9 @@ fn unlikely_operands<T: Reader<<Arch as yaxpeax_arch::Arch>::Address, <Arch as y                          0b100 => {                              instruction.opcode = Opcode::VMXOFF;                          }, +                        0b101 => { +                            instruction.opcode = Opcode::PCONFIG; +                        },                          _ => {                              return Err(DecodeError::InvalidOpcode);                          } diff --git a/src/protected_mode/display.rs b/src/protected_mode/display.rs index 0736fc1..4f784d6 100644 --- a/src/protected_mode/display.rs +++ b/src/protected_mode/display.rs @@ -589,6 +589,7 @@ const MNEMONICS: &[&'static str] = &[      "vmlaunch",      "vmresume",      "vmxoff", +    "pconfig",      "monitor",      "mwait",      "monitorx", @@ -3142,6 +3143,7 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {              Opcode::VMSAVE |              Opcode::VMRUN |              Opcode::VMXOFF | +            Opcode::PCONFIG |              Opcode::MONITOR |              Opcode::MWAIT |              Opcode::MONITORX | diff --git a/src/protected_mode/mod.rs b/src/protected_mode/mod.rs index a1aac3f..46321d1 100644 --- a/src/protected_mode/mod.rs +++ b/src/protected_mode/mod.rs @@ -1213,6 +1213,7 @@ pub enum Opcode {      VMLAUNCH,      VMRESUME,      VMXOFF, +    PCONFIG,      MONITOR,      MWAIT,      MONITORX, diff --git a/test/long_mode/mod.rs b/test/long_mode/mod.rs index 1eedfec..98fc8b6 100644 --- a/test/long_mode/mod.rs +++ b/test/long_mode/mod.rs @@ -865,7 +865,7 @@ fn test_0f01() {      test_display(&[0x0f, 0x01, 0xc2], "vmlaunch");      test_display(&[0x0f, 0x01, 0xc3], "vmresume");      test_display(&[0x0f, 0x01, 0xc4], "vmxoff"); -    test_invalid(&[0x0f, 0x01, 0xc5]); // TODO: TME would make this `pconfig` +    test_display(&[0x0f, 0x01, 0xc5], "pconfig");      test_invalid(&[0x0f, 0x01, 0xc6]);      test_invalid(&[0x0f, 0x01, 0xc7]);      test_display(&[0x0f, 0x01, 0xc8], "monitor");  | 
