projects
/
seabios.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tsc crap :/
[seabios.git]
/
src
/
clock.c
diff --git
a/src/clock.c
b/src/clock.c
index e8a48a13c1733bdd20b3f176dc829eeaabc1a6df..d88515c45c482153144365c90b099c465b5076e8 100644
(file)
--- a/
src/clock.c
+++ b/
src/clock.c
@@
-81,6
+81,7
@@
calibrate_tsc(void)
}
// Setup "timer2"
}
// 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 */
u8 orig = inb(PORT_PS2_CTRLB);
outb((orig & ~PPCB_SPKR) | PPCB_T2GATE, PORT_PS2_CTRLB);
/* binary, mode 0, LSB/MSB, Ch 2 */
@@
-104,6
+105,10
@@
calibrate_tsc(void)
, (u32)start, (u32)end, (u32)diff);
u32 hz = diff * PIT_TICK_RATE / CALIBRATE_COUNT;
SET_GLOBAL(cpu_khz, hz / 1000);
, (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);
}
dprintf(1, "CPU Mhz=%u\n", hz / 1000000);
}
@@
-252,20
+257,34
@@
void
timer_setup(void)
{
dprintf(3, "init timer\n");
timer_setup(void)
{
dprintf(3, "init timer\n");
+#if 1
calibrate_tsc();
calibrate_tsc();
+#endif
+ dprintf(3, "init timer: 01\n");
pit_setup();
pit_setup();
+ dprintf(3, "init timer: 02\n");
init_rtc();
init_rtc();
+ dprintf(3, "init timer: 03\n");
rtc_updating();
rtc_updating();
+ dprintf(3, "init timer: 04\n");
u32 seconds = bcd2bin(inb_cmos(CMOS_RTC_SECONDS));
u32 seconds = bcd2bin(inb_cmos(CMOS_RTC_SECONDS));
+ dprintf(3, "init timer: 05\n");
u32 minutes = bcd2bin(inb_cmos(CMOS_RTC_MINUTES));
u32 minutes = bcd2bin(inb_cmos(CMOS_RTC_MINUTES));
+ dprintf(3, "init timer: 06\n");
u32 hours = bcd2bin(inb_cmos(CMOS_RTC_HOURS));
u32 hours = bcd2bin(inb_cmos(CMOS_RTC_HOURS));
+ dprintf(3, "init timer: 07\n");
u32 ticks = (hours * 60 + minutes) * 60 + seconds;
u32 ticks = (hours * 60 + minutes) * 60 + seconds;
+ dprintf(3, "init timer: 08\n");
ticks = ((u64)ticks * PIT_TICK_RATE) / PIT_TICK_INTERVAL;
ticks = ((u64)ticks * PIT_TICK_RATE) / PIT_TICK_INTERVAL;
+ dprintf(3, "init timer: 09\n");
SET_BDA(timer_counter, ticks);
SET_BDA(timer_counter, ticks);
+ dprintf(3, "init timer: 10\n");
enable_hwirq(0, FUNC16(entry_08));
enable_hwirq(0, FUNC16(entry_08));
+ dprintf(3, "init timer: 11\n");
enable_hwirq(8, FUNC16(entry_70));
enable_hwirq(8, FUNC16(entry_70));
+ dprintf(3, "init timer: 12\n");
}
}