REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1039 Current implementation not checks system mode before using PAGE_TABLE_LIB_PAGING_CONTEXT.ContextData.X64 or PAGE_TABLE_LIB_PAGING_CONTEXT.ContextData.Ia32. This patch check the mode before using the correct one. Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
		
			
				
	
	
		
			35 lines
		
	
	
		
			839 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			839 B
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Return Paging attribute.
 | 
						|
 | 
						|
  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include "CpuPageTable.h"
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Get paging details.
 | 
						|
 | 
						|
  @param  PagingContextData      The paging context.
 | 
						|
  @param  PageTableBase          Return PageTableBase field.
 | 
						|
  @param  Attributes             Return Attributes field.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
GetPagingDetails (
 | 
						|
  IN  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA *PagingContextData,
 | 
						|
  OUT UINTN                              **PageTableBase     OPTIONAL,
 | 
						|
  OUT UINT32                             **Attributes        OPTIONAL
 | 
						|
  )
 | 
						|
{
 | 
						|
  if (PageTableBase != NULL) {
 | 
						|
    *PageTableBase = &PagingContextData->X64.PageTableBase;
 | 
						|
  }
 | 
						|
  if (Attributes != NULL) {
 | 
						|
    *Attributes = &PagingContextData->X64.Attributes;
 | 
						|
  }
 | 
						|
}
 | 
						|
 |