[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     ! 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