aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Gerd Zellweger <mail@gerdzellweger.com> 2021-09-10 13:50:28 -0700
committerGravatar Gerd Zellweger <mail@gerdzellweger.com> 2021-09-10 13:50:28 -0700
commit8de9d1be61545a3bad0ac7316a2df4c7fac9ab98 (patch)
tree729548bb4ec521d6c715f7a1bffe421120c12d66 /src
parent210b66ac4aa52edbe0bb220c53c480ccc0e0463e (diff)
downloadrust-x86-8de9d1be61545a3bad0ac7316a2df4c7fac9ab98.tar.gz
rust-x86-8de9d1be61545a3bad0ac7316a2df4c7fac9ab98.tar.zst
rust-x86-8de9d1be61545a3bad0ac7316a2df4c7fac9ab98.zip
Some more functionality for debugregs.
Diffstat (limited to 'src')
-rw-r--r--src/debugregs.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/debugregs.rs b/src/debugregs.rs
index 2c33612..4d67819 100644
--- a/src/debugregs.rs
+++ b/src/debugregs.rs
@@ -11,6 +11,34 @@
use bit_field::BitField;
use bitflags::bitflags;
+/// An array list of all available breakpoint registers.
+pub const BREAKPOINT_REGS: [Breakpoint; 4] = [
+ Breakpoint::Dr0,
+ Breakpoint::Dr1,
+ Breakpoint::Dr2,
+ Breakpoint::Dr3,
+];
+
+/// Write dr{0-3} register based on provided `reg` enum.
+pub unsafe fn dr_write(reg: Breakpoint, val: usize) {
+ match reg {
+ Breakpoint::Dr0 => dr0_write(val),
+ Breakpoint::Dr1 => dr1_write(val),
+ Breakpoint::Dr2 => dr2_write(val),
+ Breakpoint::Dr3 => dr3_write(val),
+ }
+}
+
+/// Read dr{0-3} register based on provided `reg` enum.
+pub unsafe fn dr(reg: Breakpoint) -> usize {
+ match reg {
+ Breakpoint::Dr0 => dr0(),
+ Breakpoint::Dr1 => dr1(),
+ Breakpoint::Dr2 => dr2(),
+ Breakpoint::Dr3 => dr3(),
+ }
+}
+
/// Read dr0.
///
/// # Safety