Extract the dynamic setting of the
- PcdFlashNvStorageVariableBase64
- PcdFlashNvStorageFtwWorkingBase
- PcdFlashNvStorageFtwSpareBase
addresses to a helper function.
For now, the helper function is identical (duplicated) between the SMM
flash driver and the runtime DXE flash driver. In subsequent patches, this
will change.
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=386
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <
20200310222739.26717-3-lersek@redhat.com>
Acked-by: Leif Lindholm <leif@nuviainc.com>
\r
MarkIoMemoryRangeForRuntimeAccess (BaseAddress, Length);\r
\r
- //\r
- // Set several PCD values to point to flash\r
- //\r
- PcdStatus = PcdSet64S (\r
- PcdFlashNvStorageVariableBase64,\r
- (UINTN) PcdGet32 (PcdOvmfFlashNvStorageVariableBase)\r
- );\r
- ASSERT_RETURN_ERROR (PcdStatus);\r
- PcdStatus = PcdSet32S (\r
- PcdFlashNvStorageFtwWorkingBase,\r
- PcdGet32 (PcdOvmfFlashNvStorageFtwWorkingBase)\r
- );\r
- ASSERT_RETURN_ERROR (PcdStatus);\r
- PcdStatus = PcdSet32S (\r
- PcdFlashNvStorageFtwSpareBase,\r
- PcdGet32 (PcdOvmfFlashNvStorageFtwSpareBase)\r
- );\r
- ASSERT_RETURN_ERROR (PcdStatus);\r
+ SetPcdFlashNvStorageBaseAddresses ();\r
\r
FwhInstance = (EFI_FW_VOL_INSTANCE *)\r
(\r
IN UINTN Length\r
);\r
\r
+VOID\r
+SetPcdFlashNvStorageBaseAddresses (\r
+ VOID\r
+ );\r
+\r
#endif\r
\r
return Status;\r
}\r
+\r
+VOID\r
+SetPcdFlashNvStorageBaseAddresses (\r
+ VOID\r
+ )\r
+{\r
+ RETURN_STATUS PcdStatus;\r
+\r
+ //\r
+ // Set several PCD values to point to flash\r
+ //\r
+ PcdStatus = PcdSet64S (\r
+ PcdFlashNvStorageVariableBase64,\r
+ (UINTN) PcdGet32 (PcdOvmfFlashNvStorageVariableBase)\r
+ );\r
+ ASSERT_RETURN_ERROR (PcdStatus);\r
+ PcdStatus = PcdSet32S (\r
+ PcdFlashNvStorageFtwWorkingBase,\r
+ PcdGet32 (PcdOvmfFlashNvStorageFtwWorkingBase)\r
+ );\r
+ ASSERT_RETURN_ERROR (PcdStatus);\r
+ PcdStatus = PcdSet32S (\r
+ PcdFlashNvStorageFtwSpareBase,\r
+ PcdGet32 (PcdOvmfFlashNvStorageFtwSpareBase)\r
+ );\r
+ ASSERT_RETURN_ERROR (PcdStatus);\r
+}\r
\r
return EFI_SUCCESS;\r
}\r
+\r
+VOID\r
+SetPcdFlashNvStorageBaseAddresses (\r
+ VOID\r
+ )\r
+{\r
+ RETURN_STATUS PcdStatus;\r
+\r
+ //\r
+ // Set several PCD values to point to flash\r
+ //\r
+ PcdStatus = PcdSet64S (\r
+ PcdFlashNvStorageVariableBase64,\r
+ (UINTN) PcdGet32 (PcdOvmfFlashNvStorageVariableBase)\r
+ );\r
+ ASSERT_RETURN_ERROR (PcdStatus);\r
+ PcdStatus = PcdSet32S (\r
+ PcdFlashNvStorageFtwWorkingBase,\r
+ PcdGet32 (PcdOvmfFlashNvStorageFtwWorkingBase)\r
+ );\r
+ ASSERT_RETURN_ERROR (PcdStatus);\r
+ PcdStatus = PcdSet32S (\r
+ PcdFlashNvStorageFtwSpareBase,\r
+ PcdGet32 (PcdOvmfFlashNvStorageFtwSpareBase)\r
+ );\r
+ ASSERT_RETURN_ERROR (PcdStatus);\r
+}\r