Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

71 lines
1.7 KiB

// TITLE("Get Tick Count")
//++
//
// Copyright (c) 1992 Microsoft Corporation
//
// Module Name:
//
// gettick.s
//
// Abstract:
//
// This module contains the implementation for the get tick count
// system service that returns the number of milliseconds since the
// system was booted.
//
// Author:
//
// David N. Cutler (davec) 10-Sep-1992
//
// Environment:
//
// Kernel mode.
//
// Revision History:
//
//--
#include "ksmips.h"
SBTTL("Get Tick Count")
//++
//
// ULONG
// NtGetTickCount (
// VOID
// )
//
// Routine Description:
//
// This function computes the number of milliseconds since the system
// was booted. The computation is performed by multiplying the clock
// interrupt count by a scaled fixed binary multiplier and then right
// shifting the 64-bit result to extract the 32-bit millisecond count.
//
// N.B. The tick count value wraps every 46.29 days.
//
// Arguments:
//
// None.
//
// Return Value:
//
// The number of milliseconds since the system was booted is returned
// as the function value.
//
//--
LEAF_ENTRY(NtGetTickCount)
lw t0,KeTickCount // get current tick count value
lw t1,ExpTickCountMultiplier // get tick count multiplier
multu t0,t1 // compute 64-bit unsigned product
mflo v0 // get low 32-bits of product
mfhi v1 // get high 32-bit of product
srl v0,v0,24 // extract 32-bit integer part
sll v1,v1,32 - 24 //
or v0,v0,v1 //
j ra // return
.end NtGetTickCount