diff options
author | 2016-05-24 17:19:30 +0200 | |
---|---|---|
committer | 2016-05-24 17:22:30 +0200 | |
commit | c4df7e3a58846cad447bfec80b714e73343275b1 (patch) | |
tree | 213d403f8d751721276905f67150ae21397156c3 /src/segmentation.rs | |
parent | 77a4064e9bd21e8b711aa41c69437c061edce42c (diff) | |
download | rust-x86-c4df7e3a58846cad447bfec80b714e73343275b1.tar.gz rust-x86-c4df7e3a58846cad447bfec80b714e73343275b1.tar.zst rust-x86-c4df7e3a58846cad447bfec80b714e73343275b1.zip |
Add method to retrieve current code segment selector
Diffstat (limited to 'src/segmentation.rs')
-rw-r--r-- | src/segmentation.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/segmentation.rs b/src/segmentation.rs index 0a7ee15..933251e 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) +} |