/* * Initialize the microsecond clock. */ void init_usec_clock() { #ifdef _SEQUENT_ usclk_init(); #endif }
VOID usc_init() { #if defined(MULTIMAX) usc_multimax_timer = timer_init(); usc_MD_rollover_val = (usc_time_t) ((1<<usc_MD_timer_size)-1); #define TIMER_FOUND "multimax" #endif #if defined(SYMMETRY) || defined(SYMMETRY_PTX) unsigned long roll; usclk_init(); roll = 1 << (usc_MD_timer_size-1); usc_MD_rollover_val = (usc_time_t) (roll + roll - 1); #define TIMER_FOUND "symmetry" #endif #if defined(TC_2000) || defined(TC_2000_TCMP) unsigned long roll; roll = 1 << (usc_MD_timer_size-1); usc_MD_rollover_val = (usc_time_t) (roll + roll - 1); #define TIMER_FOUND "tc2000 butterfly" #endif #if defined(IPSC860) esize_t hwtime; unsigned long ustime; hwtime.shigh = hwtime.slow = ~0x0; hwtime.shigh = (hwtime.shigh & 0x7) << (sizeof(long)*8-3); hwtime.slow = ((hwtime.slow >> 3) & ~(0x7 << (sizeof(long)*8-3))) | hwtime.shigh; ustime = (unsigned long)hwtime.slow * 0.8; usc_MD_rollover_val = (usc_time_t) ustime; #define TIMER_FOUND "ipsc" #endif #if defined(NCUBE) unsigned long roll; roll = 1 << (usc_MD_timer_size-1); usc_MD_rollover_val = (usc_time_t) (roll + roll - 1); #define TIMER_FOUND "ncube" #endif #if defined(FX2800) || defined(FX2800_SWITCH) struct hrcval temptime; unsigned long roll; hrcstamp(&temptime); roll = 1 << ((sizeof(usc_time_t) * 8) - 1); usc_MD_rollover_val = (usc_time_t) (roll + roll - 1); #define TIMER_FOUND "Alliant fx2800" #endif #if defined(SUN) || defined(HP) || defined(DEC5000) || \ defined(SUN_SOLARIS) || defined(FREEBSD) || defined(LINUX) || \ defined(I86_SOLARIS) || defined(NETBSD) || \ defined(BALANCE) || \ defined(RS6000) || defined(IBM3090) || \ defined(NEXT) || defined(TITAN) || defined(GP_1000) || \ defined(KSR) || \ defined(MEIKO_CS2) || \ defined(SGI) || defined(FX8) || defined(CRAY) struct timeval tp; struct timezone tzp; unsigned long roll; #if defined(SUN_SOLARIS) && defined(USE_WIERDGETTIMEOFDAY) gettimeofday(&tp); #else gettimeofday(&tp,&tzp); #endif roll = (usc_time_t) ((usc_time_t) 1 << ((sizeof(usc_time_t)*8)-1)); roll = roll + roll - 1; usc_MD_rollover_val = (usc_time_t) (roll / 1000000); #define TIMER_FOUND "gettimeofday" #endif #ifndef TIMER_FOUND 'Error - no timer defined. Please file a bug report' #endif }