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