⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pldebugsupport.h

📁 Next BIOS Source code : Extensible Firmware Interface
💻 H
字号:
/*++

Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.

Module Name:

    plDebugSupport.h

Abstract:

    IA32 specific debug support macros, typedefs and prototypes.

Revision History

--*/

#ifndef _PLDEBUG_SUPPORT_H
#define _PLDEBUG_SUPPORT_H

#include "efi.h"
#include EFI_PROTOCOL_DEFINITION (DebugSupport)

#define NUM_IDT_ENTRIES                 0x78
#define SYSTEM_TIMER_VECTOR             0x68
#define VECTOR_ENTRY_PAGES              1
#define CopyDescriptor(Dest, Src)       EfiCopyMem ((Dest), (Src), sizeof (DESCRIPTOR))
#define ZeroDescriptor(Dest)            CopyDescriptor ((Dest), &NullDesc)
#define ReadIdt(Vector, Dest)           CopyDescriptor ((Dest), &((GetIdtr())[(Vector)]))
#define WriteIdt(Vector, Src)           CopyDescriptor (&((GetIdtr())[(Vector)]), (Src))
#define CompareDescriptor(Desc1, Desc2) EfiCompareMem ((Desc1), (Desc2), sizeof (DESCRIPTOR))
#define EFI_ISA                         IsaIa32
#define FF_FXSR                         (1 << 24)

typedef UINT64 DESCRIPTOR;

typedef struct {
  DESCRIPTOR                OrigDesc;
  VOID                      (*OrigVector)(void);
  DESCRIPTOR                NewDesc;
  VOID                      (*StubEntry) (void);
  VOID                      (*RegisteredCallback) ();
} IDT_ENTRY;

extern EFI_SYSTEM_CONTEXT   SystemContext;
extern UINT8                InterruptEntryStub[];
extern UINT32               StubSize;
extern void                 (*OrigVector) (void);

void
CommonIdtEntry (
  void
  );

BOOLEAN
FxStorSupport (
  void
  );

DESCRIPTOR *
GetIdtr (
  void
  );

void
Vect2Desc (
  DESCRIPTOR * DestDesc,
  void (*Vector) (void)
  );

BOOLEAN
WriteInterruptFlag (
  BOOLEAN NewState
  );

EFI_STATUS
plInitializeDebugSupportDriver (
  void
  );

EFI_STATUS
plUnloadDebugSupportDriver (
  IN EFI_HANDLE                       ImageHandle
  );

//
// DebugSupport protocol member functions
//
EFI_STATUS
GetMaximumProcessorIndex (
  IN EFI_DEBUG_SUPPORT_PROTOCOL       *This,
  OUT UINTN                           *MaxProcessorIndex
  );
  
EFI_STATUS
RegisterPeriodicCallback (
  IN EFI_DEBUG_SUPPORT_PROTOCOL       *This,
  IN UINTN                            ProcessorIndex,
  IN EFI_PERIODIC_CALLBACK            PeriodicCallback
  );

EFI_STATUS
RegisterExceptionCallback (
  IN EFI_DEBUG_SUPPORT_PROTOCOL       *This,
  IN UINTN                            ProcessorIndex,
  IN EFI_EXCEPTION_CALLBACK           NewCallback,
  IN EFI_EXCEPTION_TYPE               ExceptionType
  );

EFI_STATUS
InvalidateInstructionCache (
  IN EFI_DEBUG_SUPPORT_PROTOCOL       *This,
  IN UINTN                            ProcessorIndex,
  IN VOID                             *Start,
  IN UINT64                           Length
  );

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -