blob: d6a3e2965064e043ff4d0d61c33080b0f5b74942 [file] [log] [blame]
;------------------------------------------------------------------------------
;
; Copyright (c) 2013 Intel Corporation.
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions
; are met:
;
; * Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer.
; * Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in
; the documentation and/or other materials provided with the
; distribution.
; * Neither the name of Intel Corporation nor the names of its
; contributors may be used to endorse or promote products derived
; from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; Module Name:
;
; ReadMsrUtils.asm
;
; Abstract:
;
; Read Msr support functions
;
;------------------------------------------------------------------------------
.586p
.model flat,C
.code
;------------------------------------------------------------------------------
; UINT64
; EFIAPI
; AsmReadMsrReturnResult (
; IN UINT32 Index,
; IN UINT32 QuarkMsrDataLow,
; IN UINT32 QuarkMsrDataHigh
; );
;------------------------------------------------------------------------------
AsmReadMsrReturnResult PROC
mov eax, [esp + 8] ; QuarkMsrDataLow
mov ecx, [esp + 4] ; Index
mov edx, [esp + 12] ; QuarkMsrDataHigh
ret
AsmReadMsrReturnResult ENDP
;------------------------------------------------------------------------------
; UINT64
; EFIAPI
; AsmReadMsrRealMsrAccess (
; IN UINT32 Index
; );
;------------------------------------------------------------------------------
AsmReadMsrRealMsrAccess PROC
mov ecx, [esp + 4] ; Index
mov eax, 0FEE00900h
mov edx, 00000000h
cmp ecx, 01Bh ; EFI_MSR_IA32_APIC_BASE
je exitDone
rdmsr
exitDone:
ret
AsmReadMsrRealMsrAccess ENDP
;------------------------------------------------------------------------------
; UINT64
; EFIAPI
; AsmWriteMsrRealMsrAccess (
; IN UINT32 Index,
; IN UINT32 QuarkMsrDataLow,
; IN UINT32 QuarkMsrDataHigh
; );
;------------------------------------------------------------------------------
AsmWriteMsrRealMsrAccess PROC
mov eax, [esp + 8] ; QuarkMsrDataLow
mov ecx, [esp + 4] ; Index
mov edx, [esp + 12] ; QuarkMsrDataHigh
wrmsr
ret
AsmWriteMsrRealMsrAccess ENDP
END