diff --git a/src/arch/x86_64/mod.rs b/src/arch/x86_64/mod.rs index 52430165eaf6cf43d217e88935534d063d3256f9..313076541571d55f890f2561cf528c8a51f042e5 100644 --- a/src/arch/x86_64/mod.rs +++ b/src/arch/x86_64/mod.rs @@ -216,8 +216,16 @@ fn inner() -> Result<()> { let page_size = 4096; { + let mut env = String::new(); + if let Ok(output) = Output::one() { + let mode = &output.0.Mode; + env.push_str(&format!("FRAMEBUFFER_ADDR={:016x}\n", mode.FrameBufferBase)); + env.push_str(&format!("FRAMEBUFFER_WIDTH={:016x}\n", mode.Info.HorizontalResolution)); + env.push_str(&format!("FRAMEBUFFER_HEIGHT={:016x}\n", mode.Info.VerticalResolution)); + } + println!("Loading Kernel..."); - let (kernel, env): (&[u8], String) = if let Ok((_i, mut kernel_file)) = find(KERNEL) { + let kernel = if let Ok((_i, mut kernel_file)) = find(KERNEL) { let info = kernel_file.info()?; let len = info.FileSize; @@ -244,7 +252,7 @@ fn inner() -> Result<()> { } println!("\r{}% - {} MB", i as u64 * 100 / len, i / MB); - (kernel, String::new()) + kernel } else { let mut fs = redoxfs()?; @@ -278,13 +286,6 @@ fn inner() -> Result<()> { } println!("\r{}% - {} MB", i as u64 * 100 / len, i / MB); - let mut env = String::new(); - if let Ok(output) = Output::one() { - let mode = &output.0.Mode; - env.push_str(&format!("FRAMEBUFFER_ADDR={:016x}\n", mode.FrameBufferBase)); - env.push_str(&format!("FRAMEBUFFER_WIDTH={:016x}\n", mode.Info.HorizontalResolution)); - env.push_str(&format!("FRAMEBUFFER_HEIGHT={:016x}\n", mode.Info.VerticalResolution)); - } env.push_str(&format!("REDOXFS_BLOCK={:016x}\n", fs.block)); env.push_str("REDOXFS_UUID="); for i in 0..fs.header.1.uuid.len() { @@ -295,7 +296,7 @@ fn inner() -> Result<()> { env.push_str(&format!("{:>02x}", fs.header.1.uuid[i])); } - (kernel, env) + kernel }; unsafe { @@ -305,12 +306,13 @@ fn inner() -> Result<()> { println!("Kernel {:X}:{:X} entry {:X}", KERNEL_PHYS, KERNEL_SIZE, KERNEL_ENTRY); } + println!("Allocating stack {:X}", STACK_SIZE); unsafe { STACK_PHYS = allocate_zero_pages(STACK_SIZE as usize / page_size)? as u64; println!("Stack {:X}:{:X}", STACK_PHYS, STACK_SIZE); } - println!("Copying Environment..."); + println!("Allocating env {:X}", env.len()); unsafe { ENV_PHYS = allocate_zero_pages((env.len() + page_size - 1) / page_size)? as u64; ENV_SIZE = env.len() as u64;