plan 9 kernel history: overview | file list | diff list

1994/0512/pc/clock.c (diff list | history)

1994/0510/sys/src/9/pc/clock.c:22,271994/0512/sys/src/9/pc/clock.c:22,28 (short | long | prev | next)
change from square wave to retriggered 1/HZ interrupts. (maybe hw problems? XXX). avoid needless splhi/spllo back and forth.
rsc Fri Mar 4 12:44:25 2005
1992/0923    
 
	/* modes */ 
	Square=	0x36,		/* perioic square wave */ 
1994/0512    
	Trigger= 0x30,		/* interrupt on terminal count */ 
1992/0923    
 
	Freq=	1193182,	/* Real clock frequency */ 
1991/0705    
}; 
1994/0510/sys/src/9/pc/clock.c:47,561994/0512/sys/src/9/pc/clock.c:48,65
1993/1124    
{ 
	Proc *p; 
	int nrun = 0; 
1994/0512    
	int islow = 0; 
1994/0510    
	extern int hwcursor; 
1993/1124    
 
	USED(arg); 
 
1994/0512    
	/* 
	 *  set clock for 1/HZ seconds 
	 */ 
	outb(Tmode, Load0|Trigger); 
	outb(T0cntr, (Freq/HZ));	/* low byte */ 
	outb(T0cntr, (Freq/HZ)>>8);	/* high byte */ 
 
1993/1124    
	m->ticks++; 
 
1994/0510    
	uartclock(); 
1994/0510/sys/src/9/pc/clock.c:75,931994/0512/sys/src/9/pc/clock.c:84,111
1994/0507    
			sched(); 
	 
		/* user profiling clock */ 
1994/0512    
		islow = 1; 
1994/0507    
		spllo();		/* in case we fault */ 
		(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1); 
		splhi(); 
	} 
1993/1124    
 
1994/0512    
	/* 
	 *  anything from here down can be running spllo() 
	 */ 
 
1994/0507    
	/* last because it could spllo() */ 
1994/0510    
	if(hwcursor) 
		mouseclock(); 
	else { 
		spllo(); 
1994/0512    
		if(!islow){ 
			islow = 1; 
			spllo(); 
		} 
1994/0510    
		mouseclock(); 
		splhi(); 
	} 
1994/0512    
 
	if(islow) 
		splhi(); 
1993/1124    
} 
 
1994/0302    
/* 
1994/0510/sys/src/9/pc/clock.c:131,1391994/0512/sys/src/9/pc/clock.c:149,157
1993/1124    
	setvec(Clockvec, clock, 0); 
1991/0709    
 
	/* 
	 *  make clock output a square wave with a 1/HZ period 
1994/0512    
	 *  set clock for 1/HZ seconds 
1991/0709    
	 */ 
1992/0923    
	outb(Tmode, Load0|Square); 
1994/0512    
	outb(Tmode, Load0|Trigger); 
1991/0709    
	outb(T0cntr, (Freq/HZ));	/* low byte */ 
	outb(T0cntr, (Freq/HZ)>>8);	/* high byte */ 
1992/0922    
 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)