25,6 → 25,7 |
#include <ll/i386/mem.h> |
#include <ll/i386/error.h> |
#include <ll/i386/hw-arch.h> |
#include <ll/i386/pic.h> |
#include <ll/i386/pit.h> |
#include <ll/sys/ll/ll-data.h> |
#include <ll/sys/ll/ll-instr.h> |
60,7 → 61,10 |
extern void (*evt_prol) (void); |
extern void (*evt_epil) (void); |
|
void event_setlasthandler(void *p) { last_handler = p; } |
void event_setlasthandler(void *p) |
{ |
last_handler = p; |
} |
|
void event_setprologue(void *p) |
{ |
190,15 → 194,14 |
BYTE mask; |
TIME t; |
|
IDT_place(0x40, ll_timer); |
IDT_place(0x40,ll_timer); |
|
if (l->mode != LL_PERIODIC) { |
message("One-shot timer selected...\n"); |
error("Trying one-shot!!!"); |
t = 0; |
/* Mode: Binary/Mode 4/16 bit Time_const/Counter 0 */ |
pit_init(0, TMR_MD4, 0xFFFF); /* Timer 0, Mode 4, constant 0xFFFF */ |
} else { |
message("Periodic timer selected...\n"); |
t = l->tick; |
/* Translate the tick value in usec into a suitable time constant */ |
/* for 8254 timer chip; the chip is driven with a 1.19718 MHz */ |
221,8 → 224,8 |
|
} |
timermode = l->mode; |
|
if (ll_arch.x86.cpu > 4) { |
|
if (ll_arch.x86.cpu > 4) { |
/* Timer1: mode 0, time const 0... */ |
pit_init(1, TMR_MD0, 0); |
frc = 1; |
229,7 → 232,7 |
} else { |
frc = 2; |
pit_init(2, TMR_MD0, 0); |
outp(0x61, 3); |
outp(0x61, 3); |
} |
|
mask = ll_in(0x21); |
265,4 → 268,7 |
event_post = oneshot_event_post; |
event_delete = oneshot_event_delete; |
} |
|
/* Last but not least... */ |
irq_unmask(0); |
} |