ArchInterruptDefs.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /** @file
  2. Ia32 arch definition for CPU Exception Handler Library.
  3. Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #ifndef _ARCH_CPU_INTERRUPT_DEFS_H_
  7. #define _ARCH_CPU_INTERRUPT_DEFS_H_
  8. typedef struct {
  9. EFI_SYSTEM_CONTEXT_IA32 SystemContext;
  10. BOOLEAN ExceptionDataFlag;
  11. UINTN OldIdtHandler;
  12. } EXCEPTION_HANDLER_CONTEXT;
  13. //
  14. // Register Structure Definitions
  15. //
  16. typedef struct {
  17. EFI_STATUS_CODE_DATA Header;
  18. EFI_SYSTEM_CONTEXT_IA32 SystemContext;
  19. } CPU_STATUS_CODE_TEMPLATE;
  20. typedef struct {
  21. SPIN_LOCK SpinLock;
  22. UINT32 ApicId;
  23. UINT32 Attribute;
  24. UINTN ExceptonHandler;
  25. UINTN OldFlags;
  26. UINTN OldCs;
  27. UINTN OldIp;
  28. UINTN ExceptionData;
  29. UINT8 HookAfterStubHeaderCode[HOOKAFTER_STUB_SIZE];
  30. } RESERVED_VECTORS_DATA;
  31. #define CPU_TSS_DESC_SIZE \
  32. (sizeof (IA32_TSS_DESCRIPTOR) * \
  33. (FixedPcdGetSize (PcdCpuStackSwitchExceptionList) + 1))
  34. #define CPU_TSS_SIZE \
  35. (sizeof (IA32_TASK_STATE_SEGMENT) * \
  36. (FixedPcdGetSize (PcdCpuStackSwitchExceptionList) + 1))
  37. #endif