}
// Setup "timer2"
+#if 0
u8 orig = inb(PORT_PS2_CTRLB);
outb((orig & ~PPCB_SPKR) | PPCB_T2GATE, PORT_PS2_CTRLB);
/* binary, mode 0, LSB/MSB, Ch 2 */
, (u32)start, (u32)end, (u32)diff);
u32 hz = diff * PIT_TICK_RATE / CALIBRATE_COUNT;
SET_GLOBAL(cpu_khz, hz / 1000);
+#else
+ u32 hz = 800 * 1000000;
+ SET_GLOBAL(cpu_khz, hz / 1000);
+#endif
dprintf(1, "CPU Mhz=%u\n", hz / 1000000);
}
timer_setup(void)
{
dprintf(3, "init timer\n");
+#if 1
calibrate_tsc();
+#endif
+ dprintf(3, "init timer: 01\n");
pit_setup();
+ dprintf(3, "init timer: 02\n");
init_rtc();
+ dprintf(3, "init timer: 03\n");
rtc_updating();
+ dprintf(3, "init timer: 04\n");
u32 seconds = bcd2bin(inb_cmos(CMOS_RTC_SECONDS));
+ dprintf(3, "init timer: 05\n");
u32 minutes = bcd2bin(inb_cmos(CMOS_RTC_MINUTES));
+ dprintf(3, "init timer: 06\n");
u32 hours = bcd2bin(inb_cmos(CMOS_RTC_HOURS));
+ dprintf(3, "init timer: 07\n");
u32 ticks = (hours * 60 + minutes) * 60 + seconds;
+ dprintf(3, "init timer: 08\n");
ticks = ((u64)ticks * PIT_TICK_RATE) / PIT_TICK_INTERVAL;
+ dprintf(3, "init timer: 09\n");
SET_BDA(timer_counter, ticks);
+ dprintf(3, "init timer: 10\n");
enable_hwirq(0, FUNC16(entry_08));
+ dprintf(3, "init timer: 11\n");
enable_hwirq(8, FUNC16(entry_70));
+ dprintf(3, "init timer: 12\n");
}
// Setup interfaces that option roms may need
bios32_setup();
+ dprintf(3, "[wurm] pmm_setup\n");
pmm_setup();
+ dprintf(3, "[wurm] pnp_setup\n");
pnp_setup();
+ dprintf(3, "[wurm] kbd_setup\n");
kbd_setup();
+ dprintf(3, "[wurm] mouse_setup\n");
mouse_setup();
+ dprintf(3, "[wurm] init_bios_tables\n");
init_bios_tables();
// Run vga option rom
+ dprintf(3, "[wurm] vga_setup\n");
vga_setup();
// Do hardware initialization (if running synchronously)