3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 NT Emulation Architectural Protocol Driver as defined in Tiano.
22 #ifndef _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_
23 #define _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_
26 #include <FrameworkDxe.h>
27 #include <Protocol/Cpu.h>
28 #include <Protocol/DataHub.h>
29 #include <Protocol/FrameworkHii.h>
30 #include <Guid/DataHubRecords.h>
31 #include <Protocol/CpuIo.h>
32 #include <Protocol/WinNtIo.h>
33 #include <Library/BaseLib.h>
34 #include <Library/DebugLib.h>
35 #include <Library/HiiLib.h>
36 #include <Library/UefiDriverEntryPoint.h>
37 #include <Library/BaseMemoryLib.h>
38 #include <Library/MemoryAllocationLib.h>
39 #include <Library/UefiBootServicesTableLib.h>
40 #include <Library/PcdLib.h>
43 extern UINT8 CpuStrings
[];
46 // Internal Data Structures
48 #define CPU_ARCH_PROT_PRIVATE_SIGNATURE SIGNATURE_32 ('c', 'a', 'p', 'd')
54 EFI_CPU_ARCH_PROTOCOL Cpu
;
55 EFI_CPU_IO_PROTOCOL CpuIo
;
58 // Local Data for CPU interface goes here
60 CRITICAL_SECTION NtCriticalSection
;
61 BOOLEAN InterruptState
;
63 } CPU_ARCH_PROTOCOL_PRIVATE
;
65 #define CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS(a) \
67 CPU_ARCH_PROTOCOL_PRIVATE, \
69 CPU_ARCH_PROT_PRIVATE_SIGNATURE \
74 CpuMemoryServiceRead (
75 IN EFI_CPU_IO_PROTOCOL
*This
,
76 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
84 CpuMemoryServiceWrite (
85 IN EFI_CPU_IO_PROTOCOL
*This
,
86 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
95 IN EFI_CPU_IO_PROTOCOL
*This
,
96 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
97 IN UINT64 UserAddress
,
99 IN OUT VOID
*UserBuffer
105 IN EFI_CPU_IO_PROTOCOL
*This
,
106 IN EFI_CPU_IO_PROTOCOL_WIDTH Width
,
107 IN UINT64 UserAddress
,
109 IN OUT VOID
*UserBuffer
116 IN EFI_HANDLE ImageHandle
,
117 IN EFI_SYSTEM_TABLE
*SystemTable
122 WinNtFlushCpuDataCache (
123 IN EFI_CPU_ARCH_PROTOCOL
*This
,
124 IN EFI_PHYSICAL_ADDRESS Start
,
126 IN EFI_CPU_FLUSH_TYPE FlushType
131 WinNtEnableInterrupt (
132 IN EFI_CPU_ARCH_PROTOCOL
*This
137 WinNtDisableInterrupt (
138 IN EFI_CPU_ARCH_PROTOCOL
*This
143 WinNtGetInterruptState (
144 IN EFI_CPU_ARCH_PROTOCOL
*This
,
151 IN EFI_CPU_ARCH_PROTOCOL
*This
,
152 IN EFI_CPU_INIT_TYPE InitType
157 WinNtRegisterInterruptHandler (
158 IN EFI_CPU_ARCH_PROTOCOL
*This
,
159 IN EFI_EXCEPTION_TYPE InterruptType
,
160 IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler
166 IN EFI_CPU_ARCH_PROTOCOL
*This
,
167 IN UINT32 TimerIndex
,
168 OUT UINT64
*TimerValue
,
169 OUT UINT64
*TimerPeriod OPTIONAL
174 WinNtSetMemoryAttributes (
175 IN EFI_CPU_ARCH_PROTOCOL
*This
,
176 IN EFI_PHYSICAL_ADDRESS BaseAddress
,