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.
17 #include "PcdCommon.h"
21 PCD_PPI mPcdPpiInstance
= {
54 PcdRegisterCallBackOnSet
,
55 PcdUnRegisterCallBackOnSet
,
61 STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD
= {
62 (EFI_PEI_PPI_DESCRIPTOR_PPI
| EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST
),
72 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
73 IN EFI_PEI_SERVICES
**PeiServices
80 Status
= PeiCoreInstallPpi (&mPpiPCD
);
82 ASSERT_EFI_ERROR (Status
);
94 GetPcdDatabase()->Init
.SystemSkuId
= (SKU_ID
) SkuId
;
107 return *((UINT8
*) GetWorker (TokenNumber
, sizeof (UINT8
)));
118 return ReadUnaligned16 (GetWorker (TokenNumber
, sizeof (UINT16
)));
129 return ReadUnaligned32 (GetWorker (TokenNumber
, sizeof (UINT32
)));
140 return ReadUnaligned64 (GetWorker (TokenNumber
, sizeof (UINT64
)));
151 return GetWorker (TokenNumber
, 0);
162 return *((BOOLEAN
*) GetWorker (TokenNumber
, sizeof (BOOLEAN
)));
173 ASSERT (TokenNumber
< PEI_LOCAL_TOKEN_NUMBER
);
175 return GetPcdDatabase()->Init
.SizeTable
[TokenNumber
];
183 IN CONST EFI_GUID
*Guid
,
184 IN UINTN ExTokenNumber
187 return *((UINT8
*) ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT8
)));
195 IN CONST EFI_GUID
*Guid
,
196 IN UINTN ExTokenNumber
199 return ReadUnaligned16 (ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT16
)));
207 IN CONST EFI_GUID
*Guid
,
208 IN UINTN ExTokenNumber
211 return ReadUnaligned32 (ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT32
)));
219 IN CONST EFI_GUID
*Guid
,
220 IN UINTN ExTokenNumber
223 return ReadUnaligned64 (ExGetWorker (Guid
, ExTokenNumber
, sizeof (UINT64
)));
231 IN CONST EFI_GUID
*Guid
,
232 IN UINTN ExTokenNumber
235 return ExGetWorker (Guid
, ExTokenNumber
, 0);
243 IN CONST EFI_GUID
*Guid
,
244 IN UINTN ExTokenNumber
247 return *((BOOLEAN
*) ExGetWorker (Guid
, ExTokenNumber
, sizeof (BOOLEAN
)));
255 IN CONST EFI_GUID
*Guid
,
256 IN UINTN ExTokenNumber
259 EX_PCD_ENTRY_ATTRIBUTE Attr
;
261 GetExPcdTokenAttributes (Guid
, ExTokenNumber
, &Attr
);
271 IN UINTN TokenNumber
,
275 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
283 IN UINTN TokenNumber
,
287 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
295 IN UINTN TokenNumber
,
299 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
307 IN UINTN TokenNumber
,
311 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
318 IN UINTN TokenNumber
,
323 // BugBug, please change the Size to Input size when sync with spec
325 //ASSERT (sizeof (Value) == GetPcdDatabase()->Init.SizeTable[TokenNumber]);
327 return SetWorker (TokenNumber
, (VOID
*) Value
, GetPcdDatabase()->Init
.SizeTable
[TokenNumber
], TRUE
);
335 IN UINTN TokenNumber
,
339 return SetWorker (TokenNumber
, &Value
, sizeof (Value
), FALSE
);
347 IN CONST EFI_GUID
*Guid
,
348 IN UINTN ExTokenNumber
,
366 IN CONST EFI_GUID
*Guid
,
367 IN UINTN ExTokenNumber
,
385 IN CONST EFI_GUID
*Guid
,
386 IN UINTN ExTokenNumber
,
404 IN CONST EFI_GUID
*Guid
,
405 IN UINTN ExTokenNumber
,
423 IN CONST EFI_GUID
*Guid
,
424 IN UINTN ExTokenNumber
,
442 IN CONST EFI_GUID
*Guid
,
443 IN UINTN ExTokenNumber
,
461 PcdRegisterCallBackOnSet (
462 IN UINTN ExTokenNumber
,
463 IN CONST EFI_GUID
*Guid
, OPTIONAL
464 IN PCD_PPI_CALLBACK CallBackFunction
467 return PeiRegisterCallBackWorker (ExTokenNumber
, Guid
, CallBackFunction
, TRUE
);
474 PcdUnRegisterCallBackOnSet (
475 IN UINTN ExTokenNumber
,
476 IN CONST EFI_GUID
*Guid
, OPTIONAL
477 IN PCD_PPI_CALLBACK CallBackFunction
480 return PeiRegisterCallBackWorker (ExTokenNumber
, Guid
, CallBackFunction
, FALSE
);
488 IN CONST EFI_GUID
*Guid
, OPTIONAL
489 IN OUT UINTN
*TokenNumber
495 if (*TokenNumber
>= PEI_LOCAL_TOKEN_NUMBER
) {
501 // BugBug: Haven't implemented the portion to get Next Token for GuidSpace is not Local GuidSpace.