aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar John Ericson <Ericson2314@Yahoo.com> 2016-06-29 18:39:26 -0700
committerGravatar John Ericson <Ericson2314@Yahoo.com> 2016-07-01 14:50:29 -0700
commit4f2f84bb998f904820a66d891af37bd2ba748fdd (patch)
tree8d72ddef3f8fccd8a533b286b5d0c45592ff6c39
parent5de84ea5c3e5e683eb112b9fff52bd86e3e9e817 (diff)
downloadrust-x86-4f2f84bb998f904820a66d891af37bd2ba748fdd.tar.gz
rust-x86-4f2f84bb998f904820a66d891af37bd2ba748fdd.tar.zst
rust-x86-4f2f84bb998f904820a66d891af37bd2ba748fdd.zip
Combine Interface: MSR; libcpu: `let (high, low);` to signal intent
-rw-r--r--src/bits64/mod.rs1
-rw-r--r--src/shared/mod.rs13
-rw-r--r--src/shared/msr.rs (renamed from src/bits64/msr.rs)4
3 files changed, 2 insertions, 16 deletions
diff --git a/src/bits64/mod.rs b/src/bits64/mod.rs
index 63ebac2..4b83c7c 100644
--- a/src/bits64/mod.rs
+++ b/src/bits64/mod.rs
@@ -30,7 +30,6 @@ macro_rules! check_bit_fn {
)
}
-pub mod msr;
pub mod time;
pub mod irq;
pub mod paging;
diff --git a/src/shared/mod.rs b/src/shared/mod.rs
index 167d7d3..6613f54 100644
--- a/src/shared/mod.rs
+++ b/src/shared/mod.rs
@@ -5,6 +5,7 @@ pub mod descriptor;
pub mod dtables;
pub mod io;
pub mod irq;
+pub mod msr;
pub mod paging;
pub mod flags;
pub mod segmentation;
@@ -75,11 +76,6 @@ bitflags!(
}
);
-#[derive(Copy, Clone, PartialEq, Eq)]
-pub enum Msr {
- ApicBase = 0x1B
-}
-
#[inline(always)]
pub fn cpuid(function: u32) -> (u32, u32, u32, u32) {
unsafe {
@@ -97,13 +93,6 @@ pub fn supports() -> Features {
}
}
-#[inline(always)]
-pub unsafe fn read_msr(msr: Msr) -> u64 {
- let (r1, r2): (u32, u32);
- asm!("rdmsr" : "={eax}"(r1), "={edx}"(r2) : "{ecx}"(msr as u32) :: "intel");
- r1 as u64 | ((r2 as u64) << 32)
-}
-
#[derive(Copy, Clone, PartialEq, Eq)]
#[repr(u8)]
pub enum PrivilegeLevel {
diff --git a/src/bits64/msr.rs b/src/shared/msr.rs
index 6b4613a..1520232 100644
--- a/src/bits64/msr.rs
+++ b/src/shared/msr.rs
@@ -10,10 +10,8 @@ pub unsafe fn wrmsr(msr: u32, value: u64) {
/// Read 64 bits msr register.
#[allow(unused_mut)]
pub unsafe fn rdmsr(msr: u32) -> u64 {
- let mut low: u32;
- let mut high: u32;
+ let (high, low): (u32, u32);
asm!("rdmsr" : "={eax}" (low), "={edx}" (high) : "{ecx}" (msr) : "memory" : "volatile");
-
((high as u64) << 32) | (low as u64)
}