From ca6699a11ee2a8fb85c4cf8c9b4166927ecfa4f5 Mon Sep 17 00:00:00 2001 From: Ivan Tan Date: Sun, 6 Aug 2023 08:11:04 +0800 Subject: [PATCH] aarch64: init serial port by parsing dtb file --- src/arch/aarch64/start.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/arch/aarch64/start.rs b/src/arch/aarch64/start.rs index cd127f16e7..0329c90493 100644 --- a/src/arch/aarch64/start.rs +++ b/src/arch/aarch64/start.rs @@ -72,18 +72,18 @@ pub unsafe extern "C" fn kstart(args_ptr: *const KernelArgs) -> ! { KERNEL_SIZE.store(args.kernel_size, Ordering::SeqCst); //TODO: Remove hard-coded UART for QEMU virt machine - { + if args.dtb_base == 0 { let mut serial_port = crate::device::uart_pl011::SerialPort::new( crate::PHYS_OFFSET + 0x9000000 ); serial_port.init(false); serial_port.write(b"UART\n"); *crate::device::serial::COM1.lock() = Some(serial_port); + } else { + // Try to find serial port prior to logging + device::serial::init_early(crate::PHYS_OFFSET + args.dtb_base, args.dtb_size); } - // Try to find serial port prior to logging - device::serial::init_early(crate::PHYS_OFFSET + args.dtb_base, args.dtb_size); - // Convert env to slice let env = slice::from_raw_parts((args.env_base + crate::PHYS_OFFSET) as *const u8, args.env_size);