void ps2port_setup(void) { ASSERT32FLAT(); if (! CONFIG_PS2PORT) return; dprintf(3, "init ps2port\n"); enable_hwirq(1, FUNC16(entry_09)); enable_hwirq(12, FUNC16(entry_74)); run_thread(keyboard_init, NULL); }
void pmm_init(void) { if (! CONFIG_PMM) return; dprintf(3, "init PMM\n"); PMMHEADER.entry = FUNC16(entry_pmm); PMMHEADER.checksum -= checksum(&PMMHEADER, sizeof(PMMHEADER)); }
static void ivt_init(void) { dprintf(3, "init ivt\n"); // Setup reset-vector entry point (controls legacy reboots). HaveRunPost = 1; rtc_write(CMOS_RESET_CODE, 0); // Initialize all vectors to the default handler. int i; for (i=0; i<256; i++) SET_IVT(i, FUNC16(entry_iret_official)); // Initialize all hw vectors to a default hw handler. for (i=BIOS_HWIRQ0_VECTOR; i<BIOS_HWIRQ0_VECTOR+8; i++) SET_IVT(i, FUNC16(entry_hwpic1)); for (i=BIOS_HWIRQ8_VECTOR; i<BIOS_HWIRQ8_VECTOR+8; i++) SET_IVT(i, FUNC16(entry_hwpic2)); // Initialize software handlers. SET_IVT(0x02, FUNC16(entry_02)); SET_IVT(0x10, FUNC16(entry_10)); SET_IVT(0x11, FUNC16(entry_11)); SET_IVT(0x12, FUNC16(entry_12)); SET_IVT(0x13, FUNC16(entry_13_official)); SET_IVT(0x14, FUNC16(entry_14)); SET_IVT(0x15, FUNC16(entry_15_official)); SET_IVT(0x16, FUNC16(entry_16)); SET_IVT(0x17, FUNC16(entry_17)); SET_IVT(0x18, FUNC16(entry_18)); SET_IVT(0x19, FUNC16(entry_19_official)); SET_IVT(0x1a, FUNC16(entry_1a_official)); SET_IVT(0x40, FUNC16(entry_40)); // INT 60h-66h reserved for user interrupt for (i=0x60; i<=0x66; i++) SET_IVT(i, SEGOFF(0, 0)); // set vector 0x79 to zero // this is used by 'gardian angel' protection system SET_IVT(0x79, SEGOFF(0, 0)); }
static void init_ivt(void) { dprintf(3, "init ivt\n"); // Initialize all vectors to the default handler. int i; for (i=0; i<256; i++) SET_IVT(i, FUNC16(entry_iret_official)); // Initialize all hw vectors to a default hw handler. for (i=0x08; i<=0x0f; i++) SET_IVT(i, FUNC16(entry_hwpic1)); for (i=0x70; i<=0x77; i++) SET_IVT(i, FUNC16(entry_hwpic2)); // Initialize software handlers. SET_IVT(0x02, FUNC16(entry_02)); SET_IVT(0x10, FUNC16(entry_10)); SET_IVT(0x11, FUNC16(entry_11)); SET_IVT(0x12, FUNC16(entry_12)); SET_IVT(0x13, FUNC16(entry_13_official)); SET_IVT(0x14, FUNC16(entry_14)); SET_IVT(0x15, FUNC16(entry_15)); SET_IVT(0x16, FUNC16(entry_16)); SET_IVT(0x17, FUNC16(entry_17)); SET_IVT(0x18, FUNC16(entry_18)); SET_IVT(0x19, FUNC16(entry_19_official)); SET_IVT(0x1a, FUNC16(entry_1a)); SET_IVT(0x40, FUNC16(entry_40)); // INT 60h-66h reserved for user interrupt for (i=0x60; i<=0x66; i++) SET_IVT(i, SEGOFF(0, 0)); // set vector 0x79 to zero // this is used by 'gardian angel' protection system SET_IVT(0x79, SEGOFF(0, 0)); SET_IVT(0x1E, SEGOFF(SEG_BIOS, (u32)&diskette_param_table2 - BUILD_BIOS_ADDR)); }