@@ -15,7 +15,7 @@ pub(crate) fn map_kernel(kernel_start: PhysAddr, segments: &FixedVec<ProgramHead
15
15
// create a stack
16
16
// TODO create a stack range dynamically (based on where the kernel is loaded)
17
17
let stack_start = VirtAddr :: new ( 0x57AC_0000_0000 ) ;
18
- let stack_size = 1 * 1024 * 1024 ;
18
+ let stack_size: u64 = 1 * 1024 * 1024 ;
19
19
let stack_end = stack_start + stack_size;
20
20
21
21
let page_size = usize_from ( PAGE_SIZE ) ;
@@ -93,15 +93,15 @@ pub(crate) fn map_segment(segment: &ProgramHeader64, kernel_start: PhysAddr, p4:
93
93
pub ( crate ) fn map_page ( page : Page , phys_frame : PhysFrame , flags : PageTableFlags ,
94
94
p4 : & mut PageTable , frame_allocator : & mut FrameAllocator )
95
95
{
96
- fn as_page_table_ptr ( addr : PhysAddr ) -> * mut PageTable {
97
- usize_from ( addr . as_u64 ( ) ) as * const PageTable as * mut PageTable
96
+ fn as_page_table_ptr ( frame : & PhysFrame ) -> * mut PageTable {
97
+ usize_from ( frame . start_address ( ) . as_u64 ( ) ) as * const PageTable as * mut PageTable
98
98
}
99
99
100
100
fn create_and_link_page_table ( frame_allocator : & mut FrameAllocator ,
101
101
parent_table_entry : & mut PageTableEntry ) -> & ' static mut PageTable
102
102
{
103
103
let table_frame = frame_allocator. allocate_frame ( ) ;
104
- let page_table = unsafe { & mut * as_page_table_ptr ( table_frame. start_address ( ) ) } ;
104
+ let page_table = unsafe { & mut * as_page_table_ptr ( & table_frame) } ;
105
105
page_table. zero ( ) ;
106
106
parent_table_entry. set ( table_frame, PageTableFlags :: PRESENT | PageTableFlags :: WRITABLE ) ;
107
107
page_table
@@ -110,8 +110,8 @@ pub(crate) fn map_page(page: Page, phys_frame: PhysFrame, flags: PageTableFlags,
110
110
fn get_or_create_next_page_table ( frame_allocator : & mut FrameAllocator ,
111
111
page_table_entry : & mut PageTableEntry ) -> & ' static mut PageTable
112
112
{
113
- match page_table_entry. points_to ( ) {
114
- Some ( addr ) => unsafe { & mut * as_page_table_ptr ( addr ) } ,
113
+ match page_table_entry. frame ( ) {
114
+ Some ( frame ) => unsafe { & mut * as_page_table_ptr ( & frame ) } ,
115
115
None => create_and_link_page_table ( frame_allocator, page_table_entry)
116
116
}
117
117
}
0 commit comments