From: Jack Lange Date: Thu, 17 Jul 2008 04:39:18 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: boots-puppy-iso-to-command-prompt~14 X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=2fb8b9a851cf1af89c476c933a2ba80ddf474379 *** empty log message *** --- diff --git a/palacios/build/Makefile b/palacios/build/Makefile index eb45f7f..afbbafc 100644 --- a/palacios/build/Makefile +++ b/palacios/build/Makefile @@ -1,6 +1,6 @@ # Makefile for GeekOS kernel, userspace, and tools # Copyright (c) 2004,2005 David H. Hovemeyer -# $Revision: 1.42 $ +# $Revision: 1.43 $ # This is free software. You are permitted to use, # redistribute, and modify it as specified in the file "COPYING". @@ -147,7 +147,7 @@ VMM_C_OBJS := $(VMM_C_SRCS:%.c=palacios/%.o) VMM_OBJS := $(VMM_C_OBJS) $(VMM_ASM_OBJS) -DEVICE_C_SRCS := generic.c keyboard.c nvram.c timer.c simple_pic.c 8259a.c 8254.c +DEVICE_C_SRCS := generic.c keyboard.c nvram.c timer.c simple_pic.c 8259a.c 8254.c serial.c DEVICE_C_OBJS := $(DEVICE_C_SRCS:%.c=devices/%.o) diff --git a/palacios/src/devices/serial.c b/palacios/src/devices/serial.c index 6b3337b..690123c 100644 --- a/palacios/src/devices/serial.c +++ b/palacios/src/devices/serial.c @@ -139,9 +139,9 @@ struct serial_port { struct irq_id_reg iid; struct fifo_ctrl_reg fcr; struct line_ctrl_reg lcr; - struct model_ctrl_reg mcr; + struct modem_ctrl_reg mcr; struct line_status_reg lsr; - struct model_status_reg msr; + struct modem_status_reg msr; char tx_buffer[256]; @@ -198,119 +198,121 @@ int read_status_port(ushort_t port, void * dst, uint_t length, struct vm_device -void serial_init(struct vm_device * dev) { +int serial_init(struct vm_device * dev) { struct serial_state * state = (struct serial_state *)dev->private_data; state->com1.ier.rsvd = 0; - state->com1.iir.rsvd = 0; + state->com1.iid.rsvd = 0; state->com1.fcr.rsvd = 0; state->com1.mcr.rsvd = 0; - state->com1.iir.pending = 1; + state->com1.iid.pending = 1; state->com2.ier.rsvd = 0; - state->com2.iir.rsvd = 0; + state->com2.iid.rsvd = 0; state->com2.fcr.rsvd = 0; state->com2.mcr.rsvd = 0; - state->com2.iir.pending = 1; + state->com2.iid.pending = 1; state->com3.ier.rsvd = 0; - state->com3.iir.rsvd = 0; + state->com3.iid.rsvd = 0; state->com3.fcr.rsvd = 0; state->com3.mcr.rsvd = 0; - state->com3.iir.pending = 1; + state->com3.iid.pending = 1; state->com4.ier.rsvd = 0; - state->com4.iir.rsvd = 0; + state->com4.iid.rsvd = 0; state->com4.fcr.rsvd = 0; state->com4.mcr.rsvd = 0; - state->com4.iir.pending = 1; + state->com4.iid.pending = 1; dev_hook_io(dev, COM1_DATA_PORT, &read_data_port, &write_data_port); dev_hook_io(dev, COM1_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM1_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM1_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); - dev_hook_io(dev, COM1_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); + dev_hook_io(dev, COM1_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM1_LINE_STATUS_PORT, &read_status_port, &write_status_port); - dev_hook_io(dev, COM1_MODEL_STATUS_PORT, &read_status_port, &write_status_port); + dev_hook_io(dev, COM1_MODEM_STATUS_PORT, &read_status_port, &write_status_port); dev_hook_io(dev, COM1_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM2_DATA_PORT, &read_data_port, &write_data_port); dev_hook_io(dev, COM2_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM2_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM2_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); - dev_hook_io(dev, COM2_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); + dev_hook_io(dev, COM2_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM2_LINE_STATUS_PORT, &read_status_port, &write_status_port); - dev_hook_io(dev, COM2_MODEL_STATUS_PORT, &read_status_port, &write_status_port); + dev_hook_io(dev, COM2_MODEM_STATUS_PORT, &read_status_port, &write_status_port); dev_hook_io(dev, COM2_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM3_DATA_PORT, &read_data_port, &write_data_port); dev_hook_io(dev, COM3_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM3_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM3_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); - dev_hook_io(dev, COM3_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); + dev_hook_io(dev, COM3_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM3_LINE_STATUS_PORT, &read_status_port, &write_status_port); - dev_hook_io(dev, COM3_MODEL_STATUS_PORT, &read_status_port, &write_status_port); + dev_hook_io(dev, COM3_MODEM_STATUS_PORT, &read_status_port, &write_status_port); dev_hook_io(dev, COM3_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM4_DATA_PORT, &read_data_port, &write_data_port); dev_hook_io(dev, COM4_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM4_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM4_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); - dev_hook_io(dev, COM4_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); + dev_hook_io(dev, COM4_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port); dev_hook_io(dev, COM4_LINE_STATUS_PORT, &read_status_port, &write_status_port); - dev_hook_io(dev, COM4_MODEL_STATUS_PORT, &read_status_port, &write_status_port); + dev_hook_io(dev, COM4_MODEM_STATUS_PORT, &read_status_port, &write_status_port); dev_hook_io(dev, COM4_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port); + return 0; } -void serial_deinit(struct vm_device * dev) { +int serial_deinit(struct vm_device * dev) { dev_unhook_io(dev, COM1_DATA_PORT); dev_unhook_io(dev, COM1_IRQ_ENABLE_PORT); dev_unhook_io(dev, COM1_FIFO_CTRL_PORT); dev_unhook_io(dev, COM1_LINE_CTRL_PORT); - dev_unhook_io(dev, COM1_MODEL_CTRL_PORT); + dev_unhook_io(dev, COM1_MODEM_CTRL_PORT); dev_unhook_io(dev, COM1_LINE_STATUS_PORT); - dev_unhook_io(dev, COM1_MODEL_STATUS_PORT); + dev_unhook_io(dev, COM1_MODEM_STATUS_PORT); dev_unhook_io(dev, COM1_SCRATCH_PORT); dev_unhook_io(dev, COM2_DATA_PORT); dev_unhook_io(dev, COM2_IRQ_ENABLE_PORT); dev_unhook_io(dev, COM2_FIFO_CTRL_PORT); dev_unhook_io(dev, COM2_LINE_CTRL_PORT); - dev_unhook_io(dev, COM2_MODEL_CTRL_PORT); + dev_unhook_io(dev, COM2_MODEM_CTRL_PORT); dev_unhook_io(dev, COM2_LINE_STATUS_PORT); - dev_unhook_io(dev, COM2_MODEL_STATUS_PORT); + dev_unhook_io(dev, COM2_MODEM_STATUS_PORT); dev_unhook_io(dev, COM2_SCRATCH_PORT); dev_unhook_io(dev, COM3_DATA_PORT); dev_unhook_io(dev, COM3_IRQ_ENABLE_PORT); dev_unhook_io(dev, COM3_FIFO_CTRL_PORT); dev_unhook_io(dev, COM3_LINE_CTRL_PORT); - dev_unhook_io(dev, COM3_MODEL_CTRL_PORT); + dev_unhook_io(dev, COM3_MODEM_CTRL_PORT); dev_unhook_io(dev, COM3_LINE_STATUS_PORT); - dev_unhook_io(dev, COM3_MODEL_STATUS_PORT); + dev_unhook_io(dev, COM3_MODEM_STATUS_PORT); dev_unhook_io(dev, COM3_SCRATCH_PORT); dev_unhook_io(dev, COM4_DATA_PORT); dev_unhook_io(dev, COM4_IRQ_ENABLE_PORT); dev_unhook_io(dev, COM4_FIFO_CTRL_PORT); dev_unhook_io(dev, COM4_LINE_CTRL_PORT); - dev_unhook_io(dev, COM4_MODEL_CTRL_PORT); + dev_unhook_io(dev, COM4_MODEM_CTRL_PORT); dev_unhook_io(dev, COM4_LINE_STATUS_PORT); - dev_unhook_io(dev, COM4_MODEL_STATUS_PORT); + dev_unhook_io(dev, COM4_MODEM_STATUS_PORT); dev_unhook_io(dev, COM4_SCRATCH_PORT); + return 0; } static struct vm_device_ops dev_ops = { .init = serial_init, - .deinit = serial_deini, + .deinit = serial_deinit, .reset = NULL, .start = NULL, .stop = NULL, diff --git a/palacios/src/geekos/vm.c b/palacios/src/geekos/vm.c index 358287e..904b1be 100644 --- a/palacios/src/geekos/vm.c +++ b/palacios/src/geekos/vm.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -344,6 +345,7 @@ int RunVMM(struct Boot_Info * bootInfo) { struct vm_device * pic = create_pic(); struct vm_device * keyboard = create_keyboard(); struct vm_device * pit = create_pit(); + struct vm_device * serial = create_serial(); #define GENERIC 1 @@ -366,10 +368,12 @@ IGNORE}, // DMA 2 channels 4,5,6,7 (address, counter) {0xd0, 0xde, GENERIC_PRINT_AND_IGNORE}, // DMA 2 misc registers #endif - {0x3f8, 0x3f8+7, GENERIC_PRINT_AND_IGNORE}, // COM 1 - {0x2f8, 0x2f8+7, GENERIC_PRINT_AND_IGNORE}, // COM 2 - {0x3e8, 0x3e8+7, GENERIC_PRINT_AND_IGNORE}, // COM 2 - {0x2e8, 0x2e8+7, GENERIC_PRINT_AND_IGNORE}, // COM 2 + /* + {0x3f8, 0x3f8+7, GENERIC_PRINT_AND_IGNORE}, // COM 1 + {0x2f8, 0x2f8+7, GENERIC_PRINT_AND_IGNORE}, // COM 2 + {0x3e8, 0x3e8+7, GENERIC_PRINT_AND_IGNORE}, // COM 2 + {0x2e8, 0x2e8+7, GENERIC_PRINT_AND_IGNORE}, // COM 2 + */ /* {0x170, 0x178, GENERIC_PRINT_AND_PASSTHROUGH}, // IDE 1 {0x376, 0x377, GENERIC_PRINT_AND_PASSTHROUGH}, // IDE 1 @@ -387,7 +391,7 @@ IGNORE}, // DMA 2 channels 4,5,6,7 (address, counter) }; - struct vm_device * generic = create_generic(range,10, // THIS NUMBER IS CRITICAL + struct vm_device * generic = create_generic(range,6, // THIS NUMBER IS CRITICAL NULL,0,NULL,0); #endif @@ -397,6 +401,7 @@ IGNORE}, // DMA 2 channels 4,5,6,7 (address, counter) attach_device(&(vm_info), pic); attach_device(&(vm_info), pit); attach_device(&(vm_info), keyboard); + attach_device(&(vm_info), serial); #if GENERIC