]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/CpuRuntimeDxe/CpuDriver.h
UefiCpuPkg: Remove double \r
[mirror_edk2.git] / Nt32Pkg / CpuRuntimeDxe / CpuDriver.h
CommitLineData
6ae81428 1/**@file\r
770bcbb6 2\r
831ff057 3Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
9d2eedba 4SPDX-License-Identifier: BSD-2-Clause-Patent\r
770bcbb6 5\r
6Module Name:\r
7\r
8 CpuDriver.h\r
9\r
10Abstract:\r
11\r
12 NT Emulation Architectural Protocol Driver as defined in Tiano.\r
13\r
6ae81428 14**/\r
770bcbb6 15\r
16#ifndef _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_\r
17#define _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_\r
18\r
19\r
f2569572 20#include <FrameworkDxe.h>\r
1fdd39d3 21#include <IndustryStandard/SmBios.h>\r
f2569572 22#include <Protocol/Cpu.h>\r
1fdd39d3 23#include <Protocol/Smbios.h>\r
8e5b17b2 24#include <Protocol/FrameworkHii.h>\r
f2569572 25#include <Guid/DataHubRecords.h>\r
b8d5cb49 26#include <Protocol/CpuIo2.h>\r
f2569572 27#include <Protocol/WinNtIo.h>\r
b397fbbb 28#include <Library/BaseLib.h>\r
f2569572 29#include <Library/DebugLib.h>\r
8d9bda4f 30#include <Library/HiiLib.h>\r
f2569572
A
31#include <Library/UefiDriverEntryPoint.h>\r
32#include <Library/BaseMemoryLib.h>\r
33#include <Library/MemoryAllocationLib.h>\r
34#include <Library/UefiBootServicesTableLib.h>\r
b397fbbb 35#include <Library/PcdLib.h>\r
831ff057 36#include <Library/WinNtLib.h>\r
770bcbb6 37\r
770bcbb6 38\r
39extern UINT8 CpuStrings[];\r
40\r
41//\r
42// Internal Data Structures\r
43//\r
99e1dd89 44#define CPU_ARCH_PROT_PRIVATE_SIGNATURE SIGNATURE_32 ('c', 'a', 'p', 'd')\r
770bcbb6 45\r
46typedef struct {\r
47 UINTN Signature;\r
48 EFI_HANDLE Handle;\r
49\r
50 EFI_CPU_ARCH_PROTOCOL Cpu;\r
b8d5cb49 51 EFI_CPU_IO2_PROTOCOL CpuIo;\r
770bcbb6 52\r
53 //\r
54 // Local Data for CPU interface goes here\r
55 //\r
56 CRITICAL_SECTION NtCriticalSection;\r
57 BOOLEAN InterruptState;\r
58\r
59} CPU_ARCH_PROTOCOL_PRIVATE;\r
60\r
61#define CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS(a) \\r
62 CR (a, \\r
63 CPU_ARCH_PROTOCOL_PRIVATE, \\r
64 Cpu, \\r
65 CPU_ARCH_PROT_PRIVATE_SIGNATURE \\r
66 )\r
67\r
68EFI_STATUS\r
69EFIAPI\r
70CpuMemoryServiceRead (\r
b8d5cb49 71 IN EFI_CPU_IO2_PROTOCOL *This,\r
770bcbb6 72 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
73 IN UINT64 Address,\r
74 IN UINTN Count,\r
75 IN OUT VOID *Buffer\r
76 );\r
77\r
78EFI_STATUS\r
79EFIAPI\r
80CpuMemoryServiceWrite (\r
b8d5cb49 81 IN EFI_CPU_IO2_PROTOCOL *This,\r
770bcbb6 82 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
83 IN UINT64 Address,\r
84 IN UINTN Count,\r
85 IN OUT VOID *Buffer\r
86 );\r
87\r
88EFI_STATUS\r
89EFIAPI\r
90CpuIoServiceRead (\r
b8d5cb49 91 IN EFI_CPU_IO2_PROTOCOL *This,\r
770bcbb6 92 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
93 IN UINT64 UserAddress,\r
94 IN UINTN Count,\r
95 IN OUT VOID *UserBuffer\r
96 );\r
97\r
98EFI_STATUS\r
99EFIAPI\r
100CpuIoServiceWrite (\r
b8d5cb49 101 IN EFI_CPU_IO2_PROTOCOL *This,\r
770bcbb6 102 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
103 IN UINT64 UserAddress,\r
104 IN UINTN Count,\r
105 IN OUT VOID *UserBuffer\r
106 );\r
107\r
108\r
b397fbbb
A
109EFI_STATUS\r
110EFIAPI\r
111InitializeCpu (\r
112 IN EFI_HANDLE ImageHandle,\r
113 IN EFI_SYSTEM_TABLE *SystemTable\r
114 );\r
115\r
116EFI_STATUS\r
117EFIAPI\r
118WinNtFlushCpuDataCache (\r
119 IN EFI_CPU_ARCH_PROTOCOL *This,\r
120 IN EFI_PHYSICAL_ADDRESS Start,\r
121 IN UINT64 Length,\r
122 IN EFI_CPU_FLUSH_TYPE FlushType\r
123 );\r
124\r
125EFI_STATUS\r
126EFIAPI\r
127WinNtEnableInterrupt (\r
128 IN EFI_CPU_ARCH_PROTOCOL *This\r
129 );\r
130\r
131EFI_STATUS\r
132EFIAPI\r
133WinNtDisableInterrupt (\r
134 IN EFI_CPU_ARCH_PROTOCOL *This\r
135 );\r
136\r
137EFI_STATUS\r
138EFIAPI\r
139WinNtGetInterruptState (\r
140 IN EFI_CPU_ARCH_PROTOCOL *This,\r
141 OUT BOOLEAN *State\r
142 );\r
143\r
144EFI_STATUS\r
145EFIAPI\r
146WinNtInit (\r
147 IN EFI_CPU_ARCH_PROTOCOL *This,\r
148 IN EFI_CPU_INIT_TYPE InitType\r
149 );\r
150\r
151EFI_STATUS\r
152EFIAPI\r
153WinNtRegisterInterruptHandler (\r
154 IN EFI_CPU_ARCH_PROTOCOL *This,\r
155 IN EFI_EXCEPTION_TYPE InterruptType,\r
156 IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler\r
157 );\r
158\r
159EFI_STATUS\r
160EFIAPI\r
161WinNtGetTimerValue (\r
162 IN EFI_CPU_ARCH_PROTOCOL *This,\r
163 IN UINT32 TimerIndex,\r
164 OUT UINT64 *TimerValue,\r
165 OUT UINT64 *TimerPeriod OPTIONAL\r
166 );\r
167\r
168EFI_STATUS\r
169EFIAPI\r
170WinNtSetMemoryAttributes (\r
171 IN EFI_CPU_ARCH_PROTOCOL *This,\r
172 IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
173 IN UINT64 Length,\r
174 IN UINT64 Attributes\r
175 );\r
176\r
177\r
178\r
179\r
180\r
181\r
770bcbb6 182#endif\r