From 331590e129607947971754d19f224c92d35f092c Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Fri, 1 Nov 2019 20:35:02 -0600 Subject: [PATCH] Support COM3 and COM4 --- src/arch/x86_64/debug.rs | 1 + src/arch/x86_64/device/serial.rs | 4 ++++ src/arch/x86_64/interrupt/irq.rs | 8 +++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/arch/x86_64/debug.rs b/src/arch/x86_64/debug.rs index 3da2a663..591e65da 100644 --- a/src/arch/x86_64/debug.rs +++ b/src/arch/x86_64/debug.rs @@ -6,6 +6,7 @@ use spin::MutexGuard; use crate::log::{LOG, Log}; #[cfg(feature = "qemu_debug")] use syscall::io::Io; +#[cfg(any(feature = "qemu_debug", feature = "serial_debug"))] use crate::syscall::io::Pio; #[cfg(feature = "serial_debug")] use crate::devices::uart_16550::SerialPort; diff --git a/src/arch/x86_64/device/serial.rs b/src/arch/x86_64/device/serial.rs index c2b424c0..83fe75b6 100644 --- a/src/arch/x86_64/device/serial.rs +++ b/src/arch/x86_64/device/serial.rs @@ -4,8 +4,12 @@ use spin::Mutex; pub static COM1: Mutex<SerialPort<Pio<u8>>> = Mutex::new(SerialPort::<Pio<u8>>::new(0x3F8)); pub static COM2: Mutex<SerialPort<Pio<u8>>> = Mutex::new(SerialPort::<Pio<u8>>::new(0x2F8)); +pub static COM3: Mutex<SerialPort<Pio<u8>>> = Mutex::new(SerialPort::<Pio<u8>>::new(0x3E8)); +pub static COM4: Mutex<SerialPort<Pio<u8>>> = Mutex::new(SerialPort::<Pio<u8>>::new(0x2E8)); pub unsafe fn init() { COM1.lock().init(); COM2.lock().init(); + COM3.lock().init(); + COM4.lock().init(); } diff --git a/src/arch/x86_64/interrupt/irq.rs b/src/arch/x86_64/interrupt/irq.rs index 8c755baa..ccd505c7 100644 --- a/src/arch/x86_64/interrupt/irq.rs +++ b/src/arch/x86_64/interrupt/irq.rs @@ -2,7 +2,7 @@ use core::sync::atomic::{AtomicUsize, Ordering}; use crate::context::timeout; use crate::device::pic; -use crate::device::serial::{COM1, COM2}; +use crate::device::serial::{COM1, COM2, COM3, COM4}; use crate::ipi::{ipi, IpiKind, IpiTarget}; use crate::scheme::debug::debug_input; use crate::{context, ptrace, time}; @@ -78,6 +78,9 @@ interrupt!(com2, { while let Some(c) = COM2.lock().receive() { debug_input(c); } + while let Some(c) = COM4.lock().receive() { + debug_input(c); + } pic::MASTER.ack(); }); @@ -85,6 +88,9 @@ interrupt!(com1, { while let Some(c) = COM1.lock().receive() { debug_input(c); } + while let Some(c) = COM3.lock().receive() { + debug_input(c); + } pic::MASTER.ack(); }); -- GitLab