Skip to content

Commit b2a28b3

Browse files
authored
Merge pull request #2370 from hermit-os/rm-load_info
feat: don't use explicit load info from loader
2 parents 48c4862 + b462492 commit b2a28b3

16 files changed

Lines changed: 268 additions & 70 deletions

File tree

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ build-time = "0.1.3"
295295
crossbeam-utils = { version = "0.8", default-features = false }
296296
delegate = "0.13"
297297
document-features = { version = "0.2", optional = true }
298+
elf = { version = "0.8", default-features = false }
298299
embedded-io = { version = "0.7", features = ["alloc"] }
299300
endian-num = { version = "0.2", optional = true, features = ["linux-types"] }
300301
enum_dispatch = "0.3"

src/arch/aarch64/kernel/interrupts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use free_list::PageLayout;
1414
use hashbrown::HashMap;
1515
use hermit_sync::{InterruptSpinMutex, InterruptTicketMutex, OnceCell, SpinMutex};
1616
use memory_addresses::VirtAddr;
17-
use memory_addresses::arch::aarch64::PhysAddr;
17+
use memory_addresses::PhysAddr;
1818

1919
use crate::arch::aarch64::kernel::core_local::increment_irq_counter;
2020
use crate::arch::aarch64::kernel::scheduler::State;

src/arch/aarch64/kernel/mod.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use core::arch::global_asm;
1818
use core::sync::atomic::{AtomicPtr, AtomicU32, Ordering};
1919
use core::{ptr, str};
2020

21-
use memory_addresses::arch::aarch64::{PhysAddr, VirtAddr};
21+
use memory_addresses::PhysAddr;
2222

2323
use crate::arch::aarch64::kernel::core_local::*;
2424
use crate::arch::aarch64::mm::paging::{BasePageSize, PageSize};
@@ -46,15 +46,6 @@ pub fn get_ram_address() -> PhysAddr {
4646
PhysAddr::new(env::boot_info().hardware_info.phys_addr_range.start)
4747
}
4848

