]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c
Merge branch of PI tree to main trunk
[mirror_edk2.git] / MdePkg / Library / PeiServicesTablePointerLibMm7 / PeiServicesTablePointer.c
1 /** @file
2 PEI Services Table Pointer Library.
3
4 Copyright (c) 2006, Intel Corporation<BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 Module Name: PeiServicesTablePointer.c
14
15 **/
16
17
18 #include <PiPei.h>
19
20
21 #include <Library/PeiServicesTablePointerLib.h>
22 #include <Library/BaseLib.h>
23 #include <Library/DebugLib.h>
24
25 VOID
26 EFIAPI
27 SetPeiServicesTablePointer (
28 IN EFI_PEI_SERVICES **PeiServices
29 )
30 {
31 AsmWriteMm7 ((UINT64)(UINTN)PeiServices);
32 }
33
34 /**
35 The function returns the pointer to PeiServices.
36
37 The function returns the pointer to PeiServices.
38 It will ASSERT() if the pointer to PeiServices is NULL.
39
40 @retval The pointer to PeiServices.
41
42 **/
43 EFI_PEI_SERVICES **
44 EFIAPI
45 GetPeiServicesTablePointer (
46 VOID
47 )
48 {
49 EFI_PEI_SERVICES **PeiServices;
50
51 PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadMm7 ();
52 ASSERT (PeiServices != NULL);
53 return PeiServices;
54 }
55
56 /**
57 The constructor function caches the pointer to PEI services.
58
59 The constructor function caches the pointer to PEI services.
60 It will always return EFI_SUCCESS.
61
62 @param FfsHeader Pointer to FFS header the loaded driver.
63 @param PeiServices Pointer to the PEI services.
64
65 @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
66
67 **/
68 EFI_STATUS
69 EFIAPI
70 PeiServicesTablePointerLibConstructor (
71 IN EFI_PEI_FILE_HANDLE *FfsHeader,
72 IN EFI_PEI_SERVICES **PeiServices
73 )
74 {
75 AsmWriteMm7 ((UINT64)(UINTN)PeiServices);
76 return EFI_SUCCESS;
77 }