Support COM3 and COM4

This commit is contained in:
Jeremy Soller
2019-11-01 20:35:02 -06:00
parent c27a6c149b
commit 331590e129
3 changed files with 12 additions and 1 deletions

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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();
});