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>
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
| ;-----------------------------------------------------------------------------
 | |
| ;
 | |
| ; Copyright (c) 2021, AMD. All rights reserved.<BR>
 | |
| ; SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| ;
 | |
| ;-----------------------------------------------------------------------------
 | |
| 
 | |
| %include "Nasm.inc"
 | |
| 
 | |
|     SECTION .text
 | |
| 
 | |
| ;-----------------------------------------------------------------------------
 | |
| ;  UINT32
 | |
| ;  EFIAPI
 | |
| ;  AsmPvalidate (
 | |
| ;    IN   UINT32              PageSize
 | |
| ;    IN   UINT32              Validate,
 | |
| ;    IN   UINT64              Address
 | |
| ;    )
 | |
| ;-----------------------------------------------------------------------------
 | |
| global ASM_PFX(AsmPvalidate)
 | |
| ASM_PFX(AsmPvalidate):
 | |
|   mov     rax, r8
 | |
| 
 | |
|   PVALIDATE
 | |
| 
 | |
|   ; Save the carry flag.
 | |
|   setc    dl
 | |
| 
 | |
|   ; The PVALIDATE instruction returns the status in rax register.
 | |
|   cmp     rax, 0
 | |
|   jne     PvalidateExit
 | |
| 
 | |
|   ; Check the carry flag to determine if RMP entry was updated.
 | |
|   cmp     dl, 0
 | |
|   je      PvalidateExit
 | |
| 
 | |
|   ; Return the PVALIDATE_RET_NO_RMPUPDATE.
 | |
|   mov     rax, 255
 | |
| 
 | |
| PvalidateExit:
 | |
|   ret
 |