85 lines
1.3 KiB
NASM
85 lines
1.3 KiB
NASM
title "Processor type and stepping detection"
|
|
;++
|
|
;
|
|
; Copyright (c) 1989 Microsoft Corporation
|
|
;
|
|
; Module Name:
|
|
;
|
|
; cpu.asm
|
|
;
|
|
; Abstract:
|
|
;
|
|
; This module implements the assembley code necessary to determine
|
|
; cpu type and stepping information.
|
|
;
|
|
; Author:
|
|
;
|
|
; Shie-Lin Tzong (shielint) 28-Oct-1991.
|
|
; Some of the code is extracted from Cruiser (mainly,
|
|
; the code to determine 386 stepping.)
|
|
;
|
|
; Environment:
|
|
;
|
|
; 80x86
|
|
;
|
|
; Revision History:
|
|
;
|
|
;--
|
|
|
|
.xlist
|
|
include ks386.inc
|
|
include callconv.inc
|
|
.list
|
|
|
|
.586p
|
|
|
|
_TEXT SEGMENT DWORD PUBLIC 'CODE' ; Put IdleLoop in text section
|
|
ASSUME DS:FLAT, ES:FLAT, SS:NOTHING, FS:NOTHING, GS:NOTHING
|
|
|
|
;++
|
|
;
|
|
; ULONGLONG
|
|
; FASTCALL
|
|
; RDMSR (
|
|
; IN ULONG MsrRegister
|
|
; );
|
|
;
|
|
; Routine Description:
|
|
;
|
|
; Arguments:
|
|
;
|
|
; Return Value:
|
|
;
|
|
;--
|
|
cPublicFastCall RDMSR, 1
|
|
rdmsr
|
|
fstRET RDMSR
|
|
fstENDP RDMSR
|
|
|
|
|
|
;++
|
|
;
|
|
; VOID
|
|
; WRMSR (
|
|
; IN ULONG MsrRegister
|
|
; IN LONGLONG MsrValue
|
|
; );
|
|
;
|
|
; Routine Description:
|
|
;
|
|
; Arguments:
|
|
;
|
|
; Return Value:
|
|
;
|
|
;--
|
|
cPublicProc _WRMSR, 3
|
|
mov ecx, [esp+4]
|
|
mov eax, [esp+8]
|
|
mov edx, [esp+12]
|
|
wrmsr
|
|
stdRET _WRMSR
|
|
stdENDP _WRMSR
|
|
|
|
_TEXT ENDS
|
|
END
|