aboutsummaryrefslogtreecommitdiff
path: root/src/segmentation.rs
diff options
context:
space:
mode:
authorGravatar Gerd Zellweger <mail@gerdzellweger.com> 2016-05-25 16:06:54 +0200
committerGravatar Gerd Zellweger <mail@gerdzellweger.com> 2016-05-25 16:06:54 +0200
commit4ad3ffd3dac72e663db9cf57a278b5a234ba750d (patch)
treedb32fa0416c1b4b30c124fdb9e9cc581216f8d97 /src/segmentation.rs
parenta43bbeacb6bfc77f61fd6d1e05661808449f2e05 (diff)
parentc4df7e3a58846cad447bfec80b714e73343275b1 (diff)
downloadrust-x86-4ad3ffd3dac72e663db9cf57a278b5a234ba750d.tar.gz
rust-x86-4ad3ffd3dac72e663db9cf57a278b5a234ba750d.tar.zst
rust-x86-4ad3ffd3dac72e663db9cf57a278b5a234ba750d.zip
Merge pull request #12 from phil-opp/patch-2
Add method to retrieve current code segment selector
Diffstat (limited to 'src/segmentation.rs')
-rw-r--r--src/segmentation.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/segmentation.rs b/src/segmentation.rs
index cfda3bd..e3c259e 100644
--- a/src/segmentation.rs
+++ b/src/segmentation.rs
@@ -205,3 +205,10 @@ pub unsafe fn load_cs(sel: SegmentSelector) {
lretq
1:" :: "r" (sel.bits() as u64) : "{rax}" "memory");
}
+
+/// Returns the current value of the code segment register.
+pub fn cs() -> SegmentSelector {
+ let segment: u16;
+ unsafe { asm!("mov %cs, $0" : "=r" (segment) ) };
+ SegmentSelector::from_raw(segment)
+}