]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/Common/PcdValueCommon.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / BaseTools / Source / C / Common / PcdValueCommon.h
1 /** @file
2 Header file for PcdValue structure definition.
3
4 Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #ifndef _PCD_VALUE_COMMON_H
10 #define _PCD_VALUE_COMMON_H
11
12 #include <Common/UefiBaseTypes.h>
13 #include <Common/UefiInternalFormRepresentation.h>
14
15 #define __FIELD_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field)
16 #define __ARRAY_ELEMENT_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field[0])
17 #define __OFFSET_OF(TYPE, Field) ((UINT32)(size_t) &(((TYPE *)0)->Field))
18 #define __FLEXIBLE_SIZE(Size, TYPE, Field, MaxIndex) if (__FIELD_SIZE(TYPE, Field) == 0) Size = MAX((__OFFSET_OF(TYPE, Field) + __ARRAY_ELEMENT_SIZE(TYPE, Field) * (MaxIndex)), Size)
19 #define __ARRAY_SIZE(Array) (sizeof(Array)/sizeof(Array[0]))
20
21 #if defined(_MSC_EXTENSIONS)
22 #define __STATIC_ASSERT static_assert
23 #else
24 #define __STATIC_ASSERT _Static_assert
25 #endif
26
27 VOID
28 PcdEntryPoint (
29 VOID
30 )
31 /*++
32
33 Routine Description:
34
35 Main function updates PCD values. It is auto generated by Build
36
37 Arguments:
38
39 None
40
41 Returns:
42 None
43 --*/
44 ;
45
46 int
47 PcdValueMain (
48 int argc,
49 char *argv[]
50 )
51 /*++
52
53 Routine Description:
54
55 Main function updates PCD values.
56
57 Arguments:
58
59 argc Number of command line parameters.
60 argv Array of pointers to parameter strings.
61
62 Returns:
63 EXIT_SUCCESS
64 --*/
65 ;
66
67 VOID
68 __PcdSet (
69 CHAR8 *SkuName OPTIONAL,
70 CHAR8 *DefaultValueName OPTIONAL,
71 CHAR8 *TokenSpaceGuidName,
72 CHAR8 *TokenName,
73 UINT64 Value
74 )
75 /*++
76
77 Routine Description:
78
79 Get PCD value
80
81 Arguments:
82
83 SkuName SkuName String
84 DefaultValueName DefaultValueName String
85 TokenSpaceGuidName TokenSpaceGuidName String
86 TokenName TokenName String
87
88 Returns:
89
90 PCD value
91 --*/
92 ;
93
94 VOID
95 __PcdSet (
96 CHAR8 *SkuName OPTIONAL,
97 CHAR8 *DefaultValueName OPTIONAL,
98 CHAR8 *TokenSpaceGuidName,
99 CHAR8 *TokenName,
100 UINT64 Value
101 )
102 /*++
103
104 Routine Description:
105
106 Set PCD value
107
108 Arguments:
109
110 SkuName SkuName String
111 DefaultValueName DefaultValueName String
112 TokenSpaceGuidName TokenSpaceGuidName String
113 TokenName TokenName String
114 Value PCD value to be set
115
116 Returns:
117
118 None
119 --*/
120 ;
121
122 VOID *
123 __PcdGetPtr (
124 CHAR8 *SkuName OPTIONAL,
125 CHAR8 *DefaultValueName OPTIONAL,
126 CHAR8 *TokenSpaceGuidName,
127 CHAR8 *TokenName,
128 UINT32 *Size
129 )
130 /*++
131
132 Routine Description:
133
134 Get PCD value buffer
135
136 Arguments:
137
138 SkuName SkuName String
139 DefaultValueName DefaultValueName String
140 TokenSpaceGuidName TokenSpaceGuidName String
141 TokenName TokenName String
142 Size Size of PCD value buffer
143
144 Returns:
145
146 PCD value buffer
147 --*/
148 ;
149
150 VOID
151 __PcdSetPtr (
152 CHAR8 *SkuName OPTIONAL,
153 CHAR8 *DefaultValueName OPTIONAL,
154 CHAR8 *TokenSpaceGuidName,
155 CHAR8 *TokenName,
156 UINT32 Size,
157 UINT8 *Value
158 )
159 /*++
160
161 Routine Description:
162
163 Set PCD value buffer
164
165 Arguments:
166
167 SkuName SkuName String
168 DefaultValueName DefaultValueName String
169 TokenSpaceGuidName TokenSpaceGuidName String
170 TokenName TokenName String
171 Size Size of PCD value
172 Value Pointer to the updated PCD value buffer
173
174 Returns:
175
176 None
177 --*/
178 ;
179
180 #define PcdGet(A, B, C, D) __PcdGet(#A, #B, #C, #D)
181 #define PcdSet(A, B, C, D, Value) __PcdSet(#A, #B, #C, #D, Value)
182 #define PcdGetPtr(A, B, C, D, Size) __PcdGetPtr(#A, #B, #C, #D, Size)
183 #define PcdSetPtr(A, B, C, D, Size, Value) __PcdSetPtr(#A, #B, #C, #D, Size, Value)
184
185 #endif