getsecs.c revision 1.1
1#include <sys/param.h> 2#include "include/prom.h" 3#include "include/rpb.h" 4 5int 6getsecs() 7{ 8 static long tnsec; 9 static long lastpcc, wrapsecs; 10 long curpcc, pccdiff; 11 12 if (tnsec == 0) { 13 tnsec = 1; 14 lastpcc = alpha_rpcc() & 0xffffffff; 15 wrapsecs = (0xffffffff / 16 ((struct rpb *)HWRPB_ADDR)->rpb_cc_freq) + 1; 17 18 printf("getsecs: cc freq = %d, time to wrap = %d\n", 19 ((struct rpb *)HWRPB_ADDR)->rpb_cc_freq, wrapsecs); 20 } 21 22 curpcc = alpha_rpcc() & 0xffffffff; 23 if (curpcc < lastpcc) 24 curpcc += 0x100000000; 25 26 tnsec += ((curpcc - lastpcc) * 1000000000) / ((struct rpb *)HWRPB_ADDR)->rpb_cc_freq; 27 lastpcc = curpcc; 28 29 return (tnsec / 1000000000); 30} 31