Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 39 → Rev 40

/shark/trunk/oslib/kl/event.c
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);
}