xref: /csrg-svn/sys/vax/uba/kgclock.c (revision 11357)
1*11357Smckusick /*	kgclock.c	4.1	83/03/01	*/
2*11357Smckusick 
3*11357Smckusick #ifdef KGCLOCK		/* kl-11 as profiling clock */
4*11357Smckusick 
5*11357Smckusick #include "../h/map.h"
6*11357Smckusick #include "../h/pte.h"
7*11357Smckusick #include "../h/buf.h"
8*11357Smckusick #include "../h/ubavar.h"
9*11357Smckusick #include "../h/psl.h"
10*11357Smckusick 
11*11357Smckusick int	kgprobe(), kgattach();
12*11357Smckusick struct	uba_device *kginfo[1];
13*11357Smckusick u_short	kgstd[] = { 0177560, 0 };
14*11357Smckusick struct	uba_driver kgdriver =
15*11357Smckusick     { kgprobe, 0, kgattach, 0, kgstd, "kg", kginfo };
16*11357Smckusick 
17*11357Smckusick struct klregs {
18*11357Smckusick 	u_short	fill[2];
19*11357Smckusick 	u_short	tcsr;
20*11357Smckusick 	u_short	tbuf;
21*11357Smckusick };
22*11357Smckusick #define	KLSTRT	0300		/* intr enbl + done */
23*11357Smckusick struct	klregs *klbase;
24*11357Smckusick 
25*11357Smckusick kgprobe(reg)
26*11357Smckusick caddr_t reg;
27*11357Smckusick {
28*11357Smckusick 	register int br, cvec;	/* value-result */
29*11357Smckusick 	register struct klregs *klp = (struct klregs *)reg;
30*11357Smckusick 
31*11357Smckusick 	klp->tcsr = KLSTRT;
32*11357Smckusick 	DELAY(100000);
33*11357Smckusick 	klp->tcsr = 0;
34*11357Smckusick }
35*11357Smckusick 
36*11357Smckusick kgattach(ui)
37*11357Smckusick struct uba_device *ui;
38*11357Smckusick {
39*11357Smckusick 	klbase = (struct klregs *)ui->ui_addr;
40*11357Smckusick }
41*11357Smckusick 
42*11357Smckusick /*
43*11357Smckusick  * start the sampling clock
44*11357Smckusick  */
45*11357Smckusick startkgclock()
46*11357Smckusick {
47*11357Smckusick 	if (klbase)
48*11357Smckusick 		klbase->tcsr = KLSTRT;	/* enable interrupts */
49*11357Smckusick }
50*11357Smckusick 
51*11357Smckusick /* ARGSUSED */
52*11357Smckusick kgclock(dev, r0, r1, r2, r3, r4 ,r5, pc, ps)
53*11357Smckusick caddr_t pc;
54*11357Smckusick {
55*11357Smckusick 	register int k;
56*11357Smckusick 
57*11357Smckusick 	klbase->tbuf = 0377;	/* reprime clock (scope sync too) */
58*11357Smckusick 	gatherstats();		/* this routine lives in kern_clock.c */
59*11357Smckusick }
60*11357Smckusick #endif KGCLOCK
61