summaryrefslogtreecommitdiff
path: root/Board/EM/AAEONSecurity/AAEONSecurity.c
blob: 3946c4b8f6d98c97270652f6100ee2701d285c4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <EFI.h>
#include <Token.h>
#include <AmiDxeLib.h>
#include <Protocol\LegacyRegion.h>

//----------------------------------------------------------------------------
// Description: InstallSecurityString
//----------------------------------------------------------------------------
EFI_STATUS InstallSecurityString()
{
    EFI_GUID 			gEfiLegacyRegionProtocol = EFI_LEGACY_REGION_PROTOCOL_GUID;
    EFI_LEGACY_REGION_PROTOCOL	*LegacyRegionProtocol;
    UINTN      			NumberOfHandles;
    EFI_HANDLE 			*HandleBuffer;
    EFI_STATUS              	Status;

    CHAR8  SIGNATURE_STR1[] = {0x22, 0x34, 0x03, 0x98, "AAEON Technology Inc."};
    CHAR8  SIGNATURE_STR2[] = CONVERT_TO_STRING(SIGNATURE_MODEL_TAG);

    //F0000-F1000 unlock
    Status = pBS->LocateHandleBuffer ( ByProtocol, &gEfiLegacyRegionProtocol, NULL, &NumberOfHandles,  &HandleBuffer );
    Status = pBS->HandleProtocol ( HandleBuffer[0], &gEfiLegacyRegionProtocol, &LegacyRegionProtocol);
    pBS->FreePool(HandleBuffer);
    Status = LegacyRegionProtocol->UnLock(LegacyRegionProtocol, 0xF0000, 0x10000, NULL);

//    pBS->CopyMem((VOID*)(SIGNATURE_ADDRESS1), SIGNATURE_STR1, sizeof (SIGNATURE_STR1) );
    pBS->CopyMem((VOID*)(SIGNATURE_ADDRESS2), SIGNATURE_STR2, sizeof (SIGNATURE_STR2) );

    Status = LegacyRegionProtocol->Lock(LegacyRegionProtocol, 0xF0000, 0x10000, NULL);

    return Status;
}

//----------------------------------------------------------------------------
// Description: AAEONSecurityEntryPoint
//----------------------------------------------------------------------------
EFI_STATUS AAEONSecurityEntryPoint(
	IN EFI_HANDLE		ImageHandle,
	IN EFI_SYSTEM_TABLE	*SystemTable
)
{
    InitAmiLib(ImageHandle, SystemTable);

    return InstallSecurityString();
}