3 Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4 SPDX-License-Identifier: BSD-2-Clause-Patent
12 NT Emulation Architectural Protocol Driver as defined in Tiano.
16 #ifndef _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_
17 #define _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_
20 #include <FrameworkDxe.h>
21 #include <IndustryStandard/SmBios.h>
22 #include <Protocol/Cpu.h>
23 #include <Protocol/Smbios.h>
24 #include <Protocol/FrameworkHii.h>
25 #include <Guid/DataHubRecords.h>
26 #include <Protocol/CpuIo2.h>
27 #include <Protocol/WinNtIo.h>
28 #include <Library/BaseLib.h>
29 #include <Library/DebugLib.h>
30 #include <Library/HiiLib.h>
31 #include <Library/UefiDriverEntryPoint.h>
32 #include <Library/BaseMemoryLib.h>
33 #include <Library/MemoryAllocationLib.h>
34 #include <Library/UefiBootServicesTableLib.h>
35 #include <Library/PcdLib.h>
36 #include <Library/WinNtLib.h>
39 extern UINT8 CpuStrings
[];
42 // Internal Data Structures
44 #define CPU_ARCH_PROT_PRIVATE_SIGNATURE SIGNATURE_32 ('c', 'a', 'p', 'd')
50 EFI_CPU_ARCH_PROTOCOL Cpu
;
51 EFI_CPU_IO2_PROTOCOL CpuIo
;
54 // Local Data for CPU interface goes here
56 CRITICAL_SECTION NtCriticalSection
;
57 BOOLEAN InterruptState
;
59 } CPU_ARCH_PROTOCOL_PRIVATE
;
61 #define CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS(a) \
63 CPU_ARCH_PROTOCOL_PRIVATE, \
65 CPU_ARCH_PROT_PRIVATE_SIGNATURE \
70 CpuMemoryServiceRead (
71 IN EFI_CPU_IO2_PROTOCOL
*This
,
72 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
80 CpuMemoryServiceWrite (
81 IN EFI_CPU_IO2_PROTOCOL
*This
,
82 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
91 IN EFI_CPU_IO2_PROTOCOL
*This
,
92 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
93 IN UINT64 UserAddress
,
95 IN OUT VOID
*UserBuffer
101 IN EFI_CPU_IO2_PROTOCOL
*This
,
102 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
103 IN UINT64 UserAddress
,
105 IN OUT VOID
*UserBuffer
112 IN EFI_HANDLE ImageHandle
,
113 IN EFI_SYSTEM_TABLE
*SystemTable
118 WinNtFlushCpuDataCache (
119 IN EFI_CPU_ARCH_PROTOCOL
*This
,
120 IN EFI_PHYSICAL_ADDRESS Start
,
122 IN EFI_CPU_FLUSH_TYPE FlushType
127 WinNtEnableInterrupt (
128 IN EFI_CPU_ARCH_PROTOCOL
*This
133 WinNtDisableInterrupt (
134 IN EFI_CPU_ARCH_PROTOCOL
*This
139 WinNtGetInterruptState (
140 IN EFI_CPU_ARCH_PROTOCOL
*This
,
147 IN EFI_CPU_ARCH_PROTOCOL
*This
,
148 IN EFI_CPU_INIT_TYPE InitType
153 WinNtRegisterInterruptHandler (
154 IN EFI_CPU_ARCH_PROTOCOL
*This
,
155 IN EFI_EXCEPTION_TYPE InterruptType
,
156 IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler
162 IN EFI_CPU_ARCH_PROTOCOL
*This
,
163 IN UINT32 TimerIndex
,
164 OUT UINT64
*TimerValue
,
165 OUT UINT64
*TimerPeriod OPTIONAL
170 WinNtSetMemoryAttributes (
171 IN EFI_CPU_ARCH_PROTOCOL
*This
,
172 IN EFI_PHYSICAL_ADDRESS BaseAddress
,