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.
20 PCD_PPI mPcdPpiInstance
= {
53 PcdRegisterCallBackOnSet
,
54 PcdUnRegisterCallBackOnSet
,
60 STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD
= {
61 (EFI_PEI_PPI_DESCRIPTOR_PPI
| EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST
),
71 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
72 IN EFI_PEI_SERVICES
**PeiServices
79 Status
= PeiCoreInstallPpi (&mPpiPCD
);
81 ASSERT_EFI_ERROR (Status
);
93 GetPcdDatabase()->Init
.SystemSkuId
= (SKU_ID
) SkuId
;
106 return *((UINT8
*) GetWorker (TokenNumber
, sizeof (UINT8
)));
117 return ReadUnaligned16 (GetWorker (TokenNumber
, sizeof (UINT16
)));
128 return ReadUnaligned32 (GetWorker (TokenNumber
, sizeof (UINT32
)));
139 return ReadUnaligned64 (GetWorker (TokenNumber
, sizeof (UINT64
)));
150 return GetWorker (TokenNumber
, 0);
161 return *((BOOLEAN
*) GetWorker (TokenNumber
, sizeof (BOOLEAN
)));
172 ASSERT (TokenNumber
< PEI_LOCAL_TOKEN_NUMBER
);
174 return GetPcdDatabase()->Init
.SizeTable
[TokenNumber
];
182 IN CONST EFI_GUID
*Guid
,
183 IN UINTN ExTokenNumber
186 return *((UINT8
*) ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT8
)));
194 IN CONST EFI_GUID
*Guid
,
195 IN UINTN ExTokenNumber
198 return ReadUnaligned16 (ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT16
)));
206 IN CONST EFI_GUID
*Guid
,
207 IN UINTN ExTokenNumber
210 return ReadUnaligned32 (ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT32
)));
218 IN CONST EFI_GUID
*Guid
,
219 IN UINTN ExTokenNumber
222 return ReadUnaligned64 (ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT64
)));
230 IN CONST EFI_GUID
*Guid
,
231 IN UINTN ExTokenNumber
234 return ExGetWorker (Guid
, ExTokenNumber
, 0);
242 IN CONST EFI_GUID
*Guid
,
243 IN UINTN ExTokenNumber
246 return *((BOOLEAN
*) ExGetWorker (Guid
, ExTokenNumber
, sizeof (BOOLEAN
)));
254 IN CONST EFI_GUID
*Guid
,
255 IN UINTN ExTokenNumber
258 EX_PCD_ENTRY_ATTRIBUTE Attr
;
260 GetExPcdTokenAttributes (Guid
, ExTokenNumber
, &Attr
);
270 IN UINTN TokenNumber
,
274 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
282 IN UINTN TokenNumber
,
286 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
294 IN UINTN TokenNumber
,
298 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
306 IN UINTN TokenNumber
,
310 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
317 IN UINTN TokenNumber
,
322 // BugBug, please change the Size to Input size when sync with spec
324 //ASSERT (sizeof (Value) == GetPcdDatabase()->Init.SizeTable[TokenNumber]);
326 return SetWorker (TokenNumber
, (VOID
*) Value
, GetPcdDatabase()->Init
.SizeTable
[TokenNumber
], TRUE
);
334 IN UINTN TokenNumber
,
338 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
346 IN CONST EFI_GUID
*Guid
,
347 IN UINTN ExTokenNumber
,
365 IN CONST EFI_GUID
*Guid
,
366 IN UINTN ExTokenNumber
,
384 IN CONST EFI_GUID
*Guid
,
385 IN UINTN ExTokenNumber
,
403 IN CONST EFI_GUID
*Guid
,
404 IN UINTN ExTokenNumber
,
422 IN CONST EFI_GUID
*Guid
,
423 IN UINTN ExTokenNumber
,
441 IN CONST EFI_GUID
*Guid
,
442 IN UINTN ExTokenNumber
,
460 PcdRegisterCallBackOnSet (
461 IN UINTN ExTokenNumber
,
462 IN CONST EFI_GUID
*Guid
, OPTIONAL
463 IN PCD_PPI_CALLBACK CallBackFunction
466 return PeiRegisterCallBackWorker (ExTokenNumber
, Guid
, CallBackFunction
, TRUE
);
473 PcdUnRegisterCallBackOnSet (
474 IN UINTN ExTokenNumber
,
475 IN CONST EFI_GUID
*Guid
, OPTIONAL
476 IN PCD_PPI_CALLBACK CallBackFunction
479 return PeiRegisterCallBackWorker (ExTokenNumber
, Guid
, CallBackFunction
, FALSE
);
487 IN CONST EFI_GUID
*Guid
, OPTIONAL
488 IN OUT UINTN
*TokenNumber
494 if (*TokenNumber
>= PEI_LOCAL_TOKEN_NUMBER
) {
500 // BugBug: Haven't implemented the portion to get Next Token for GuidSpace is not Local GuidSpace.