x86-64: fix some loop {}s
This commit is contained in:
parent
399e9531e7
commit
5351ccf038
@ -15,7 +15,7 @@ use crate::{
|
|||||||
mem::{
|
mem::{
|
||||||
address::{FromRaw, IntoRaw, KernelImageObject},
|
address::{FromRaw, IntoRaw, KernelImageObject},
|
||||||
device::RawDeviceMemoryMapping,
|
device::RawDeviceMemoryMapping,
|
||||||
table::{EntryLevel, KernelAddressSpace, MapAttributes},
|
table::EntryLevel,
|
||||||
PhysicalAddress, KERNEL_VIRT_OFFSET,
|
PhysicalAddress, KERNEL_VIRT_OFFSET,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -96,12 +96,12 @@ unsafe fn map_early_pages(physical: PhysicalAddress, count: usize) -> Result<usi
|
|||||||
return Ok(EARLY_MAPPING_OFFSET + l3i * L3::SIZE);
|
return Ok(EARLY_MAPPING_OFFSET + l3i * L3::SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
loop {}
|
Err(Error::OutOfMemory)
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn unmap_early_page(address: usize) {
|
unsafe fn unmap_early_page(address: usize) {
|
||||||
if address < EARLY_MAPPING_OFFSET || address >= EARLY_MAPPING_OFFSET + L2::SIZE {
|
if address < EARLY_MAPPING_OFFSET || address >= EARLY_MAPPING_OFFSET + L2::SIZE {
|
||||||
loop {}
|
panic!("Tried to unmap invalid early mapping: {:#x}", address);
|
||||||
}
|
}
|
||||||
|
|
||||||
let l3i = L3::index(address - EARLY_MAPPING_OFFSET);
|
let l3i = L3::index(address - EARLY_MAPPING_OFFSET);
|
||||||
@ -135,7 +135,8 @@ unsafe fn map_device_memory_l3(base: PhysicalAddress, count: usize) -> Result<us
|
|||||||
|
|
||||||
return Ok(DEVICE_MAPPING_OFFSET + i * L3::SIZE);
|
return Ok(DEVICE_MAPPING_OFFSET + i * L3::SIZE);
|
||||||
}
|
}
|
||||||
loop {}
|
|
||||||
|
Err(Error::OutOfMemory)
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn map_device_memory_l2(base: PhysicalAddress, count: usize) -> Result<usize, Error> {
|
unsafe fn map_device_memory_l2(base: PhysicalAddress, count: usize) -> Result<usize, Error> {
|
||||||
@ -159,7 +160,8 @@ unsafe fn map_device_memory_l2(base: PhysicalAddress, count: usize) -> Result<us
|
|||||||
);
|
);
|
||||||
return Ok(DEVICE_MAPPING_OFFSET + i * L2::SIZE);
|
return Ok(DEVICE_MAPPING_OFFSET + i * L2::SIZE);
|
||||||
}
|
}
|
||||||
loop {}
|
|
||||||
|
Err(Error::OutOfMemory)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) unsafe fn map_device_memory(
|
pub(super) unsafe fn map_device_memory(
|
||||||
@ -226,12 +228,12 @@ pub(super) unsafe fn unmap_device_memory(map: &RawDeviceMemoryMapping) {
|
|||||||
|
|
||||||
pub(super) unsafe fn map_heap_block(index: usize, page: PhysicalAddress) {
|
pub(super) unsafe fn map_heap_block(index: usize, page: PhysicalAddress) {
|
||||||
if L2::page_offset(page.into_raw()) != 0 {
|
if L2::page_offset(page.into_raw()) != 0 {
|
||||||
loop {}
|
panic!("Attempted to map a misaligned 2MiB page");
|
||||||
}
|
}
|
||||||
assert!(index < 512);
|
assert!(index < 512);
|
||||||
|
|
||||||
if HEAP_MAPPING_L2[index].is_present() {
|
if HEAP_MAPPING_L2[index].is_present() {
|
||||||
loop {}
|
panic!("Page is already mappged: {:#x}", page);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO NX
|
// TODO NX
|
||||||
|
@ -173,7 +173,10 @@ impl Architecture for X86_64 {
|
|||||||
let end_l1i = (IntoRaw::<usize>::into_raw(memory_end) + (1 << 30) - 1) >> 30;
|
let end_l1i = (IntoRaw::<usize>::into_raw(memory_end) + (1 << 30) - 1) >> 30;
|
||||||
|
|
||||||
if end_l1i > 512 {
|
if end_l1i > 512 {
|
||||||
loop {}
|
todo!(
|
||||||
|
"Cannot handle {}GiB of RAM",
|
||||||
|
end_l1i * L1::SIZE / (1024 * 1024 * 1024)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
MEMORY_LIMIT.init(memory_end.into_raw());
|
MEMORY_LIMIT.init(memory_end.into_raw());
|
||||||
@ -196,7 +199,7 @@ impl Architecture for X86_64 {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
loop {}
|
todo!();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,7 +238,7 @@ impl Architecture for X86_64 {
|
|||||||
|
|
||||||
impl X86_64 {
|
impl X86_64 {
|
||||||
unsafe fn handle_ipi(&self, msg: CpuMessage) {
|
unsafe fn handle_ipi(&self, msg: CpuMessage) {
|
||||||
loop {}
|
todo!()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_boot_data(&self, data: BootData) {
|
fn set_boot_data(&self, data: BootData) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user