Add new x86 instruction groups

- VM: Virtual Machine
- INT: Interrupts
- IRET: Interupt returns
- CALL: Subroutine call
- RET: Subroutine return

Includes a special case for writes to port 0xb2, which triggers an SMI
diff --git a/include/x86.h b/include/x86.h
index 116d9b1..d27ddf8 100644
--- a/include/x86.h
+++ b/include/x86.h
@@ -62,7 +62,7 @@
 	X86_REG_R12B, X86_REG_R13B, X86_REG_R14B, X86_REG_R15B, X86_REG_R8D,
 	X86_REG_R9D, X86_REG_R10D, X86_REG_R11D, X86_REG_R12D, X86_REG_R13D,
 	X86_REG_R14D, X86_REG_R15D, X86_REG_R8W, X86_REG_R9W, X86_REG_R10W,
-	X86_REG_R11W, X86_REG_R12W, X86_REG_R13W, X86_REG_R14W, X86_REG_R15W, 
+	X86_REG_R11W, X86_REG_R12W, X86_REG_R13W, X86_REG_R14W, X86_REG_R15W,
 
 	X86_REG_MAX		// <-- mark the end of the list of registers
 } x86_reg;
@@ -141,7 +141,7 @@
 	// SIB base register, or X86_REG_INVALID when irrelevant.
 	x86_reg sib_base;
 
-	// Number of operands of this instruction, 
+	// Number of operands of this instruction,
 	// or 0 when instruction has no operand.
 	uint8_t op_count;
 
@@ -1454,6 +1454,11 @@
 	X86_GRP_NOT64BITMODE,
 
 	X86_GRP_JUMP,	// all jump instructions (conditional+direct+indirect jumps)
+	X86_GRP_VM,	// all virtualization instructions (VT-x + AMD-V)
+	X86_GRP_INT,	// all interrupt instructions (int+syscall)
+	X86_GRP_IRET,	// all interrupt return instructions
+	X86_GRP_CALL,	// all call instructions
+	X86_GRP_RET,	// all call return instructions
 
 	X86_GRP_MAX
 } x86_insn_group;