VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.h@ 58466

最後變更 在這個檔案從58466是 58466,由 vboxsync 提交於 9 年 前

EFI/Firmware: Merged in the svn:eol-style, svn:mime-type and trailing whitespace cleanup that was done after the initial UDK2014.SP1 import: svn merge /vendor/edk2/UDK2014.SP1 /vendor/edk2/current .

  • 屬性 svn:eol-style 設為 native
檔案大小: 6.3 KB
 
1/** @file
2 Internal include file for the SMM CPU I/O Protocol.
3
4Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials
6are licensed and made available under the terms and conditions of the BSD License
7which accompanies this distribution. The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _CPU_IO2_SMM_H_
16#define _CPU_IO2_SMM_H_
17
18#include <PiSmm.h>
19
20#include <Protocol/SmmCpuIo2.h>
21
22#include <Library/BaseLib.h>
23#include <Library/DebugLib.h>
24#include <Library/IoLib.h>
25#include <Library/SmmServicesTableLib.h>
26#include <Library/BaseMemoryLib.h>
27
28#define MAX_IO_PORT_ADDRESS 0xFFFF
29
30/**
31 Reads memory-mapped registers.
32
33 The I/O operations are carried out exactly as requested. The caller is
34 responsible for any alignment and I/O width issues that the bus, device,
35 platform, or type of I/O might require.
36
37 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
38 @param[in] Width Signifies the width of the I/O operations.
39 @param[in] Address The base address of the I/O operations. The caller is
40 responsible for aligning the Address if required.
41 @param[in] Count The number of I/O operations to perform.
42 @param[out] Buffer For read operations, the destination buffer to store
43 the results. For write operations, the source buffer
44 from which to write data.
45
46 @retval EFI_SUCCESS The data was read from or written to the device.
47 @retval EFI_UNSUPPORTED The Address is not valid for this system.
48 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
49 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
50 lack of resources
51
52**/
53EFI_STATUS
54EFIAPI
55CpuMemoryServiceRead (
56 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
57 IN EFI_SMM_IO_WIDTH Width,
58 IN UINT64 Address,
59 IN UINTN Count,
60 OUT VOID *Buffer
61 );
62
63/**
64 Writes memory-mapped registers.
65
66 The I/O operations are carried out exactly as requested. The caller is
67 responsible for any alignment and I/O width issues that the bus, device,
68 platform, or type of I/O might require.
69
70 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
71 @param[in] Width Signifies the width of the I/O operations.
72 @param[in] Address The base address of the I/O operations. The caller is
73 responsible for aligning the Address if required.
74 @param[in] Count The number of I/O operations to perform.
75 @param[in] Buffer For read operations, the destination buffer to store
76 the results. For write operations, the source buffer
77 from which to write data.
78
79 @retval EFI_SUCCESS The data was read from or written to the device.
80 @retval EFI_UNSUPPORTED The Address is not valid for this system.
81 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
82 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
83 lack of resources
84
85**/
86EFI_STATUS
87EFIAPI
88CpuMemoryServiceWrite (
89 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
90 IN EFI_SMM_IO_WIDTH Width,
91 IN UINT64 Address,
92 IN UINTN Count,
93 IN VOID *Buffer
94 );
95
96/**
97 Reads I/O registers.
98
99 The I/O operations are carried out exactly as requested. The caller is
100 responsible for any alignment and I/O width issues that the bus, device,
101 platform, or type of I/O might require.
102
103 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
104 @param[in] Width Signifies the width of the I/O operations.
105 @param[in] Address The base address of the I/O operations. The caller is
106 responsible for aligning the Address if required.
107 @param[in] Count The number of I/O operations to perform.
108 @param[out] Buffer For read operations, the destination buffer to store
109 the results. For write operations, the source buffer
110 from which to write data.
111
112 @retval EFI_SUCCESS The data was read from or written to the device.
113 @retval EFI_UNSUPPORTED The Address is not valid for this system.
114 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
115 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
116 lack of resources
117
118**/
119EFI_STATUS
120EFIAPI
121CpuIoServiceRead (
122 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
123 IN EFI_SMM_IO_WIDTH Width,
124 IN UINT64 Address,
125 IN UINTN Count,
126 OUT VOID *Buffer
127 );
128
129/**
130 Write I/O registers.
131
132 The I/O operations are carried out exactly as requested. The caller is
133 responsible for any alignment and I/O width issues that the bus, device,
134 platform, or type of I/O might require.
135
136 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
137 @param[in] Width Signifies the width of the I/O operations.
138 @param[in] Address The base address of the I/O operations. The caller is
139 responsible for aligning the Address if required.
140 @param[in] Count The number of I/O operations to perform.
141 @param[in] Buffer For read operations, the destination buffer to store
142 the results. For write operations, the source buffer
143 from which to write data.
144
145 @retval EFI_SUCCESS The data was read from or written to the device.
146 @retval EFI_UNSUPPORTED The Address is not valid for this system.
147 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
148 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
149 lack of resources
150
151**/
152EFI_STATUS
153EFIAPI
154CpuIoServiceWrite (
155 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
156 IN EFI_SMM_IO_WIDTH Width,
157 IN UINT64 Address,
158 IN UINTN Count,
159 IN VOID *Buffer
160 );
161
162#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette