diff --git a/src/arch/aarch64/device/serial.rs b/src/arch/aarch64/device/serial.rs index 3347961c66..934abde162 100644 --- a/src/arch/aarch64/device/serial.rs +++ b/src/arch/aarch64/device/serial.rs @@ -35,7 +35,7 @@ pub unsafe fn init_early(dtb_base: usize, dtb_size: usize) { let virt = crate::PHYS_OFFSET + phys; { let mut serial_port = SerialPort::new(virt); - //serial_port.init(false); + serial_port.init(false); *COM1.lock() = Some(serial_port); } println!("UART at {:X}", virt); @@ -43,12 +43,10 @@ pub unsafe fn init_early(dtb_base: usize, dtb_size: usize) { } pub unsafe fn init() { - println!("test 1"); if let Some(ref mut serial_port) = *COM1.lock() { serial_port.receive(); - //serial_port.init(true); + serial_port.init(true); } - println!("test 2"); let data = DTB_BINARY.get().unwrap(); let fdt = fdt::DeviceTree::new(data).unwrap(); if let Some(node) = find_compatible_node(&fdt, "arm,pl011") { diff --git a/src/arch/aarch64/interrupt/exception.rs b/src/arch/aarch64/interrupt/exception.rs index cc31ec8824..4167fb2953 100644 --- a/src/arch/aarch64/interrupt/exception.rs +++ b/src/arch/aarch64/interrupt/exception.rs @@ -126,6 +126,14 @@ unsafe fn instr_trapped_msr_mrs_inner(stack: &mut InterruptStack, from_user: boo exception_stack!(synchronous_exception_at_el1_with_spx, |stack| { if !pf_inner(stack, exception_code(stack.iret.esr_el1), "sync_exc_el1_spx") { println!("Synchronous exception at EL1 with SPx"); + if exception_code(stack.iret.esr_el1) == 0b100101 { + let far_el1 = far_el1(); + println!("FAR_EL1 = 0x{:08x}", far_el1); + } + else if exception_code(stack.iret.esr_el1) == 0b100100 { + let far_el1 = far_el1(); + println!("USER FAR_EL1 = 0x{:08x}", far_el1); + } stack.dump(); stack_trace(); loop {} diff --git a/src/arch/aarch64/interrupt/irq.rs b/src/arch/aarch64/interrupt/irq.rs index a8016c9290..a91f9480f7 100644 --- a/src/arch/aarch64/interrupt/irq.rs +++ b/src/arch/aarch64/interrupt/irq.rs @@ -9,7 +9,6 @@ pub struct IrqDesc { exception_stack!(irq_at_el0, |stack| { let irq = IRQ_CHIP.irq_ack(); - //println!("el0 irq num {}", irq); if let Some(virq) = IRQ_CHIP.irq_to_virq(irq) && virq < 1024 { if let Some(handler) = &mut IRQ_CHIP.irq_desc[virq].handler { handler.irq_handler(virq as u32); @@ -23,7 +22,6 @@ exception_stack!(irq_at_el0, |stack| { exception_stack!(irq_at_el1, |stack| { let irq = IRQ_CHIP.irq_ack(); - //println!("el1 irq num {}", irq); if let Some(virq) = IRQ_CHIP.irq_to_virq(irq) && virq < 1024 { if let Some(handler) = &mut IRQ_CHIP.irq_desc[virq].handler { handler.irq_handler(virq as u32); diff --git a/src/arch/aarch64/start.rs b/src/arch/aarch64/start.rs index 33de19e35f..2dad0f2968 100644 --- a/src/arch/aarch64/start.rs +++ b/src/arch/aarch64/start.rs @@ -76,7 +76,7 @@ pub unsafe extern "C" fn kstart(args_ptr: *const KernelArgs) -> ! { KERNEL_SIZE.store(args.kernel_size, Ordering::SeqCst); // Convert env to slice - let env = slice::from_raw_parts((args.env_base) as *const u8, args.env_size); + let env = slice::from_raw_parts((crate::PHYS_OFFSET + args.env_base) as *const u8, args.env_size); // Set up graphical debug #[cfg(feature = "graphical_debug")] diff --git a/src/scheme/irq.rs b/src/scheme/irq.rs index fd75baae0b..74616329c4 100644 --- a/src/scheme/irq.rs +++ b/src/scheme/irq.rs @@ -53,7 +53,7 @@ pub extern fn irq_trigger(irq: u8) { event::trigger(*scheme_id, *fd, EVENT_READ); } } else { - println!("Calling IRQ without triggering"); + println!("Calling IRQ without triggering {}", irq); } }