void main() { bt_initialize(); trace_initialize(); i386_initialize_descriptor_tables(); i8259_initialize(); exceptions_initialize(); timer_initialize(); mem_initialize(); dma_initialize(); keyboard_initialize(); floppy_initialize(); tty_initialize(); sys_initialize(); loader_initialize(); clear_display(); printk("Start running processes!!!\nStartup Communications\n Press ALT-LSHIFT for next terminal\n"); i8259_start(); while(1); }
struct pic_ops * setup_prepivr(int ivrtype) { struct i8259_ops *prepivr; struct pic_ops *pic; uint32_t pivr; prepivr = kmem_alloc(sizeof(*prepivr), KM_SLEEP); KASSERT(prepivr != NULL); pic = &prepivr->pic; pivr = prep_intr_reg + prep_intr_reg_off; pic->pic_numintrs = 16; pic->pic_cookie = (void *)pivr; pic->pic_enable_irq = i8259_enable_irq; pic->pic_reenable_irq = i8259_enable_irq; pic->pic_disable_irq = i8259_disable_irq; if (ivrtype == PIC_IVR_MOT) pic->pic_get_irq = motivr_get_irq; else pic->pic_get_irq = prepivr_get_irq; pic->pic_ack_irq = i8259_ack_irq; pic->pic_establish_irq = prepivr_establish_irq; pic->pic_finish_setup = NULL; strcpy(pic->pic_name, "prepivr"); pic_add(pic); prepivr->pending_events = 0; prepivr->enable_mask = 0xffffffff; prepivr->irqs = 0; /* initialize the ELCR */ isa_outb(IO_ELCR1, (0 >> 0) & 0xff); isa_outb(IO_ELCR2, (0 >> 8) & 0xff); i8259_initialize(); return pic; }