Load new GDT table and update segment accordingly. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17988 6f19259b-4bc3-4df7-8a09-765794883524
57 lines
1.3 KiB
C
57 lines
1.3 KiB
C
/** @file
|
|
Definitions to install Multiple Processor PPI.
|
|
|
|
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
|
This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
**/
|
|
|
|
#ifndef _CPU_MP_PEI_H_
|
|
#define _CPU_MP_PEI_H_
|
|
|
|
#include <PiPei.h>
|
|
|
|
|
|
#include <Library/BaseLib.h>
|
|
#include <Library/PeimEntryPoint.h>
|
|
|
|
#pragma pack(1)
|
|
typedef union {
|
|
struct {
|
|
UINT32 LimitLow : 16;
|
|
UINT32 BaseLow : 16;
|
|
UINT32 BaseMid : 8;
|
|
UINT32 Type : 4;
|
|
UINT32 System : 1;
|
|
UINT32 Dpl : 2;
|
|
UINT32 Present : 1;
|
|
UINT32 LimitHigh : 4;
|
|
UINT32 Software : 1;
|
|
UINT32 Reserved : 1;
|
|
UINT32 DefaultSize : 1;
|
|
UINT32 Granularity : 1;
|
|
UINT32 BaseHigh : 8;
|
|
} Bits;
|
|
UINT64 Uint64;
|
|
} IA32_GDT;
|
|
#pragma pack()
|
|
/**
|
|
Assembly code to load GDT table and update segment accordingly.
|
|
|
|
@param Gdtr Pointer to GDT descriptor
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
AsmInitializeGdt (
|
|
IN IA32_DESCRIPTOR *Gdtr
|
|
);
|
|
|
|
|
|
#endif
|