blob: 40fdc2c290cdf70bed3d3cc83e491bcebd0fd883 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//! Helpers to program the task state segment.
//! See Intel 3a, Chapter 7
pub use crate::segmentation;
/// Returns the current value of the task register.
pub fn tr() -> segmentation::SegmentSelector {
let segment: u16;
unsafe { llvm_asm!("str $0" : "=r" (segment) ) };
segmentation::SegmentSelector::from_raw(segment)
}
/// Loads the task register.
pub unsafe fn load_tr(sel: segmentation::SegmentSelector) {
llvm_asm!("ltr $0" :: "r" (sel.bits()));
}
|