Support COM3 and COM4
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user