diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/drivers/pit.c | 11 | ||||
-rw-r--r-- | kernel/include/comus/drivers/pit.h | 2 |
2 files changed, 7 insertions, 6 deletions
diff --git a/kernel/drivers/pit.c b/kernel/drivers/pit.c index a8fe179..1a05f03 100644 --- a/kernel/drivers/pit.c +++ b/kernel/drivers/pit.c @@ -6,7 +6,7 @@ #define CHAN_2 0x42 #define CMD 0x43 -uint64_t ticks = 0; +volatile uint64_t ticks = 0; uint16_t pit_read_divider(void) { @@ -21,8 +21,9 @@ uint16_t pit_read_divider(void) void pit_set_divider(uint16_t count) { - cli(); - outb(CHAN_0, count & 0xFF); // low byte - outb(CHAN_0, (count & 0xFF00) >> 8); // high byte - sti(); + // FIXME: broken on -O0 + // cli(); + // outb(CHAN_0, count & 0xFF); // low byte + // outb(CHAN_0, (count & 0xFF00) >> 8); // high byte + // sti(); } diff --git a/kernel/include/comus/drivers/pit.h b/kernel/include/comus/drivers/pit.h index a7a111d..77f0a14 100644 --- a/kernel/include/comus/drivers/pit.h +++ b/kernel/include/comus/drivers/pit.h @@ -13,7 +13,7 @@ // how many time the pit has ticked // not accurate time, good for spinning though -extern uint64_t ticks; +extern volatile uint64_t ticks; uint16_t pit_read_divider(void); void pit_set_divider(uint16_t count); |