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