49-
pub fn get_base_address() -> VirtAddr {
50-
VirtAddr::new(env::boot_info().load_info.kernel_image_addr_range.start)
51-
}
52-
53-
pub fn get_image_size() -> usize {
54-
let range = &env::boot_info().load_info.kernel_image_addr_range;
55-
(range.end - range.start) as usize
56-
}
57-
5849
pub fn get_limit() -> usize {
5950
env::boot_info().hardware_info.phys_addr_range.end as usize
6051
}
@@ -131,6 +122,8 @@ pub fn boot_next_processor() {
131122
use core::arch::asm;
132123
use core::hint::spin_loop;
133124

125+
use memory_addresses::VirtAddr;
126+
134127
use crate::kernel::start::{TTBR0, smp_start};
135128
use crate::mm::virtual_to_physical;
136129

src/arch/aarch64/kernel/pci.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use bit_field::BitField;
55
use fdt::Fdt;
66
use fdt::node::FdtNode;
77
use free_list::PageLayout;
8-
use memory_addresses::arch::aarch64::{PhysAddr, VirtAddr};
8+
use memory_addresses::{PhysAddr, VirtAddr};
99
use pci_types::{
1010
Bar, CommandRegister, ConfigRegionAccess, InterruptLine, InterruptPin, MAX_BARS, PciAddress,
1111
PciHeader,

src/arch/aarch64/kernel/scheduler.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use aarch64_cpu::asm::barrier::{SY, isb};
88
use aarch64_cpu::registers::*;
99
use align_address::Align;
1010
use free_list::{PageLayout, PageRange};
11-
use memory_addresses::arch::aarch64::{PhysAddr, VirtAddr};
11+
use memory_addresses::{PhysAddr, VirtAddr};
1212

1313
use crate::arch::aarch64::kernel::CURRENT_STACK_ADDRESS;
1414
use crate::arch::aarch64::kernel::core_local::core_scheduler;

src/arch/aarch64/kernel/systemtime.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use core::arch::asm;
33
use free_list::PageLayout;
44
use hermit_entry::boot_info::PlatformInfo;
55
use hermit_sync::OnceCell;
6-
use memory_addresses::arch::aarch64::{PhysAddr, VirtAddr};
6+
use memory_addresses::{PhysAddr, VirtAddr};
77
use time::OffsetDateTime;
88

99
use crate::arch::aarch64::mm::paging::{self, BasePageSize, PageSize, PageTableEntryFlags};

src/arch/aarch64/mm/paging.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use align_address::Align;
88
use free_list::PageLayout;
99
use memory_addresses::{PhysAddr, VirtAddr};
1010

11-
use crate::arch::aarch64::kernel::get_ram_address;
11+
use crate::env::get_ram_address;
1212
use crate::mm::{FrameAlloc, PageRangeAllocator};
1313

1414
/// Pointer to the root page table (called "Level 0" in ARM terminology).

src/arch/riscv64/kernel/mod.rs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use core::ptr;
1616
use core::sync::atomic::{AtomicPtr, AtomicU32, AtomicU64, Ordering};
1717

1818
use free_list::PageLayout;
19-
use memory_addresses::{PhysAddr, VirtAddr};
19+
use memory_addresses::PhysAddr;
2020
use riscv::register::sstatus;
2121

2222
use crate::arch::riscv64::kernel::core_local::core_id;
@@ -48,11 +48,6 @@ pub fn get_ram_address() -> PhysAddr {
4848
PhysAddr::new(env::boot_info().hardware_info.phys_addr_range.start)
4949
}
5050

51-
pub fn get_image_size() -> usize {
52-
(env::boot_info().load_info.kernel_image_addr_range.end
53-
- env::boot_info().load_info.kernel_image_addr_range.start) as usize
54-
}
55-
5651
pub fn get_limit() -> usize {
5752
(env::boot_info().hardware_info.phys_addr_range.end
5853
- env::boot_info().hardware_info.phys_addr_range.start) as usize
@@ -73,10 +68,6 @@ pub fn get_processor_count() -> u32 {
7368
1
7469
}
7570

76-
pub fn get_base_address() -> VirtAddr {
77-
VirtAddr::new(env::boot_info().load_info.kernel_image_addr_range.start)
78-
}
79-
8071
pub fn args() -> Option<&'static str> {
8172
None
8273
}

src/arch/x86_64/kernel/mod.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use core::sync::atomic::{AtomicPtr, AtomicU32, Ordering};
66
use core::{mem, slice};
77

88
use hermit_entry::boot_info::{PlatformInfo, RawBootInfo};
9-
use memory_addresses::{PhysAddr, VirtAddr};
9+
use memory_addresses::PhysAddr;
1010
use x86_64::registers::control::{Cr0, Cr4};
1111

1212
use crate::arch::x86_64::kernel::core_local::*;
@@ -42,15 +42,6 @@ pub fn get_ram_address() -> PhysAddr {
4242
PhysAddr::new(env::boot_info().hardware_info.phys_addr_range.start)
4343
}
4444

45-
pub fn get_base_address() -> VirtAddr {
46-
VirtAddr::new(env::boot_info().load_info.kernel_image_addr_range.start)
47-
}
48-
49-
pub fn get_image_size() -> usize {
50-
let range = &env::boot_info().load_info.kernel_image_addr_range;
51-
(range.end - range.start) as usize
52-
}
53-
5445
#[cfg(feature = "smp")]
5546
pub fn get_possible_cpus() -> u32 {
5647
use core::cmp;
@@ -235,6 +226,7 @@ where
235226

236227
use align_address::Align;
237228
use free_list::PageLayout;
229+
use memory_addresses::VirtAddr;
238230
use x86_64::structures::paging::{PageSize, Size4KiB as BasePageSize};
239231

240232
use crate::arch::x86_64::mm::paging::{self, PageTableEntryFlags, PageTableEntryFlagsExt};

0 commit comments

Comments
 (0)