Skip to content

Commit e539632

Browse files
authored
Merge pull request #178 from rust-osdev/fix_const_item_mutation
Fix const_item_mutation warnings added in latest Rust nightly
2 parents ebc02e1 + d7e3f57 commit e539632

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

src/registers/model_specific.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ mod x86_64 {
189189
/// break memory safety with wrong flags, e.g. by disabling long mode.
190190
#[inline]
191191
pub unsafe fn write_raw(flags: u64) {
192-
Self::MSR.write(flags);
192+
let mut msr = Self::MSR;
193+
msr.write(flags);
193194
}
194195

195196
/// Update EFER flags.
@@ -221,7 +222,8 @@ mod x86_64 {
221222
/// Write a given virtual address to the FS.Base register.
222223
#[inline]
223224
pub fn write(address: VirtAddr) {
224-
unsafe { Self::MSR.write(address.as_u64()) };
225+
let mut msr = Self::MSR;
226+
unsafe { msr.write(address.as_u64()) };
225227
}
226228
}
227229

@@ -235,7 +237,8 @@ mod x86_64 {
235237
/// Write a given virtual address to the GS.Base register.
236238
#[inline]
237239
pub fn write(address: VirtAddr) {
238-
unsafe { Self::MSR.write(address.as_u64()) };
240+
let mut msr = Self::MSR;
241+
unsafe { msr.write(address.as_u64()) };
239242
}
240243
}
241244

@@ -249,7 +252,8 @@ mod x86_64 {
249252
/// Write a given virtual address to the KernelGsBase register.
250253
#[inline]
251254
pub fn write(address: VirtAddr) {
252-
unsafe { Self::MSR.write(address.as_u64()) };
255+
let mut msr = Self::MSR;
256+
unsafe { msr.write(address.as_u64()) };
253257
}
254258
}
255259

@@ -316,7 +320,8 @@ mod x86_64 {
316320
let mut msr_value = 0u64;
317321
msr_value.set_bits(48..64, sysret.into());
318322
msr_value.set_bits(32..48, syscall.into());
319-
Self::MSR.write(msr_value);
323+
let mut msr = Self::MSR;
324+
msr.write(msr_value);
320325
}
321326

322327
/// Write the Ring 0 and Ring 3 segment bases.
@@ -366,7 +371,8 @@ mod x86_64 {
366371
/// This holds the target RIP of a syscall.
367372
#[inline]
368373
pub fn write(address: VirtAddr) {
369-
unsafe { Self::MSR.write(address.as_u64()) };
374+
let mut msr = Self::MSR;
375+
unsafe { msr.write(address.as_u64()) };
370376
}
371377
}
372378

@@ -392,7 +398,8 @@ mod x86_64 {
392398
/// to 0, the corresponding rFLAGS bit is not modified.
393399
#[inline]
394400
pub fn write(value: RFlags) {
395-
unsafe { Self::MSR.write(value.bits()) };
401+
let mut msr = Self::MSR;
402+
unsafe { msr.write(value.bits()) };
396403
}
397404
}
398405
}

0 commit comments

Comments
 (0)