]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ArmPlatformPkg / Library / ArmPlatformLibNull / ArmPlatformLibNull.c
1 /** @file
2
3 Copyright (c) 2011-2012, ARM Limited. All rights reserved.
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #include <Library/ArmLib.h>
10 #include <Library/ArmPlatformLib.h>
11
12 #include <Ppi/ArmMpCoreInfo.h>
13
14 ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
15 {
16 // Cluster 0, Core 0
17 0x0,
18
19 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
20 (EFI_PHYSICAL_ADDRESS)0,
21 (EFI_PHYSICAL_ADDRESS)0,
22 (EFI_PHYSICAL_ADDRESS)0,
23 (UINT64)0xFFFFFFFF
24 },
25 {
26 // Cluster 0, Core 1
27 0x1,
28
29 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
30 (EFI_PHYSICAL_ADDRESS)0,
31 (EFI_PHYSICAL_ADDRESS)0,
32 (EFI_PHYSICAL_ADDRESS)0,
33 (UINT64)0xFFFFFFFF
34 },
35 {
36 // Cluster 0, Core 2
37 0x2,
38
39 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
40 (EFI_PHYSICAL_ADDRESS)0,
41 (EFI_PHYSICAL_ADDRESS)0,
42 (EFI_PHYSICAL_ADDRESS)0,
43 (UINT64)0xFFFFFFFF
44 },
45 {
46 // Cluster 0, Core 3
47 0x3,
48
49 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
50 (EFI_PHYSICAL_ADDRESS)0,
51 (EFI_PHYSICAL_ADDRESS)0,
52 (EFI_PHYSICAL_ADDRESS)0,
53 (UINT64)0xFFFFFFFF
54 }
55 };
56
57 // This function should be better located into TimerLib implementation
58 RETURN_STATUS
59 EFIAPI
60 TimerConstructor (
61 VOID
62 )
63 {
64 return EFI_SUCCESS;
65 }
66
67 /**
68 Return the current Boot Mode
69
70 This function returns the boot reason on the platform
71
72 **/
73 EFI_BOOT_MODE
74 ArmPlatformGetBootMode (
75 VOID
76 )
77 {
78 return BOOT_WITH_FULL_CONFIGURATION;
79 }
80
81 /**
82 Initialize controllers that must setup in the normal world
83
84 This function is called by the ArmPlatformPkg/PrePi or ArmPlatformPkg/PlatformPei
85 in the PEI phase.
86
87 **/
88 RETURN_STATUS
89 ArmPlatformInitialize (
90 IN UINTN MpId
91 )
92 {
93 if (!ArmPlatformIsPrimaryCore (MpId)) {
94 return RETURN_SUCCESS;
95 }
96
97 // TODO: Implement me
98
99 return RETURN_SUCCESS;
100 }
101
102 EFI_STATUS
103 PrePeiCoreGetMpCoreInfo (
104 OUT UINTN *CoreCount,
105 OUT ARM_CORE_INFO **ArmCoreTable
106 )
107 {
108 if (ArmIsMpCore ()) {
109 *CoreCount = sizeof (mArmPlatformNullMpCoreInfoTable) / sizeof (ARM_CORE_INFO);
110 *ArmCoreTable = mArmPlatformNullMpCoreInfoTable;
111 return EFI_SUCCESS;
112 } else {
113 return EFI_UNSUPPORTED;
114 }
115 }
116
117 ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo };
118
119 EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = {
120 {
121 EFI_PEI_PPI_DESCRIPTOR_PPI,
122 &gArmMpCoreInfoPpiGuid,
123 &mMpCoreInfoPpi
124 }
125 };
126
127 VOID
128 ArmPlatformGetPlatformPpiList (
129 OUT UINTN *PpiListSize,
130 OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
131 )
132 {
133 if (ArmIsMpCore ()) {
134 *PpiListSize = sizeof (gPlatformPpiTable);
135 *PpiList = gPlatformPpiTable;
136 } else {
137 *PpiListSize = 0;
138 *PpiList = NULL;
139 }
140 }