Use core::ptr wrappers instead of the unstable volatile_* intrinsics

This commit is contained in:
bjorn3
2023-07-04 16:17:45 +02:00
parent 6803c2c33c
commit 0d01f7be57
5 changed files with 19 additions and 19 deletions
+5 -5
View File
@@ -1,6 +1,6 @@
use core::{mem, ptr};
use core::intrinsics::{volatile_load, volatile_store};
use core::ptr::{read_volatile, write_volatile};
use crate::memory::Frame;
use crate::paging::{KernelMapper, PhysicalAddress, PageFlags};
@@ -82,11 +82,11 @@ impl GenericAddressStructure {
}
pub unsafe fn read_u64(&self, offset: usize) -> u64{
volatile_load((crate::HPET_OFFSET + offset) as *const u64)
read_volatile((crate::HPET_OFFSET + offset) as *const u64)
}
pub unsafe fn write_u64(&mut self, offset: usize, value: u64) {
volatile_store((crate::HPET_OFFSET + offset) as *mut u64, value);
write_volatile((crate::HPET_OFFSET + offset) as *mut u64, value);
}
}
@@ -103,10 +103,10 @@ impl GenericAddressStructure {
}
pub unsafe fn read_u64(&self, offset: usize) -> u64{
volatile_load((self.address as usize + offset + crate::PHYS_OFFSET) as *const u64)
read_volatile((self.address as usize + offset + crate::PHYS_OFFSET) as *const u64)
}
pub unsafe fn write_u64(&mut self, offset: usize, value: u64) {
volatile_store((self.address as usize + offset + crate::PHYS_OFFSET) as *mut u64, value);
write_volatile((self.address as usize + offset + crate::PHYS_OFFSET) as *mut u64, value);
}
}
+5 -5
View File
@@ -1,4 +1,4 @@
use core::intrinsics::{volatile_load, volatile_store};
use core::ptr::{read_volatile, write_volatile};
use crate::memory::Frame;
use crate::paging::{KernelMapper, PhysicalAddress, Page, PageFlags, TableKind, VirtualAddress};
@@ -149,12 +149,12 @@ impl GicDistIf {
}
unsafe fn read(&self, reg: u32) -> u32 {
let val = volatile_load((self.address + reg as usize) as *const u32);
let val = read_volatile((self.address + reg as usize) as *const u32);
val
}
unsafe fn write(&mut self, reg: u32, value: u32) {
volatile_store((self.address + reg as usize) as *mut u32, value);
write_volatile((self.address + reg as usize) as *mut u32, value);
}
}
@@ -179,11 +179,11 @@ impl GicCpuIf {
}
unsafe fn read(&self, reg: u32) -> u32 {
let val = volatile_load((self.address + reg as usize) as *const u32);
let val = read_volatile((self.address + reg as usize) as *const u32);
val
}
unsafe fn write(&mut self, reg: u32, value: u32) {
volatile_store((self.address + reg as usize) as *mut u32, value);
write_volatile((self.address + reg as usize) as *mut u32, value);
}
}
+3 -3
View File
@@ -1,4 +1,4 @@
use core::intrinsics::{volatile_load, volatile_store};
use core::ptr::{read_volatile, write_volatile};
use crate::memory::Frame;
use crate::paging::{KernelMapper, PhysicalAddress, Page, PageFlags, TableKind, VirtualAddress};
@@ -47,12 +47,12 @@ impl Pl031rtc {
}
unsafe fn read(&self, reg: u32) -> u32 {
let val = volatile_load((self.address + reg as usize) as *const u32);
let val = read_volatile((self.address + reg as usize) as *const u32);
val
}
unsafe fn write(&mut self, reg: u32, value: u32) {
volatile_store((self.address + reg as usize) as *mut u32, value);
write_volatile((self.address + reg as usize) as *mut u32, value);
}
pub fn time(&mut self) -> u64 {
+3 -3
View File
@@ -1,5 +1,5 @@
use core::sync::atomic::{self, AtomicU32};
use core::intrinsics::{volatile_load, volatile_store};
use core::ptr::{read_volatile, write_volatile};
use x86::msr::*;
use crate::paging::{KernelMapper, PhysicalAddress, PageFlags, RmmA, RmmArch, VirtualAddress};
@@ -84,11 +84,11 @@ impl LocalApic {
}
unsafe fn read(&self, reg: u32) -> u32 {
volatile_load((self.address + reg as usize) as *const u32)
read_volatile((self.address + reg as usize) as *const u32)
}
unsafe fn write(&mut self, reg: u32, value: u32) {
volatile_store((self.address + reg as usize) as *mut u32, value);
write_volatile((self.address + reg as usize) as *mut u32, value);
}
pub fn id(&self) -> u32 {
+3 -3
View File
@@ -1,5 +1,5 @@
use core::sync::atomic::{self, AtomicU64};
use core::intrinsics::{volatile_load, volatile_store};
use core::ptr::{read_volatile, write_volatile};
use x86::msr::*;
use crate::paging::{KernelMapper, PhysicalAddress, PageFlags, RmmA, RmmArch};
@@ -84,11 +84,11 @@ impl LocalApic {
}
unsafe fn read(&self, reg: u32) -> u32 {
volatile_load((self.address + reg as usize) as *const u32)
read_volatile((self.address + reg as usize) as *const u32)
}
unsafe fn write(&mut self, reg: u32, value: u32) {
volatile_store((self.address + reg as usize) as *mut u32, value);
write_volatile((self.address + reg as usize) as *mut u32, value);
}
pub fn id(&self) -> u32 {