From 2ef2b01e07c02db339f34004445734a2dbdd80e1 Mon Sep 17 00:00:00 2001 From: AJFISH Date: Sun, 6 Dec 2009 01:57:05 +0000 Subject: Adding support for BeagleBoard. ArmPkg - Supoprt for ARM specific things that can change as the architecture changes. Plus semihosting JTAG drivers. EmbeddedPkg - Generic support for an embeddded platform. Including a light weight command line shell. BeagleBoardPkg - Platform specifics for BeagleBoard. SD Card works, but USB has issues. Looks like a bug in the open source USB stack (Our internal stack works fine). git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9518 6f19259b-4bc3-4df7-8a09-765794883524 --- .../EmbeddedMonotonicCounter.c | 82 ++++++++++++++++++++++ .../EmbeddedMonotonicCounter.inf | 29 ++++++++ 2 files changed, 111 insertions(+) create mode 100644 EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.c create mode 100644 EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf (limited to 'EmbeddedPkg/EmbeddedMonotonicCounter') diff --git a/EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.c b/EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.c new file mode 100644 index 0000000000..66ebe67a92 --- /dev/null +++ b/EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.c @@ -0,0 +1,82 @@ +/** @file + + Copyright (c) 2008-2009, Apple Inc. All rights reserved. + + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include + +#include +#include +#include +#include + +#include + +UINT64 gCurrentMonotonicCount = 0; + +EFI_STATUS +EFIAPI +GetNextMonotonicCount ( + OUT UINT64 *Count + ) +{ + if (Count == NULL) { + return EFI_INVALID_PARAMETER; + } + + *Count = gCurrentMonotonicCount++; + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +GetNextHighMonotonicCount ( + OUT UINT32 *HighCount + ) +{ + if (HighCount == NULL) { + return EFI_INVALID_PARAMETER; + } + + gCurrentMonotonicCount += 0x0000000100000000ULL; + + *HighCount = RShiftU64 (gCurrentMonotonicCount, 32) & 0xFFFFFFFF; + + return EFI_SUCCESS; +} + + +EFI_STATUS +EFIAPI +MonotonicCounterDriverInitialize ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_HANDLE Handle = NULL; + + // Make sure the Monotonic Counter Architectural Protocol is not already installed in the system + ASSERT_PROTOCOL_ALREADY_INSTALLED(NULL, &gEfiMonotonicCounterArchProtocolGuid); + + // Fill in the EFI Boot Services and EFI Runtime Services Monotonic Counter Fields + gBS->GetNextMonotonicCount = GetNextMonotonicCount; + gRT->GetNextHighMonotonicCount = GetNextHighMonotonicCount; + + // Install the Monotonic Counter Architctural Protocol onto a new handle + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEfiMonotonicCounterArchProtocolGuid, NULL, + NULL + ); + return Status; +} diff --git a/EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf b/EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf new file mode 100644 index 0000000000..8508ac53a3 --- /dev/null +++ b/EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf @@ -0,0 +1,29 @@ +#%HEADER% +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = EmbeddedMonotonicCounter + FILE_GUID = FCABE6A7-7953-4A84-B7EC-D29E89B62E87 + MODULE_TYPE = DXE_RUNTIME_DRIVER + VERSION_STRING = 1.0 + + ENTRY_POINT = MonotonicCounterDriverInitialize + +[Sources.common] + EmbeddedMonotonicCounter.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + BaseLib + DebugLib + UefiBootServicesTableLib + UefiDriverEntryPoint + UefiRuntimeServicesTableLib + +[Protocols] + gEfiMonotonicCounterArchProtocolGuid + +[Depex] + TRUE + -- cgit v1.2.3