aboutsummaryrefslogtreecommitdiff
path: root/src/bits64/rflags.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bits64/rflags.rs')
-rw-r--r--src/bits64/rflags.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/bits64/rflags.rs b/src/bits64/rflags.rs
new file mode 100644
index 0000000..7cf4bbd
--- /dev/null
+++ b/src/bits64/rflags.rs
@@ -0,0 +1,56 @@
+//! Description of RFlag values that store the results of operations and the state of the processor.
+
+/// RFLAGS description.
+bitflags! {
+ pub flags RFlags: u64 {
+ /// ID Flag (ID)
+ const RFLAGS_ID = 1 << 21,
+ /// Virtual Interrupt Pending (VIP)
+ const RFLAGS_VIP = 1 << 20,
+ /// Virtual Interrupt Flag (VIF)
+ const RFLAGS_VIF = 1 << 19,
+ /// Alignment Check (AC)
+ const RFLAGS_AC = 1 << 18,
+ /// Virtual-8086 Mode (VM)
+ const RFLAGS_VM = 1 << 17,
+ /// Resume Flag (RF)
+ const RFLAGS_RF = 1 << 16,
+ /// Nested Task (NT)
+ const RFLAGS_NT = 1 << 14,
+ /// I/O Privilege Level (IOPL) 0
+ const RFLAGS_IOPL0 = 0 << 12,
+ /// I/O Privilege Level (IOPL) 1
+ const RFLAGS_IOPL1 = 1 << 12,
+ /// I/O Privilege Level (IOPL) 2
+ const RFLAGS_IOPL2 = 2 << 12,
+ /// I/O Privilege Level (IOPL) 3
+ const RFLAGS_IOPL3 = 3 << 12,
+ /// Overflow Flag (OF)
+ const RFLAGS_OF = 1 << 11,
+ /// Direction Flag (DF)
+ const RFLAGS_DF = 1 << 10,
+ /// Interrupt Enable Flag (IF)
+ const RFLAGS_IF = 1 << 9,
+ /// Trap Flag (TF)
+ const RFLAGS_TF = 1 << 8,
+ /// Sign Flag (SF)
+ const RFLAGS_SF = 1 << 7,
+ /// Zero Flag (ZF)
+ const RFLAGS_ZF = 1 << 6,
+ /// Auxiliary Carry Flag (AF)
+ const RFLAGS_AF = 1 << 4,
+ /// Parity Flag (PF)
+ const RFLAGS_PF = 1 << 2,
+ /// Bit 1 is always 1.
+ const RFLAGS_A1 = 1 << 1,
+ /// Carry Flag (CF)
+ const RFLAGS_CF = 1 << 0,
+ }
+}
+
+impl RFlags {
+ /// Creates a new RFlags entry. Ensures bit 1 is set.
+ pub fn new() -> RFlags {
+ RFLAGS_A1
+ }
+}