71799af2d5
used by clock code, so don't export it to the world for machdep.c to initialize. There is a minor problem initializing it before it is used, since although clock initialization is split up so that parts of it can be done early, the first part was never done early enough to actually work. Split it up a bit more and do the first part as late as possible to document the necessary order. The functions that implement the split are still bogusly exported. Cleaned up initialization of the i8254 clock hardware using the new split. Actually initialize it early enough, and don't work around it not being initialized in DELAY() when DELAY() is called early for initialization of some console drivers. This unfortunately moves a little more code before the early debugger breakpoint so that it is harder to debug. The ordering of console and related initialization is delicate because we want to do as little as possible before the breakpoint, but must initialize a console.
43 lines
838 B
C
43 lines
838 B
C
/*-
|
|
* Kernel interface to machine-dependent clock driver.
|
|
* Garrett Wollman, September 1994.
|
|
* This file is in the public domain.
|
|
*
|
|
* $FreeBSD$
|
|
*/
|
|
|
|
#ifndef _MACHINE_CLOCK_H_
|
|
#define _MACHINE_CLOCK_H_
|
|
|
|
#ifdef _KERNEL
|
|
/*
|
|
* i386 to clock driver interface.
|
|
* XXX large parts of the driver and its interface are misplaced.
|
|
*/
|
|
extern int clkintr_pending;
|
|
extern int pscnt;
|
|
extern int psdiv;
|
|
extern int statclock_disable;
|
|
extern u_int timer_freq;
|
|
extern int timer0_max_count;
|
|
extern uint64_t tsc_freq;
|
|
extern int tsc_is_broken;
|
|
|
|
void i8254_init(void);
|
|
|
|
/*
|
|
* Driver to clock driver interface.
|
|
*/
|
|
|
|
int acquire_timer2(int mode);
|
|
int release_timer2(void);
|
|
int rtcin(int val);
|
|
int sysbeep(int pitch, int period);
|
|
void timer_restore(void);
|
|
void init_TSC(void);
|
|
void init_TSC_tc(void);
|
|
|
|
#endif /* _KERNEL */
|
|
|
|
#endif /* !_MACHINE_CLOCK_H_ */
|