File tree 1 file changed +11
-6
lines changed
1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -204,12 +204,17 @@ where
204
204
. expect ( "no entry point" ) ;
205
205
log:: info!( "Entry point at: {:#x}" , entry_point. as_u64( ) ) ;
206
206
// create a stack
207
- let stack_start_addr = mapping_addr (
208
- config. mappings . kernel_stack ,
209
- config. kernel_stack_size ,
210
- 16 ,
211
- & mut used_entries,
212
- ) ;
207
+ let stack_start_addr = {
208
+ let guard_page_start = mapping_addr (
209
+ config. mappings . kernel_stack ,
210
+ // allocate an additional page as a guard page
211
+ Size4KiB :: SIZE + config. kernel_stack_size ,
212
+ // we need page-alignment because we want a guard page directly below the stack
213
+ Size4KiB :: SIZE ,
214
+ & mut used_entries,
215
+ ) ;
216
+ guard_page_start + Size4KiB :: SIZE
217
+ } ;
213
218
let stack_end_addr = stack_start_addr + config. kernel_stack_size ;
214
219
215
220
let stack_start: Page = Page :: containing_address ( stack_start_addr) ;
You can’t perform that action at this time.
0 commit comments