summaryrefslogtreecommitdiff
path: root/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Core')
-rw-r--r--Core/EM/SLP20/Marker.bin1
-rw-r--r--Core/EM/SLP20/PubKey.bin1
-rw-r--r--Core/EM/SLP20/SlpSupport.c407
-rw-r--r--Core/EM/SLP20/SlpSupport.chmbin0 -> 41243 bytes
-rw-r--r--Core/EM/SLP20/SlpSupport.cif15
-rw-r--r--Core/EM/SLP20/SlpSupport.dxs73
-rw-r--r--Core/EM/SLP20/SlpSupport.h207
-rw-r--r--Core/EM/SLP20/SlpSupport.mak118
-rw-r--r--Core/EM/SLP20/SlpSupport.sdl52
-rw-r--r--Core/EM/Slp10/OemTable.asm67
-rw-r--r--Core/EM/Slp10/Slp10.c125
-rw-r--r--Core/EM/Slp10/Slp10.chmbin0 -> 24774 bytes
-rw-r--r--Core/EM/Slp10/Slp10.cif14
-rw-r--r--Core/EM/Slp10/Slp10.dxs18
-rw-r--r--Core/EM/Slp10/Slp10.h104
-rw-r--r--Core/EM/Slp10/Slp10.mak83
-rw-r--r--Core/EM/Slp10/Slp10.sdl43
17 files changed, 1328 insertions, 0 deletions
diff --git a/Core/EM/SLP20/Marker.bin b/Core/EM/SLP20/Marker.bin
new file mode 100644
index 0000000..8b3aeed
--- /dev/null
+++ b/Core/EM/SLP20/Marker.bin
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file
diff --git a/Core/EM/SLP20/PubKey.bin b/Core/EM/SLP20/PubKey.bin
new file mode 100644
index 0000000..2910e3c
--- /dev/null
+++ b/Core/EM/SLP20/PubKey.bin
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file
diff --git a/Core/EM/SLP20/SlpSupport.c b/Core/EM/SLP20/SlpSupport.c
new file mode 100644
index 0000000..0159473
--- /dev/null
+++ b/Core/EM/SLP20/SlpSupport.c
@@ -0,0 +1,407 @@
+//****************************************************************************
+//****************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone (770)-246-8600 **
+//** **
+//****************************************************************************
+//****************************************************************************
+
+//****************************************************************************
+// $Header: /Alaska/BIN/Modules/SLP/SlpSupport.c 12 8/03/11 2:45p Vyacheslava $
+//
+// $Revision: 12 $
+//
+// $Date: 8/03/11 2:45p $
+//****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/BIN/Modules/SLP/SlpSupport.c $
+//
+// 12 8/03/11 2:45p Vyacheslava
+//
+// 11 8/01/11 3:25p Vyacheslava
+// [TAG] EIP64110
+// [Category] Spec Update
+// [Severity] Normal
+// [Description] This file has been updated to be compliant with PI 1.2,
+// and UEFI 2.3.1 specifications.
+//
+// 10 7/12/11 4:44p Vyacheslava
+//
+// 9 7/12/11 3:56p Vyacheslava
+//
+// 8 7/01/11 12:19p Vyacheslava
+// [TAG] EIP63678
+// [Category] Improvement
+// [Description] Added checking for dummy binaries.
+//
+// 7 7/01/11 12:00p Vyacheslava
+// [TAG] EIP63678
+// [Category] New Feature
+// [Description] Preserve the OEM Activation SLIC during the BIOS
+// recovery path.
+// [Files] SlpSupport.sdl
+// SlpSupport.mak
+// SlpSupport.c
+// SlpSupport.dxs
+// SlpSupport.h
+// SlpSupport.cif
+//
+// 6 8/25/10 11:44a Vyacheslava
+// Added comments.
+//
+// 5 5/18/10 4:15p Vyacheslava
+// Update for OEM ID and OEM Table ID from the Marker binary. (EIP#38438)
+//
+// 4 8/19/09 10:47a Vyacheslava
+// Added support for ACPI 3.0 (EIP#25335 )
+//
+// 3 6/01/09 4:53p Vyacheslava
+// EIP#22212: Synopsis: (1) SimpleBootFlag, (2) SLP, (3) CSPLibrary
+// Description: Aptio Enhancement Guidelines for Engineers
+//
+// 2 10/09/07 3:55p Vyacheslava
+// Fixed issue with token conversion. Added function CopyToken.
+//
+// 1 3/30/07 3:39p Felixp
+//
+//****************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: SlpSupport.c
+//
+// Description:
+// Updated the XSDT with the SLIC OEM Activation ACPI Table.
+//
+//<AMI_FHDR_END>
+//****************************************************************************
+
+
+//---------------------------------------------------------------------------
+
+#include <AmiDxeLib.h>
+#include <Protocol/AcpiTable.h>
+#include <AmiHobs.h>
+#include "SlpSupport.h"
+
+//---------------------------------------------------------------------------
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: LocateAndLoadRawData
+//
+// Description: This fills the PubKey and Marker structures of SLIC table.
+//
+// Input:
+// *FfsGuid - Pointer to GUID of the FFS file to read
+// *Address - Address of the buffer to read data into
+// Size - Size of the buffer
+//
+// Output:
+// EFI_STATUS - Sucessful
+// EFI_NOT_FOUND - Couldn't find the binaries
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+EFI_STATUS LocateAndLoadRawData(
+ IN EFI_GUID *FfsGuid,
+ IN VOID *Address,
+ IN UINTN Size )
+{
+ EFI_STATUS Status;
+ EFI_HANDLE *HandleBuffer = NULL;
+ UINTN NumberOfHandles;
+ UINTN Index;
+ UINT32 Authentication;
+
+#if PI_SPECIFICATION_VERSION >= 0x0001000A
+ EFI_GUID EfiFirmwareVolumeProtocolGuid = EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID;
+ EFI_FIRMWARE_VOLUME2_PROTOCOL *FwVolumeProtocol = NULL;
+#else
+ EFI_GUID EfiFirmwareVolumeProtocolGuid = EFI_FIRMWARE_VOLUME_PROTOCOL_GUID;
+ EFI_FIRMWARE_VOLUME_PROTOCOL *FwVolumeProtocol = NULL;
+#endif
+
+ // Locate the Firmware volume protocol
+ Status = pBS->LocateHandleBuffer(
+ ByProtocol,
+ &EfiFirmwareVolumeProtocolGuid,
+ NULL,
+ &NumberOfHandles,
+ &HandleBuffer
+ );
+ if (EFI_ERROR(Status))
+ return Status;
+
+ // Find and read raw data
+ for (Index = 0; Index < NumberOfHandles; Index++) {
+
+ Status = pBS->HandleProtocol(
+ HandleBuffer[Index],
+ &EfiFirmwareVolumeProtocolGuid,
+ &FwVolumeProtocol
+ );
+ if (EFI_ERROR(Status))
+ continue;
+
+ Status = FwVolumeProtocol->ReadSection(
+ FwVolumeProtocol,
+ FfsGuid,
+ EFI_SECTION_RAW,
+ 0x0,
+ &Address,
+ &Size,
+ &Authentication
+ );
+ if (Status == EFI_SUCCESS)
+ break;
+ }
+
+ pBS->FreePool(HandleBuffer);
+ return Status;
+}
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: PreserveSlicBinaries
+//
+// Description: This function preserves the the Marker and PubKey binaries.
+//
+// Input: VOID
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+EFI_STATUS PreserveSlicBinaries(VOID)
+{
+ EFI_STATUS Status = EFI_NOT_FOUND;
+ RECOVERY_IMAGE_HOB *RecoveryHob;
+ EFI_GUID HobListGuid = HOB_LIST_GUID;
+ EFI_GUID RecoveryHobGuid = AMI_RECOVERY_IMAGE_HOB_GUID;
+ EFI_GUID PubKeyGuid = OEM_SLP_PUBLIC_KEY_GUID;
+ EFI_GUID MarkerGuid = OEM_SLP_MARKER_GUID;
+ EFI_CONFIGURATION_TABLE *Table = pST->ConfigurationTable;
+ EFI_PHYSICAL_ADDRESS Addr;
+ UINTN i;
+ UINT8 *FwPubKeyPtr = NULL;
+ UINT8 *FwMarkerPtr = NULL;
+ UINT8 *RecPubKeyPtr = NULL;
+ UINT8 *RecMarkerPtr = NULL;
+
+ // Find the Product Key place in the recovery HOB
+ for( i = 0; i < pST->NumberOfTableEntries; i++, Table++ ) {
+
+ if ( !MemCmp(&Table->VendorGuid, &HobListGuid, sizeof(EFI_GUID)) ) {
+
+ RecoveryHob = Table->VendorTable;
+ Status = FindNextHobByGuid(&RecoveryHobGuid, &RecoveryHob);
+ if (!EFI_ERROR(Status)) {
+
+ // Find Public Key and Marker binaries in the Recovery image
+ Status = EFI_NOT_FOUND;
+ for ( Addr = RecoveryHob->Address; Addr < RecoveryHob->Address + FLASH_SIZE; Addr++ ) {
+
+ // Find the Public Key binary GUID
+ if ( !MemCmp((UINT8*)Addr, &PubKeyGuid, sizeof(EFI_GUID)) )
+ RecPubKeyPtr = (UINT8*)Addr;
+
+ // Find the Marker binary GUID
+ else if ( !MemCmp((UINT8*)Addr, &MarkerGuid, sizeof(EFI_GUID)) )
+ RecMarkerPtr = (UINT8*)Addr;
+
+ // if all binaries are found then find original places in the Firmware
+ if ( RecPubKeyPtr != NULL && RecMarkerPtr != NULL ) {
+
+ // Find Public Key and Marker binaries in the BIOS firmware
+ for ( Addr = FLASH_DEVICE_BASE_ADDRESS; Addr < FLASH_UPPER_ADDRESS; Addr++ ) {
+
+ // Find the Public Key binary GUID
+ if ( !MemCmp((UINT8*)Addr, &PubKeyGuid, sizeof(EFI_GUID)) )
+ FwPubKeyPtr = (UINT8*)Addr;
+
+ // Find the Marker binary GUID
+ else if ( !MemCmp((UINT8*)Addr, &MarkerGuid, sizeof(EFI_GUID)) )
+ FwMarkerPtr = (UINT8*)Addr;
+
+ // Preserve the SLIC binaries
+ if ( FwPubKeyPtr != NULL && FwMarkerPtr != NULL ) {
+
+ MemCpy(
+ RecPubKeyPtr,
+ FwPubKeyPtr,
+ sizeof(OEM_PUBLIC_KEY_STRUCTURE) + sizeof(EFI_FFS_FILE_HEADER) + sizeof(UINT16)
+ );
+
+ MemCpy(
+ RecMarkerPtr,
+ FwMarkerPtr,
+ sizeof(WINDOWS_MARKER_STRUCTURE) + sizeof(EFI_FFS_FILE_HEADER) + sizeof(UINT16)
+ );
+
+ Status = EFI_SUCCESS;
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ TRACE((TRACE_ALWAYS,"PreserveSlicBinaries: Status = %r\n",Status));
+ return Status;
+}
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: PublishSlicTable
+//
+// Description: This function publish SLIC table in the ACPI.
+//
+// Input: VOID
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+EFI_STATUS PublishSlicTable(VOID)
+{
+ EFI_STATUS Status;
+ EFI_GUID PubKeyGuid = OEM_SLP_PUBLIC_KEY_GUID;
+ EFI_GUID MarkerGuid = OEM_SLP_MARKER_GUID;
+ EFI_ACPI_SLP SlpTable = {
+ {SLIC_SIG, sizeof(EFI_ACPI_SLP), 0x01, 0x00, {0}, {0}, ACPI_OEM_REV, CREATOR_ID_AMI, CREATOR_REV_MS},
+ {0},
+ {0}
+ };
+ EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol = NULL;
+ UINTN TableKey = 0;
+
+ // Locate SLP Public Key binary
+ Status = LocateAndLoadRawData(
+ &PubKeyGuid,
+ &SlpTable.PubKey,
+ sizeof(SlpTable.PubKey)
+ );
+ if (EFI_ERROR(Status)) {
+ TRACE((TRACE_ALWAYS, "Slp Public Key Binaries Not Found!\n"));
+ return Status;
+ }
+
+ // Locate SLP Marker binary
+ Status = LocateAndLoadRawData(
+ &MarkerGuid,
+ &SlpTable.WinMarker,
+ sizeof(SlpTable.WinMarker)
+ );
+ if (EFI_ERROR(Status)) {
+ TRACE((TRACE_ALWAYS, "Slp Marker Binaries Not Found!\n"));
+ return Status;
+ }
+
+ // The dummy SLIC will be not published
+ if ( SlpTable.WinMarker.StructType == 0xFFFFFFFF && SlpTable.PubKey.StructType == 0xFFFFFFFF ) {
+ TRACE((TRACE_ALWAYS, "SlpSupport: Found dummy binaries. The SLIC will be not published!\n"));
+ return EFI_ABORTED;
+ }
+
+ // Copy OEM ID and OEM Table ID from Marker's binary to SLIC header
+ MemCpy(
+ (UINT8*)&SlpTable.Header.OemId,
+ (UINT8*)&SlpTable.WinMarker.sOEMID,
+ sizeof(SlpTable.WinMarker.sOEMID)
+ );
+ MemCpy(
+ (UINT8*)&SlpTable.Header.OemTblId,
+ (UINT8*)&SlpTable.WinMarker.sOEMTABLEID,
+ sizeof(SlpTable.WinMarker.sOEMTABLEID)
+ );
+
+ // Locate the ACPI table protocol
+ Status = pBS->LocateProtocol(
+ &gEfiAcpiTableProtocolGuid,
+ NULL,
+ &AcpiTableProtocol
+ );
+ if (EFI_ERROR(Status)) {
+ TRACE((TRACE_ALWAYS, "Unable to locate AcpiTableProtocol!\n"));
+ return Status;
+ }
+
+ // Publish SLIC to ACPI table
+ Status = AcpiTableProtocol->InstallAcpiTable(
+ AcpiTableProtocol,
+ &SlpTable,
+ sizeof(EFI_ACPI_SLP),
+ &TableKey
+ );
+ if (!EFI_ERROR(Status))
+ TRACE((TRACE_ALWAYS, "SLIC table has been published.\n"));
+
+ return Status;
+}
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: SlpSupport_EntryPoint
+//
+// Description: This function is the entry point of the eModule.
+//
+// Input:
+// ImageHandle - Image handle
+// *SystemTable - Pointer to the system table
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+EFI_STATUS EFIAPI SlpSupport_EntryPoint(
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable )
+{
+ EFI_STATUS Status = EFI_SUCCESS;
+
+ InitAmiLib(ImageHandle, SystemTable);
+
+ // Check if it's a Recovery Mode then preserve the Marker and PubKey binaries
+ if (GetBootMode() == BOOT_IN_RECOVERY_MODE)
+ Status = PreserveSlicBinaries();
+ if (!EFI_ERROR(Status))
+ Status = PublishSlicTable();
+
+ return Status;
+}
+
+
+//****************************************************************************
+//****************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone (770)-246-8600 **
+//** **
+//****************************************************************************
+//****************************************************************************
diff --git a/Core/EM/SLP20/SlpSupport.chm b/Core/EM/SLP20/SlpSupport.chm
new file mode 100644
index 0000000..2178c61
--- /dev/null
+++ b/Core/EM/SLP20/SlpSupport.chm
Binary files differ
diff --git a/Core/EM/SLP20/SlpSupport.cif b/Core/EM/SLP20/SlpSupport.cif
new file mode 100644
index 0000000..10d9d5b
--- /dev/null
+++ b/Core/EM/SLP20/SlpSupport.cif
@@ -0,0 +1,15 @@
+<component>
+ name = "SlpSupport"
+ category = eModule
+ LocalRoot = "Core\EM\SLP20"
+ RefName = "SlpSupport"
+[files]
+"SlpSupport.sdl"
+"SlpSupport.mak"
+"SlpSupport.c"
+"SlpSupport.dxs" = "dxs"
+"Marker.bin"
+"PubKey.bin"
+"SlpSupport.chm"
+"SlpSupport.h"
+<endComponent>
diff --git a/Core/EM/SLP20/SlpSupport.dxs b/Core/EM/SLP20/SlpSupport.dxs
new file mode 100644
index 0000000..d45ab61
--- /dev/null
+++ b/Core/EM/SLP20/SlpSupport.dxs
@@ -0,0 +1,73 @@
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
+
+//*****************************************************************************
+// $Header: /Alaska/BIN/Modules/SLP/SlpSupport.dxs 3 8/01/11 5:07p Vyacheslava $
+//
+// $Revision: 3 $
+//
+// $Date: 8/01/11 5:07p $
+//*****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/BIN/Modules/SLP/SlpSupport.dxs $
+//
+// 3 8/01/11 5:07p Vyacheslava
+//
+// 2 7/01/11 12:00p Vyacheslava
+// [TAG] EIP63678
+// [Category] New Feature
+// [Description] Preserve the OEM Activation SLIC during the BIOS
+// recovery path.
+// [Files] SlpSupport.sdl
+// SlpSupport.mak
+// SlpSupport.c
+// SlpSupport.dxs
+// SlpSupport.h
+// SlpSupport.cif
+//
+//
+//*****************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: SlpSupport.dxs
+//
+// Description: This file is the dependency file for SlpSupport eModule.
+//
+//<AMI_FHDR_END>
+//*****************************************************************************
+
+//----------------------------------------------------------------------------
+// Header files for GUID definitions
+//----------------------------------------------------------------------------
+
+#include <Protocol/AcpiTable.h>
+
+DEPENDENCY_START
+ EFI_ACPI_TABLE_PROTOCOL_GUID
+DEPENDENCY_END
+
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
diff --git a/Core/EM/SLP20/SlpSupport.h b/Core/EM/SLP20/SlpSupport.h
new file mode 100644
index 0000000..fd44e5d
--- /dev/null
+++ b/Core/EM/SLP20/SlpSupport.h
@@ -0,0 +1,207 @@
+//****************************************************************************
+//****************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone (770)-246-8600 **
+//** **
+//****************************************************************************
+//****************************************************************************
+
+//****************************************************************************
+// $Header: /Alaska/BIN/Modules/SLP/SlpSupport.h 4 8/01/11 3:26p Vyacheslava $
+//
+// $Revision: 4 $
+//
+// $Date: 8/01/11 3:26p $
+//****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/BIN/Modules/SLP/SlpSupport.h $
+//
+// 4 8/01/11 3:26p Vyacheslava
+// [TAG] EIP64110
+// [Category] Spec Update
+// [Severity] Normal
+// [Description] This file has been updated to be compliant with PI 1.2,
+// and UEFI 2.3.1 specifications.
+//
+// 3 7/01/11 12:00p Vyacheslava
+// [TAG] EIP63678
+// [Category] New Feature
+// [Description] Preserve the OEM Activation SLIC during the BIOS
+// recovery path.
+// [Files] SlpSupport.sdl
+// SlpSupport.mak
+// SlpSupport.c
+// SlpSupport.dxs
+// SlpSupport.h
+// SlpSupport.cif
+//
+// 2 8/25/10 11:45a Vyacheslava
+// Changed comments for better representation in the CHM file.
+//
+// 1 5/18/10 4:11p Vyacheslava
+//
+//
+//****************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: SlpSupport.h
+//
+// Description: SlpSupport Header file.
+//
+//<AMI_FHDR_END>
+//****************************************************************************
+
+#ifndef __SLP_SUPPORT__H__
+#define __SLP_SUPPORT__H__
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//------------------------------------------------------------------------
+
+#include <EFI.h>
+#include <Token.h>
+#include <Acpi.h>
+
+//------------------------------------------------------------------------
+
+#define SLIC_SIG 0x43494c53 //"SLIC" Microsoft System Locked Preinstallation Table
+
+#define OEM_SLP_PUBLIC_KEY_GUID \
+ { 0x996aa1e0, 0x1e8c, 0x4f36, 0xb5, 0x19, 0xa1, 0x70, 0xa2, 0x06, 0xfc, 0x14 }
+
+#define OEM_SLP_MARKER_GUID \
+ { 0x69009842, 0x63f2, 0x43db, 0x96, 0x4b, 0xef, 0xad, 0x1c, 0x39, 0xec, 0x85 }
+
+#define FLASH_UPPER_ADDRESS 0xFFFFFFFF
+#define FLASH_DEVICE_BASE_ADDRESS (FLASH_UPPER_ADDRESS-FLASH_SIZE+1)
+
+//------------------------------------------------------------------------
+
+#pragma pack (1)
+
+//<AMI_SHDR_START>
+//----------------------------------------------------------------------------
+//
+// Name: OEM_PUBLIC_KEY_STRUCTURE
+//
+// Description: This structure comes out of the document:
+// OEM Activation version 2.0 for M$ Windows Vista (tm) Operating System.
+//
+// Fields:
+// Name Type Description
+// ------------------------------------------------------------------
+// StructType UINT32 0x00000000 = PubKey Structure.
+// LicensingData UINT32 Length, in bytes, of OEM pub key struct (156).
+// bType UINT8 Public Key Type [PUBLICKEYBLOB (6)].
+// bVersion UINT8 Version, currently 2 (7/27/2006).
+// Reserved UINT16 Zero.
+// aiKeyAlg UINT32 Key Algorithm. [CALG_RSA_SIGN (0x00002400)].
+// Magic UINT32 bytes: 'RSA1'.
+// BitLen UINT32 1024 converted to hex.
+// Pubexp UINT32 Exponent of Public Key, usually 257 converted to hex.
+// Modulus UINT8 Array. Modulus, modulues of the public key 128 bytes.
+//
+//----------------------------------------------------------------------------
+//<AMI_SHDR_END>
+
+typedef struct {
+ UINT32 StructType;
+ UINT32 LicensingData;
+ UINT8 bType;
+ UINT8 bVersion;
+ UINT16 Reserved;
+ UINT32 aiKeyAlg;
+ UINT32 Magic;
+ UINT32 Bitlen;
+ UINT32 Pubexp;
+ UINT8 Modulus[128];
+} OEM_PUBLIC_KEY_STRUCTURE;
+
+//<AMI_SHDR_START>
+//----------------------------------------------------------------------------
+//
+// Name: WINDOWS_MARKER_STRUCTURE
+//
+// Description: This structure comes out of the document:
+// OEM Activation version 2.0 for M$ Windows Vista (tm) Operating System.
+//
+// Fields:
+// Name Type Description
+// ------------------------------------------------------------------
+// StructType UINT32 0x00000001 = Windows marker structure
+// LicensingData UINT32 Length, in bytes of Windows Marker (182)
+// dwVersion UINT32 Version of the Windows Marker (0x0002000)
+// sOEMID UINT8 The OEMID value from XSDT and RSDT (must match). (6 bytes)
+// sOEMTABLEID UINT8 the OEMTABLEID from XSDT and RSDT (must match). (8 bytes)
+// sWindowsFlag UINT8 'WINDOWS ' (notice trailing space, not null terminated). (8 bytes)
+// Reserved UINT8 Reserved for future use. (20 bytes)
+// Signature UINT8 SHA256 Signature from the Windows Marker. (128 bytes)
+//
+//----------------------------------------------------------------------------
+//<AMI_SHDR_END>
+
+typedef struct {
+ UINT32 StructType;
+ UINT32 LicensingData;
+ UINT32 dwVersion;
+ UINT8 sOEMID[6];
+ UINT8 sOEMTABLEID[8];
+ UINT8 sWindowsFlag[8];
+ UINT8 Reserved[20];
+ UINT8 Signature[128];
+} WINDOWS_MARKER_STRUCTURE;
+
+//<AMI_SHDR_START>
+//----------------------------------------------------------------------------
+//
+// Name: EFI_ACPI_SLP
+//
+// Description: This structure comes out of the document:
+// OEM Activation version 2.0 for M$ Windows Vista (tm) Operating System.
+//
+// Fields:
+// Name Type Description
+// ------------------------------------------------------------------
+// Header EFI_ACPI_DESCRIPTION_HEADER Common ACPI table header
+// PubKey OEM_PUBLIC_KEY_STRUCTURE See above for description
+// WinMarker WINDOWS_MARKER_STRUCTURE See above for description
+//
+//----------------------------------------------------------------------------
+//<AMI_SHDR_END>
+
+typedef struct {
+ ACPI_HDR Header;
+ OEM_PUBLIC_KEY_STRUCTURE PubKey;
+ WINDOWS_MARKER_STRUCTURE WinMarker;
+} EFI_ACPI_SLP;
+
+#pragma pack()
+
+
+/****** DO NOT WRITE BELOW THIS LINE *******/
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+//****************************************************************************
+//****************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone (770)-246-8600 **
+//** **
+//****************************************************************************
+//****************************************************************************
diff --git a/Core/EM/SLP20/SlpSupport.mak b/Core/EM/SLP20/SlpSupport.mak
new file mode 100644
index 0000000..80a41a0
--- /dev/null
+++ b/Core/EM/SLP20/SlpSupport.mak
@@ -0,0 +1,118 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2011, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
+
+#**********************************************************************
+# $Header: /Alaska/BIN/Modules/SLP/SlpSupport.mak 8 8/09/11 10:18a Vyacheslava $
+# $Revision: 8 $
+# $Date: 8/09/11 10:18a $
+#**********************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/BIN/Modules/SLP/SlpSupport.mak $
+#
+# 8 8/09/11 10:18a Vyacheslava
+# [TAG] EIP63678
+# [Description] The modules GUID has been changed.
+#
+# 7 7/01/11 12:00p Vyacheslava
+# [TAG] EIP63678
+# [Category] New Feature
+# [Description] Preserve the OEM Activation SLIC during the BIOS
+# recovery path.
+# [Files] SlpSupport.sdl
+# SlpSupport.mak
+# SlpSupport.c
+# SlpSupport.dxs
+# SlpSupport.h
+# SlpSupport.cif
+#
+# 6 5/18/10 4:14p Vyacheslava
+# Updated copiright header.
+#
+# 5 8/19/09 11:49a Vyacheslava
+# Removed token USE_SOURCE_BINARIES (EIP#25334).
+#
+# 4 6/12/09 11:02a Vyacheslava
+# EIP#23109: Synopsis: Tokens for SlpSupport eModule.
+# Description: SlpSupport eModule needs to have tokens
+# SLP_MARKER_ROM_FILENAME SLP_PUBKEY_ROM_FILENAME to make more flexible
+# in changing Marker and Public Key files.
+#
+# 3 2/11/08 12:01p Felixp
+# Make file bug fix.
+#
+# 2 5/30/07 6:24p Aaronp
+# Changed mak file to allow for SDL token to include or exclude
+# the Public Key binary and the Marker binary. This is necssary
+# for supporting the AMISLP tool from the utilites group.
+#
+# 1 3/30/07 3:39p Felixp
+#
+#**********************************************************************
+#<AMI_FHDR_START>
+#
+# Name: SlpSupport.mak
+#
+# Description: Make file for SlpSupport eModule.
+#
+#<AMI_FHDR_END>
+#**********************************************************************
+
+all : SLP
+
+SLP20MARKER_GUID = 69009842-63F2-43db-964B-EFAD1C39EC85
+SLP20PUBKEY_GUID = 996AA1E0-1E8C-4f36-B519-A170A206FC14
+
+SLP_BINARIES : $(BUILD_DIR)\SLP20Marker.ffs $(BUILD_DIR)\SLP20PubKey.ffs
+SLP : $(BUILD_DIR)\SlpSupport.mak SlpSupportBin SLP_BINARIES
+
+$(BUILD_DIR)\SlpSupport.mak : $(SLP_SUPPORT_DIR)\SlpSupport.cif
+ $(CIF2MAK) $(SLP_SUPPORT_DIR)\SlpSupport.cif $(CIF2MAK_DEFAULTS)
+
+SlpSupportBin: $(AMIDXELIB)
+ $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\
+ /f $(BUILD_DIR)\SlpSupport.mak all\
+ GUID=952821AA-EACD-465b-B478-5429DFC9A747\
+ ENTRY_POINT=SlpSupport_EntryPoint\
+ TYPE=BS_DRIVER\
+ "EXT_HEADERS=$(BUILD_DIR)\Token.h"\
+ COMPRESS=1
+
+$(BUILD_DIR)\SLP20Marker.ffs : $(SLP_MARKER_ROM_FILENAME)
+ $(MAKE) /f Core\FFS.mak \
+ BUILD_DIR=$(BUILD_DIR) \
+ GUID=$(SLP20MARKER_GUID) \
+ TYPE=EFI_FV_FILETYPE_FREEFORM \
+ BINFILE=$** FFSFILE=$@ COMPRESS=0 NAME=$(**B)
+
+$(BUILD_DIR)\SLP20PubKey.ffs : $(SLP_PUBKEY_ROM_FILENAME)
+ $(MAKE) /f Core\FFS.mak \
+ BUILD_DIR=$(BUILD_DIR) \
+ GUID=$(SLP20PUBKEY_GUID) \
+ TYPE=EFI_FV_FILETYPE_FREEFORM \
+ BINFILE=$** FFSFILE=$@ COMPRESS=0 NAME=$(**B)
+
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2011, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
diff --git a/Core/EM/SLP20/SlpSupport.sdl b/Core/EM/SLP20/SlpSupport.sdl
new file mode 100644
index 0000000..780efb5
--- /dev/null
+++ b/Core/EM/SLP20/SlpSupport.sdl
@@ -0,0 +1,52 @@
+TOKEN
+ Name = "SlpSupport_SUPPORT"
+ Value = "1"
+ Help = "Main switch to enable SlpSupport support in Project"
+ TokenType = Boolean
+ TargetMAK = Yes
+ Master = Yes
+ Token = "ACPI_SUPPORT" "=" "1"
+End
+
+PATH
+ Name = "SLP_SUPPORT_DIR"
+End
+
+MODULE
+ Help = "Includes SlpSupport.mak to Project"
+ File = "SlpSupport.mak"
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\SlpSupport.ffs"
+ Parent = "FV_MAIN"
+ InvokeOrder = AfterParent
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\Slp20Marker.ffs"
+ Parent = "FV_MAIN"
+ InvokeOrder = AfterParent
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\Slp20PubKey.ffs"
+ Parent = "FV_MAIN"
+ InvokeOrder = AfterParent
+End
+
+TOKEN
+ Name = "SLP_MARKER_ROM_FILENAME"
+ Value = "$(SLP_SUPPORT_DIR)\Marker.bin"
+ Help = "SLP2.0 Marker key rom file"
+ TokenType = File
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "SLP_PUBKEY_ROM_FILENAME"
+ Value = "$(SLP_SUPPORT_DIR)\PubKey.bin"
+ Help = "SLP2.0 Public key rom file"
+ TokenType = File
+ TargetMAK = Yes
+End
diff --git a/Core/EM/Slp10/OemTable.asm b/Core/EM/Slp10/OemTable.asm
new file mode 100644
index 0000000..0eb3902
--- /dev/null
+++ b/Core/EM/Slp10/OemTable.asm
@@ -0,0 +1,67 @@
+;*************************************************************************
+;*************************************************************************
+;** **
+;** (C)Copyright 1985-2009, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;*************************************************************************
+;*************************************************************************
+
+;*****************************************************************************
+; $Header: /Alaska/SOURCE/Modules/Slp10/OemTable.asm 1 6/18/09 5:31p Vyacheslava $
+;
+; $Revision: 1 $
+;
+; $Date: 6/18/09 5:31p $
+;*****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/SOURCE/Modules/Slp10/OemTable.asm $
+;
+; 1 6/18/09 5:31p Vyacheslava
+; Initial Creation
+;
+;*****************************************************************************
+;<AMI_FHDR_START>
+;
+; Name: OemTable.asm
+;
+; Description: This is OEM table binary for Aptio Firmware Volume.
+;
+;<AMI_FHDR_END>
+;*****************************************************************************
+
+ INCLUDE token.equ
+
+.686p
+.model flat
+.data
+
+slp_string_size SIZESTR MKF_SLP_STRING
+
+ DB '$ODB$', 0
+ DW 001h
+ DW MKF_OEM_DATA_SPACE_SIZE
+ DB @CATSTR(<!'>,%MKF_SLP_STRING,<!'>)
+ DB [MKF_OEM_DATA_SPACE_SIZE - slp_string_size] DUP (0)
+
+end
+
+;*************************************************************************
+;*************************************************************************
+;** **
+;** (C)Copyright 1985-2009, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;*************************************************************************
+;*************************************************************************
diff --git a/Core/EM/Slp10/Slp10.c b/Core/EM/Slp10/Slp10.c
new file mode 100644
index 0000000..b83edd5
--- /dev/null
+++ b/Core/EM/Slp10/Slp10.c
@@ -0,0 +1,125 @@
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2009, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
+
+//*****************************************************************************
+// $Header: /Alaska/SOURCE/Modules/Slp10/Slp10.c 1 6/18/09 5:31p Vyacheslava $
+//
+// $Revision: 1 $
+//
+// $Date: 6/18/09 5:31p $
+//*****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/Slp10/Slp10.c $
+//
+// 1 6/18/09 5:31p Vyacheslava
+// Initial Creation
+//
+//
+//*****************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: Slp10.c
+//
+// Description: Implementation of the SLP 1.0 eModule.
+//
+//<AMI_FHDR_END>
+//*****************************************************************************
+
+//----------------------------------------------------------------------------
+
+#include <AmiDxeLib.h>
+#include <Token.h>
+#include <Protocol/LegacyBiosExt.h>
+#include "Slp10.h"
+
+//----------------------------------------------------------------------------
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: Slp10_EntryPoint
+//
+// Description: This function is the entry point of the Slp10 eModule.
+//
+// Parameter:
+// ImageHandle - Image handle for this driver image.
+// SystemTable - Pointer to the EFI system table.
+//
+// Return value: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+EFI_STATUS Slp10_EntryPoint(
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable )
+{
+ EFI_STATUS Status;
+ EFI_GUID EfiLegacyBiosExtProtocolGuid = EFI_LEGACY_BIOS_EXT_PROTOCOL_GUID;
+ EFI_GUID BiosFeaturesSectionGuid = BIOS_FEATURES_SECTION_GUID;
+ EFI_LEGACY_BIOS_EXT_PROTOCOL *LegacyBiosExtProtocol = NULL;
+ UINT8 *DataPtr = NULL;
+ UINTN Size = 0;
+ UINTN Address;
+
+ InitAmiLib( ImageHandle, SystemTable );
+
+ // Get OEM data from Aptio FV
+ Status = ReadImageResource(
+ ImageHandle,
+ &BiosFeaturesSectionGuid,
+ &DataPtr,
+ &Size
+ );
+ if (EFI_ERROR(Status))
+ return Status;
+
+ // Locate the Aptio extended Legacy Protocol
+ Status = pBS->LocateProtocol(
+ &EfiLegacyBiosExtProtocolGuid,
+ NULL,
+ &LegacyBiosExtProtocol
+ );
+ ASSERT_EFI_ERROR(Status);
+ if (EFI_ERROR(Status))
+ return Status;
+
+ // Copy OEM Data to Legacy Table
+ Address = LegacyBiosExtProtocol->CopyLegacyTable(
+ ((BIOS_OEM_DATA*)DataPtr)->Data, // Pointer to SLP data
+ OEM_DATA_SPACE_SIZE, // Size of the data
+ 1, // Alignment
+ OEM_DATA_LOCATION_BIT // Location Attribute
+ );
+ ASSERT_EFI_ERROR(Address);
+
+ Status = pBS->FreePool(DataPtr);
+ ASSERT_EFI_ERROR(Status);
+ return Status;
+}
+
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2009, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
diff --git a/Core/EM/Slp10/Slp10.chm b/Core/EM/Slp10/Slp10.chm
new file mode 100644
index 0000000..f58c4ab
--- /dev/null
+++ b/Core/EM/Slp10/Slp10.chm
Binary files differ
diff --git a/Core/EM/Slp10/Slp10.cif b/Core/EM/Slp10/Slp10.cif
new file mode 100644
index 0000000..8d7ed77
--- /dev/null
+++ b/Core/EM/Slp10/Slp10.cif
@@ -0,0 +1,14 @@
+<component>
+ name = "Slp10"
+ category = eModule
+ LocalRoot = "Core\EM\Slp10\"
+ RefName = "Slp10"
+[files]
+"Slp10.sdl"
+"Slp10.mak"
+"Slp10.c"
+"Slp10.dxs"
+"OemTable.asm"
+"Slp10.h"
+"Slp10.chm"
+<endComponent>
diff --git a/Core/EM/Slp10/Slp10.dxs b/Core/EM/Slp10/Slp10.dxs
new file mode 100644
index 0000000..4ce0411
--- /dev/null
+++ b/Core/EM/Slp10/Slp10.dxs
@@ -0,0 +1,18 @@
+//<AMI_FHDR_START>
+//----------------------------------------------------------------------------
+// Name: Slp10.dxs
+//
+// Description: This file is the dependency file for Slp10 driver
+//
+//----------------------------------------------------------------------------
+//<AMI_FHDR_END>
+
+//----------------------------------------------------------------------------
+// Header files for GUID definitions
+//----------------------------------------------------------------------------
+
+#include <Protocol\LegacyBios.h>
+
+DEPENDENCY_START
+ EFI_LEGACY_BIOS_PROTOCOL_GUID
+DEPENDENCY_END
diff --git a/Core/EM/Slp10/Slp10.h b/Core/EM/Slp10/Slp10.h
new file mode 100644
index 0000000..8a6ed2b
--- /dev/null
+++ b/Core/EM/Slp10/Slp10.h
@@ -0,0 +1,104 @@
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2009, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
+
+//*****************************************************************************
+// $Header: /Alaska/SOURCE/Modules/Slp10/Slp10.h 1 6/18/09 5:31p Vyacheslava $
+//
+// $Revision: 1 $
+//
+// $Date: 6/18/09 5:31p $
+//*****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/Slp10/Slp10.h $
+//
+// 1 6/18/09 5:31p Vyacheslava
+// Initial Creation
+//
+//
+//*****************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: Slp10.h
+//
+// Description: Internal header file of the Slp10 eModule.
+//
+//<AMI_FHDR_END>
+//*****************************************************************************
+
+#ifndef _AMI_SLP10_MODULE_H
+#define _AMI_SLP10_MODULE_H
+
+#include <EFI.h>
+#include <Token.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// {2EBE0275-6458-4af9-91ED-D3F4EDB100AA}
+#define BIOS_FEATURES_SECTION_GUID \
+ {0x2ebe0275, 0x6458, 0x4af9, 0x91, 0xed, 0xd3, 0xf4, 0xed, 0xb1, 0x0, 0xaa}
+
+#define OEM_DATA_LOCATION_BIT 0x80
+
+#pragma pack(1)
+
+//<AMI_SHDR_START>
+//----------------------------------------------------------------------------
+// Name: BIOS_OEM_DATA
+//
+// Description: This structure comes out of the AMI Utility Specification.
+//
+// Fields:
+// Name Type Description
+// ---------------------------------------------------------------------------
+// Guid EFI_GUID Firmware Section GUID
+// Identifier CHAR8 Identifier String "$ODB$"
+// Flag UINT16 Data Flag
+// Size UINT16 Data Size
+// Data UINT8 Data Buffer (SLP String)
+//
+//----------------------------------------------------------------------------
+//<AMI_SHDR_END>
+
+typedef struct _BIOS_OEM_DATA {
+ EFI_GUID Guid;
+ CHAR8 Identifier[6];
+ UINT16 Flag;
+ UINT16 Size;
+ UINT8 Data[OEM_DATA_SPACE_SIZE];
+} BIOS_OEM_DATA;
+
+#pragma pack()
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2009, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
diff --git a/Core/EM/Slp10/Slp10.mak b/Core/EM/Slp10/Slp10.mak
new file mode 100644
index 0000000..13dbef2
--- /dev/null
+++ b/Core/EM/Slp10/Slp10.mak
@@ -0,0 +1,83 @@
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2009, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#*************************************************************************
+#*************************************************************************
+
+#*****************************************************************************
+# $Header: /Alaska/SOURCE/Modules/Slp10/Slp10.mak 2 7/14/09 12:26p Vyacheslava $
+#
+# $Revision: 2 $
+#
+# $Date: 7/14/09 12:26p $
+#*****************************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/Slp10/Slp10.mak $
+#
+# 2 7/14/09 12:26p Vyacheslava
+# EIP#17468: Synopsis: customers are requesting support for SLP1.0.
+# Description: Mandal, We have support for SLP2.0 but not SLP1.0. Core8
+# has support for both and customers ar requesting SLP1.0 support. Please
+# let us know your plans for this.
+# - Removed $(BUILD_DIR)\AmiHpLibrary.lib.
+#
+# 1 6/18/09 5:31p Vyacheslava
+# Initial Creation
+#
+#*****************************************************************************
+#<AMI_FHDR_START>
+#
+# Name: Slp10.mak
+#
+# Description: Make file for Slp10 eModule.
+#
+#<AMI_FHDR_END>
+#*****************************************************************************
+
+all : Slp10
+
+Slp10 : $(BUILD_DIR)\Slp10.mak $(BUILD_DIR)\OemTable.bin Slp10Bin
+
+SLP10_OBJECTS = $(BUILD_DIR)\$(Slp10_DIR)\Slp10.obj
+
+$(BUILD_DIR)\Slp10.mak : $(Slp10_DIR)\$(@B).cif $(Slp10_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(Slp10_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+$(BUILD_DIR)\OemTable.bin : $(Slp10_DIR)\OemTable.asm
+ $(ASM) /c /Fo$(BUILD_DIR)\ $(Slp10_DIR)\OemTable.asm
+ $(ASMLINK) $(BUILD_DIR)\OemTable.obj, $*.exe, $*.map,,,
+ exe2bin $*.exe $@
+
+Slp10Bin : $(AMIDXELIB)
+ $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\
+ /f $(BUILD_DIR)\Slp10.mak all\
+ GUID=8E477676-55FD-48cf-9210-15A99B27D740\
+ OBJECTS="$(SLP10_OBJECTS)" \
+ ENTRY_POINT=Slp10_EntryPoint\
+ RESOURCE=$(BUILD_DIR)\OemTable.bin\
+ SECTION_GUID=2EBE0275-6458-4af9-91ED-D3F4EDB100AA\
+ TYPE=BS_DRIVER\
+ COMPRESS=1
+
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2009, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#*************************************************************************
+#*************************************************************************
diff --git a/Core/EM/Slp10/Slp10.sdl b/Core/EM/Slp10/Slp10.sdl
new file mode 100644
index 0000000..136d9b7
--- /dev/null
+++ b/Core/EM/Slp10/Slp10.sdl
@@ -0,0 +1,43 @@
+TOKEN
+ Name = Slp10_SUPPORT
+ Value = 1
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+ Help = "Main switch to enable Slp10 support in Project"
+End
+
+TOKEN
+ Name = "OEM_DATA_SPACE_SIZE"
+ Value = "0x3E"
+ Help = "Maximum OEM data space size."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "SLP_STRING"
+ Value = "Copyright American Megatrends Inc. 1985-2009"
+ Help = "SLP string."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+PATH
+ Name = Slp10_DIR
+ Help = "Path to Slp10 Module in Project"
+End
+
+MODULE
+ Help = "Includes Slp10.mak to Project"
+ File = "Slp10.mak"
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\Slp10.ffs"
+ Parent = "FV_MAIN"
+ InvokeOrder = AfterParent
+End
+