Windows2000/private/ntos/ex/mips/gettick.s
2020-09-30 17:12:32 +02:00

72 lines
1.7 KiB
ArmAsm
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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