aboutsummaryrefslogtreecommitdiff
path: root/src/bits32/segmentation.rs
diff options
context:
space:
mode:
authorGravatar Gerd Zellweger <mail@gerdzellweger.com> 2018-04-20 13:09:28 -0700
committerGravatar Gerd Zellweger <mail@gerdzellweger.com> 2018-04-20 13:09:28 -0700
commit07a1d19da3bc23f171f3f140b0d274851dfc0e20 (patch)
tree6c97a1f6fed87ca88a460c631b3aa706db5f62e8 /src/bits32/segmentation.rs
parenta392747da8e3792da6bb74327142d17a5dece265 (diff)
downloadrust-x86-07a1d19da3bc23f171f3f140b0d274851dfc0e20.tar.gz
rust-x86-07a1d19da3bc23f171f3f140b0d274851dfc0e20.tar.zst
rust-x86-07a1d19da3bc23f171f3f140b0d274851dfc0e20.zip
Make sure 32bit version compiles again.
Signed-off-by: Gerd Zellweger <mail@gerdzellweger.com>
Diffstat (limited to 'src/bits32/segmentation.rs')
-rw-r--r--src/bits32/segmentation.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/bits32/segmentation.rs b/src/bits32/segmentation.rs
index fe95141..6f0fec8 100644
--- a/src/bits32/segmentation.rs
+++ b/src/bits32/segmentation.rs
@@ -11,15 +11,16 @@ use bits32::task::*;
/// to %cs. Instead we push the new segment selector
/// and return value on the stack and use lretl
/// to reload cs and continue at 1:.
+#[cfg(target_arch="x86")]
pub unsafe fn set_cs(sel: SegmentSelector) {
asm!("pushl $0; \
pushl $$1f; \
lretl; \
- 1:" :: "ri" (sel.bits() as usize) : "memory");
+ 1:" :: "ri" (sel.bits() as u32) : "memory");
}
impl SegmentDescriptor {
- pub fn new_memory(base: u32, limit: u32, ty: Type, accessed: bool, dpl: PrivilegeLevel) -> SegmentDescriptor {
+ pub fn new_memory32(base: u32, limit: u32, ty: Type, accessed: bool, dpl: PrivilegeLevel) -> SegmentDescriptor {
let ty1 = descriptor::Type::SegmentDescriptor {
ty: ty,
accessed: accessed,
@@ -29,7 +30,7 @@ impl SegmentDescriptor {
seg
}
- pub fn new_tss(tss: &TaskStateSegment, dpl: PrivilegeLevel) -> SegmentDescriptor {
+ pub fn new_tss32(tss: &TaskStateSegment, dpl: PrivilegeLevel) -> SegmentDescriptor {
let tss_ptr = tss as *const TaskStateSegment;
let ty1 = descriptor::Type::SystemDescriptor {
size: true,