mirror of https://github.com/acidanthera/audk.git
MdeModulePkg: Move CPU_EXCEPTION_INIT_DATA to UefiCpuPkg
Since the API InitializeSeparateExceptionStacks is simplified and does't use the struct CPU_EXCEPTION_INIT_DATA, CPU_EXCEPTION_INIT_DATA become a inner implementation of CpuExcetionHandlerLib. Cc: Eric Dong <eric.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Leif Lindholm <quic_llindhol@quicinc.com> Cc: Dandan Bi <dandan.bi@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Jian J Wang <jian.j.wang@intel.com> Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
This commit is contained in:
parent
0f7bccf584
commit
9a24c3546e
|
@ -13,73 +13,6 @@
|
||||||
#include <Ppi/VectorHandoffInfo.h>
|
#include <Ppi/VectorHandoffInfo.h>
|
||||||
#include <Protocol/Cpu.h>
|
#include <Protocol/Cpu.h>
|
||||||
|
|
||||||
#define CPU_EXCEPTION_INIT_DATA_REV 1
|
|
||||||
|
|
||||||
typedef union {
|
|
||||||
struct {
|
|
||||||
//
|
|
||||||
// Revision number of this structure.
|
|
||||||
//
|
|
||||||
UINT32 Revision;
|
|
||||||
//
|
|
||||||
// The address of top of known good stack reserved for *ALL* exceptions
|
|
||||||
// listed in field StackSwitchExceptions.
|
|
||||||
//
|
|
||||||
UINTN KnownGoodStackTop;
|
|
||||||
//
|
|
||||||
// The size of known good stack for *ONE* exception only.
|
|
||||||
//
|
|
||||||
UINTN KnownGoodStackSize;
|
|
||||||
//
|
|
||||||
// Buffer of exception vector list for stack switch.
|
|
||||||
//
|
|
||||||
UINT8 *StackSwitchExceptions;
|
|
||||||
//
|
|
||||||
// Number of exception vectors in StackSwitchExceptions.
|
|
||||||
//
|
|
||||||
UINTN StackSwitchExceptionNumber;
|
|
||||||
//
|
|
||||||
// Buffer of IDT table. It must be type of IA32_IDT_GATE_DESCRIPTOR.
|
|
||||||
// Normally there's no need to change IDT table size.
|
|
||||||
//
|
|
||||||
VOID *IdtTable;
|
|
||||||
//
|
|
||||||
// Size of buffer for IdtTable.
|
|
||||||
//
|
|
||||||
UINTN IdtTableSize;
|
|
||||||
//
|
|
||||||
// Buffer of GDT table. It must be type of IA32_SEGMENT_DESCRIPTOR.
|
|
||||||
//
|
|
||||||
VOID *GdtTable;
|
|
||||||
//
|
|
||||||
// Size of buffer for GdtTable.
|
|
||||||
//
|
|
||||||
UINTN GdtTableSize;
|
|
||||||
//
|
|
||||||
// Pointer to start address of descriptor of exception task gate in the
|
|
||||||
// GDT table. It must be type of IA32_TSS_DESCRIPTOR.
|
|
||||||
//
|
|
||||||
VOID *ExceptionTssDesc;
|
|
||||||
//
|
|
||||||
// Size of buffer for ExceptionTssDesc.
|
|
||||||
//
|
|
||||||
UINTN ExceptionTssDescSize;
|
|
||||||
//
|
|
||||||
// Buffer of task-state segment for exceptions. It must be type of
|
|
||||||
// IA32_TASK_STATE_SEGMENT.
|
|
||||||
//
|
|
||||||
VOID *ExceptionTss;
|
|
||||||
//
|
|
||||||
// Size of buffer for ExceptionTss.
|
|
||||||
//
|
|
||||||
UINTN ExceptionTssSize;
|
|
||||||
//
|
|
||||||
// Flag to indicate if default handlers should be initialized or not.
|
|
||||||
//
|
|
||||||
BOOLEAN InitDefaultHandlers;
|
|
||||||
} Ia32, X64;
|
|
||||||
} CPU_EXCEPTION_INIT_DATA;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initializes all CPU exceptions entries and provides the default exception handlers.
|
Initializes all CPU exceptions entries and provides the default exception handlers.
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
Common header file for CPU Exception Handler Library.
|
Common header file for CPU Exception Handler Library.
|
||||||
|
|
||||||
Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2012 - 2022, Intel Corporation. All rights reserved.<BR>
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
@ -49,6 +49,73 @@
|
||||||
|
|
||||||
#define CPU_TSS_GDT_SIZE (SIZE_2KB + CPU_TSS_DESC_SIZE + CPU_TSS_SIZE)
|
#define CPU_TSS_GDT_SIZE (SIZE_2KB + CPU_TSS_DESC_SIZE + CPU_TSS_SIZE)
|
||||||
|
|
||||||
|
#define CPU_EXCEPTION_INIT_DATA_REV 1
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
struct {
|
||||||
|
//
|
||||||
|
// Revision number of this structure.
|
||||||
|
//
|
||||||
|
UINT32 Revision;
|
||||||
|
//
|
||||||
|
// The address of top of known good stack reserved for *ALL* exceptions
|
||||||
|
// listed in field StackSwitchExceptions.
|
||||||
|
//
|
||||||
|
UINTN KnownGoodStackTop;
|
||||||
|
//
|
||||||
|
// The size of known good stack for *ONE* exception only.
|
||||||
|
//
|
||||||
|
UINTN KnownGoodStackSize;
|
||||||
|
//
|
||||||
|
// Buffer of exception vector list for stack switch.
|
||||||
|
//
|
||||||
|
UINT8 *StackSwitchExceptions;
|
||||||
|
//
|
||||||
|
// Number of exception vectors in StackSwitchExceptions.
|
||||||
|
//
|
||||||
|
UINTN StackSwitchExceptionNumber;
|
||||||
|
//
|
||||||
|
// Buffer of IDT table. It must be type of IA32_IDT_GATE_DESCRIPTOR.
|
||||||
|
// Normally there's no need to change IDT table size.
|
||||||
|
//
|
||||||
|
VOID *IdtTable;
|
||||||
|
//
|
||||||
|
// Size of buffer for IdtTable.
|
||||||
|
//
|
||||||
|
UINTN IdtTableSize;
|
||||||
|
//
|
||||||
|
// Buffer of GDT table. It must be type of IA32_SEGMENT_DESCRIPTOR.
|
||||||
|
//
|
||||||
|
VOID *GdtTable;
|
||||||
|
//
|
||||||
|
// Size of buffer for GdtTable.
|
||||||
|
//
|
||||||
|
UINTN GdtTableSize;
|
||||||
|
//
|
||||||
|
// Pointer to start address of descriptor of exception task gate in the
|
||||||
|
// GDT table. It must be type of IA32_TSS_DESCRIPTOR.
|
||||||
|
//
|
||||||
|
VOID *ExceptionTssDesc;
|
||||||
|
//
|
||||||
|
// Size of buffer for ExceptionTssDesc.
|
||||||
|
//
|
||||||
|
UINTN ExceptionTssDescSize;
|
||||||
|
//
|
||||||
|
// Buffer of task-state segment for exceptions. It must be type of
|
||||||
|
// IA32_TASK_STATE_SEGMENT.
|
||||||
|
//
|
||||||
|
VOID *ExceptionTss;
|
||||||
|
//
|
||||||
|
// Size of buffer for ExceptionTss.
|
||||||
|
//
|
||||||
|
UINTN ExceptionTssSize;
|
||||||
|
//
|
||||||
|
// Flag to indicate if default handlers should be initialized or not.
|
||||||
|
//
|
||||||
|
BOOLEAN InitDefaultHandlers;
|
||||||
|
} Ia32, X64;
|
||||||
|
} CPU_EXCEPTION_INIT_DATA;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Record exception handler information
|
// Record exception handler information
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue