X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdevices%2Fserial.c;h=d92a87ce1540be2af42940622491a4a28be078c2;hb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;hp=8dc7f18cfbd0272b630e0d85c87abf119be23173;hpb=34faba4d412c8d856d8d26dc9d82c0cf5b906d3c;p=pintos-anon diff --git a/src/devices/serial.c b/src/devices/serial.c index 8dc7f18..d92a87c 100644 --- a/src/devices/serial.c +++ b/src/devices/serial.c @@ -63,9 +63,9 @@ serial_init_poll (void) ASSERT (mode == UNINIT); outb (IER_REG, 0); /* Turn off all interrupts. */ outb (FCR_REG, 0); /* Disable FIFO. */ - set_serial (9600); /* 9600 bps, N-8-1. */ + set_serial (115200); /* 115.2 kbps, N-8-1. */ outb (MCR_REG, MCR_OUT2); /* Turn on OUT2 output line. */ - intq_init (&txq, "serial xmit"); + intq_init (&txq); mode = POLL; } @@ -76,7 +76,7 @@ void serial_init_queue (void) { ASSERT (mode == POLL); - intr_register (0x20 + 4, 0, INTR_OFF, serial_interrupt, "serial"); + intr_register_ext (0x20 + 4, serial_interrupt, "serial"); mode = QUEUE; } @@ -131,6 +131,8 @@ set_serial (int bps) int baud_base = 1843200 / 16; /* Base rate of 16550A. */ uint16_t divisor = baud_base / bps; /* Clock rate divisor. */ + ASSERT (bps >= 300 && bps <= 115200); + /* Enable DLAB. */ outb (LCR_REG, LCR_N81 | LCR_DLAB);