Files
system76-edk2/MdePkg/Include/X64/Nasm.inc
Brijesh Singh 5a7cbd54a1 MdePkg/BaseLib: add support for PVALIDATE instruction
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275

The PVALIDATE instruction validates or rescinds validation of a guest
page RMP entry. Upon completion, a return code is stored in EAX, rFLAGS
bits OF, ZF, AF, PF and SF are set based on this return code. If the
instruction completed succesfully, the rFLAGS bit CF indicates if the
contents of the RMP entry were changed or not.

For more information about the instruction see AMD APM volume 3.

Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Min Xu <min.m.xu@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Erdem Aktas <erdemaktas@google.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Message-Id: <20210519181949.6574-8-brijesh.singh@amd.com>
2021-05-29 12:15:21 +00:00

81 lines
2.0 KiB
PHP

;------------------------------------------------------------------------------
;
; Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Abstract:
;
; This file provides macro definitions for NASM files.
;
;------------------------------------------------------------------------------
%macro SAVEPREVSSP 0
DB 0xF3, 0x0F, 0x01, 0xEA
%endmacro
%macro CLRSSBSY_RAX 0
DB 0xF3, 0x0F, 0xAE, 0x30
%endmacro
%macro RSTORSSP_RAX 0
DB 0xF3, 0x0F, 0x01, 0x28
%endmacro
%macro SETSSBSY 0
DB 0xF3, 0x0F, 0x01, 0xE8
%endmacro
%macro READSSP_RAX 0
DB 0xF3, 0x48, 0x0F, 0x1E, 0xC8
%endmacro
%macro INCSSP_RAX 0
DB 0xF3, 0x48, 0x0F, 0xAE, 0xE8
%endmacro
;
; Macro for the PVALIDATE instruction, defined in AMD APM volume 3.
; NASM feature request URL: https://bugzilla.nasm.us/show_bug.cgi?id=3392753
;
%macro PVALIDATE 0
DB 0xF2, 0x0F, 0x01, 0xFF
%endmacro
; NASM provides built-in macros STRUC and ENDSTRUC for structure definition.
; For example, to define a structure called mytype containing a longword,
; a word, a byte and a string of bytes, you might code
;
; struc mytype
;
; mt_long: resd 1
; mt_word: resw 1
; mt_byte: resb 1
; mt_str: resb 32
;
; endstruc
;
; Below macros are help to map the C types and the RESB family of pseudo-instructions.
; So that the above structure definition can be coded as
;
; struc mytype
;
; mt_long: CTYPE_UINT32 1
; mt_word: CTYPE_UINT16 1
; mt_byte: CTYPE_UINT8 1
; mt_str: CTYPE_CHAR8 32
;
; endstruc
%define CTYPE_UINT64 resq
%define CTYPE_INT64 resq
%define CTYPE_UINT32 resd
%define CTYPE_INT32 resd
%define CTYPE_UINT16 resw
%define CTYPE_INT16 resw
%define CTYPE_BOOLEAN resb
%define CTYPE_UINT8 resb
%define CTYPE_CHAR8 resb
%define CTYPE_INT8 resb
%define CTYPE_UINTN resq
%define CTYPE_INTN resq