[BACK]Return to getsecs.c CVS log [TXT][DIR] Up to [local] / sys / arch / alpha / stand / netboot

Annotation of sys/arch/alpha/stand/netboot/getsecs.c, Revision 1.1.1.1

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

CVSweb