Remove ArmEbPkg and replace with ArmRealViewEbPkg. Ported ArmRealViewEbPkg to have a PEI phase, and added place holder CPU PEIM to ArmPkg. This ArmRealViewEbPkg now boots from SEC, PEI, DXE, BDS, to EBL in the ARM RealView system emulator that comes with RealView Pro.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10621 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
80
ArmRealViewEbPkg/Library/DebugAgentTimerLib/DebugAgentTimerLib.c
Executable file
80
ArmRealViewEbPkg/Library/DebugAgentTimerLib/DebugAgentTimerLib.c
Executable file
@@ -0,0 +1,80 @@
|
||||
/** @file
|
||||
Template for ArmEb DebugAgentLib.
|
||||
|
||||
For ARM we reserve FIQ for the Debug Agent Timer. We don't care about
|
||||
laytency as we only really need the timer to run a few times a second
|
||||
(how fast can some one type a ctrl-c?), but it works much better if
|
||||
the interrupt we are using to break into the debugger is not being
|
||||
used, and masked, by the system.
|
||||
|
||||
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||
|
||||
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 <Base.h>
|
||||
|
||||
#include <Library/DebugAgentTimerLib.h>
|
||||
|
||||
#include <ArmEb/ArmEb.h>
|
||||
|
||||
|
||||
/**
|
||||
Setup all the hardware needed for the debug agents timer.
|
||||
|
||||
This function is used to set up debug enviroment.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
DebugAgentTimerIntialize (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
// Map Timer to FIQ
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Set the period for the debug agent timer. Zero means disable the timer.
|
||||
|
||||
@param[in] TimerPeriodMilliseconds Frequency of the debug agent timer.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
DebugAgentTimerSetPeriod (
|
||||
IN UINT32 TimerPeriodMilliseconds
|
||||
)
|
||||
{
|
||||
if (TimerPeriodMilliseconds == 0) {
|
||||
// Disable timer and Disable FIQ
|
||||
return;
|
||||
}
|
||||
|
||||
// Set timer period and unmask FIQ
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Perform End Of Interrupt for the debug agent timer. This is called in the
|
||||
interrupt handler after the interrupt has been processed.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
DebugAgentTimerEndOfInterrupt (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
// EOI Timer interrupt for FIQ
|
||||
}
|
||||
|
||||
|
38
ArmRealViewEbPkg/Library/DebugAgentTimerLib/DebugAgentTimerLib.inf
Executable file
38
ArmRealViewEbPkg/Library/DebugAgentTimerLib/DebugAgentTimerLib.inf
Executable file
@@ -0,0 +1,38 @@
|
||||
#/** @file
|
||||
# Component description file for Base PCI Cf8 Library.
|
||||
#
|
||||
# PCI CF8 Library that uses I/O ports 0xCF8 and 0xCFC to perform PCI Configuration cycles.
|
||||
# Layers on top of an I/O Library instance.
|
||||
# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = ArmEbDebugAgentTimerLib
|
||||
FILE_GUID = 80949BBB-68EE-4a4c-B434-D5DB5A232F0C
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = DebugAgentTimerLib|SEC BASE DXE_CORE
|
||||
|
||||
|
||||
[Sources.common]
|
||||
DebugAgentTimerLib.c
|
||||
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
ArmRealViewEbPkg/ArmRealViewEbPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
IoLib
|
||||
|
123
ArmRealViewEbPkg/Library/GdbSerialLib/GdbSerialLib.c
Executable file
123
ArmRealViewEbPkg/Library/GdbSerialLib/GdbSerialLib.c
Executable file
@@ -0,0 +1,123 @@
|
||||
/** @file
|
||||
Basic serial IO abstaction for GDB
|
||||
|
||||
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||
|
||||
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 <Uefi.h>
|
||||
#include <Library/GdbSerialLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
|
||||
#include <ArmEb/ArmEb.h>
|
||||
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
GdbSerialLibConstructor (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return GdbSerialInit (115200, 0, 8, 1);
|
||||
}
|
||||
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
GdbSerialInit (
|
||||
IN UINT64 BaudRate,
|
||||
IN UINT8 Parity,
|
||||
IN UINT8 DataBits,
|
||||
IN UINT8 StopBits
|
||||
)
|
||||
{
|
||||
if ((Parity != 0) || (DataBits != 8) || (StopBits != 1)) {
|
||||
return RETURN_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (BaudRate != 115200) {
|
||||
// Could add support for different Baud rates....
|
||||
return RETURN_UNSUPPORTED;
|
||||
}
|
||||
|
||||
UINT32 Base = PcdGet32 (PcdGdbUartBase);
|
||||
|
||||
// initialize baud rate generator to 115200 based on EB clock REFCLK24MHZ
|
||||
MmioWrite32 (Base + UARTIBRD, UART_115200_IDIV);
|
||||
MmioWrite32 (Base + UARTFBRD, UART_115200_FDIV);
|
||||
|
||||
// no parity, 1 stop, no fifo, 8 data bits
|
||||
MmioWrite32 (Base + UARTLCR_H, 0x60);
|
||||
|
||||
// clear any pending errors
|
||||
MmioWrite32 (Base + UARTECR, 0);
|
||||
|
||||
// enable tx, rx, and uart overall
|
||||
MmioWrite32 (Base + UARTCR, 0x301);
|
||||
|
||||
return RETURN_SUCCESS;
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
GdbIsCharAvailable (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UINT32 FR = PcdGet32 (PcdGdbUartBase) + UARTFR;
|
||||
|
||||
if ((MmioRead32 (FR) & UART_RX_EMPTY_FLAG_MASK) == 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
CHAR8
|
||||
EFIAPI
|
||||
GdbGetChar (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UINT32 FR = PcdGet32 (PcdGdbUartBase) + UARTFR;
|
||||
UINT32 DR = PcdGet32 (PcdGdbUartBase) + UARTDR;
|
||||
|
||||
while ((MmioRead32 (FR) & UART_RX_EMPTY_FLAG_MASK) == 0);
|
||||
return MmioRead8 (DR);
|
||||
}
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
GdbPutChar (
|
||||
IN CHAR8 Char
|
||||
)
|
||||
{
|
||||
UINT32 FR = PcdGet32 (PcdGdbUartBase) + UARTFR;
|
||||
UINT32 DR = PcdGet32 (PcdGdbUartBase) + UARTDR;
|
||||
|
||||
while ((MmioRead32 (FR) & UART_TX_EMPTY_FLAG_MASK) != 0);
|
||||
MmioWrite8 (DR, Char);
|
||||
return;
|
||||
}
|
||||
|
||||
VOID
|
||||
GdbPutString (
|
||||
IN CHAR8 *String
|
||||
)
|
||||
{
|
||||
while (*String != '\0') {
|
||||
GdbPutChar (*String);
|
||||
String++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
40
ArmRealViewEbPkg/Library/GdbSerialLib/GdbSerialLib.inf
Executable file
40
ArmRealViewEbPkg/Library/GdbSerialLib/GdbSerialLib.inf
Executable file
@@ -0,0 +1,40 @@
|
||||
#/** @file
|
||||
#
|
||||
# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||
# 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.
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = GdbSerialLib
|
||||
FILE_GUID = E8EA1309-2F14-428f-ABE3-7016CE4B4305
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = GdbSerialLib
|
||||
|
||||
CONSTRUCTOR = GdbSerialLibConstructor
|
||||
|
||||
|
||||
[Sources.common]
|
||||
GdbSerialLib.c
|
||||
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
ArmRealViewEbPkg/ArmRealViewEbPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
DebugLib
|
||||
IoLib
|
||||
|
||||
[FixedPcd]
|
||||
|
||||
gArmRealViewEbPkgTokenSpaceGuid.PcdGdbUartBase
|
@@ -0,0 +1,70 @@
|
||||
/** @file
|
||||
PEI Services Table Pointer Library.
|
||||
|
||||
This library is used for PEIM which does executed from flash device directly but
|
||||
executed in memory.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
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 <PiPei.h>
|
||||
#include <Library/PeiServicesTablePointerLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
|
||||
/**
|
||||
Caches a pointer PEI Services Table.
|
||||
|
||||
Caches the pointer to the PEI Services Table specified by PeiServicesTablePointer
|
||||
in a platform specific manner.
|
||||
|
||||
If PeiServicesTablePointer is NULL, then ASSERT().
|
||||
|
||||
@param PeiServicesTablePointer The address of PeiServices pointer.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
SetPeiServicesTablePointer (
|
||||
IN CONST EFI_PEI_SERVICES ** PeiServicesTablePointer
|
||||
)
|
||||
{
|
||||
UINTN *PeiPtrLoc;
|
||||
ASSERT (PeiServicesTablePointer != NULL);
|
||||
|
||||
PeiPtrLoc = (UINTN *)(UINTN)PcdGet32(PcdPeiServicePtrAddr);
|
||||
*PeiPtrLoc = (UINTN)PeiServicesTablePointer;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves the cached value of the PEI Services Table pointer.
|
||||
|
||||
Returns the cached value of the PEI Services Table pointer in a CPU specific manner
|
||||
as specified in the CPU binding section of the Platform Initialization Pre-EFI
|
||||
Initialization Core Interface Specification.
|
||||
|
||||
If the cached PEI Services Table pointer is NULL, then ASSERT().
|
||||
|
||||
@return The pointer to PeiServices.
|
||||
|
||||
**/
|
||||
CONST EFI_PEI_SERVICES **
|
||||
EFIAPI
|
||||
GetPeiServicesTablePointer (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UINTN *PeiPtrLoc;
|
||||
|
||||
PeiPtrLoc = (UINTN *)(UINTN)PcdGet32(PcdPeiServicePtrAddr);
|
||||
return (CONST EFI_PEI_SERVICES **)*PeiPtrLoc;
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,43 @@
|
||||
## @file
|
||||
# Instance of PEI Services Table Pointer Library using global variable for the table pointer.
|
||||
#
|
||||
# PEI Services Table Pointer Library implementation that retrieves a pointer to the
|
||||
# PEI Services Table from a global variable. Not available to modules that execute from
|
||||
# read-only memory.
|
||||
#
|
||||
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = PeiServicesTablePointerLib
|
||||
FILE_GUID = 1c747f6b-0a58-49ae-8ea3-0327a4fa10e3
|
||||
MODULE_TYPE = PEIM
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = PeiServicesTablePointerLib|PEIM PEI_CORE SEC
|
||||
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC is for build only)
|
||||
#
|
||||
|
||||
[Sources]
|
||||
PeiServicesTablePointer.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
ArmRealViewEbPkg/ArmRealViewEbPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
DebugLib
|
||||
|
||||
[Pcd]
|
||||
gArmRealViewEbPkgTokenSpaceGuid.PcdPeiServicePtrAddr
|
175
ArmRealViewEbPkg/Library/RealTimeClockLib/RealTimeClockLib.c
Executable file
175
ArmRealViewEbPkg/Library/RealTimeClockLib/RealTimeClockLib.c
Executable file
@@ -0,0 +1,175 @@
|
||||
/** @file
|
||||
Implement EFI RealTimeClock runtime services via RTC Lib.
|
||||
|
||||
Currently this driver does not support runtime virtual calling.
|
||||
|
||||
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||
|
||||
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 <PiDxe.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/RealTimeClockLib.h>
|
||||
|
||||
|
||||
/**
|
||||
Returns the current time and date information, and the time-keeping capabilities
|
||||
of the hardware platform.
|
||||
|
||||
@param Time A pointer to storage to receive a snapshot of the current time.
|
||||
@param Capabilities An optional pointer to a buffer to receive the real time clock
|
||||
device's capabilities.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
@retval EFI_INVALID_PARAMETER Time is NULL.
|
||||
@retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibGetTime (
|
||||
OUT EFI_TIME *Time,
|
||||
OUT EFI_TIME_CAPABILITIES *Capabilities
|
||||
)
|
||||
{
|
||||
//
|
||||
// Fill in Time and Capabilities via data from you RTC
|
||||
//
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Sets the current local time and date information.
|
||||
|
||||
@param Time A pointer to the current time.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
@retval EFI_INVALID_PARAMETER A time field is out of range.
|
||||
@retval EFI_DEVICE_ERROR The time could not be set due due to hardware error.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibSetTime (
|
||||
IN EFI_TIME *Time
|
||||
)
|
||||
{
|
||||
//
|
||||
// Use Time, to set the time in your RTC hardware
|
||||
//
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Returns the current wakeup alarm clock setting.
|
||||
|
||||
@param Enabled Indicates if the alarm is currently enabled or disabled.
|
||||
@param Pending Indicates if the alarm signal is pending and requires acknowledgement.
|
||||
@param Time The current alarm setting.
|
||||
|
||||
@retval EFI_SUCCESS The alarm settings were returned.
|
||||
@retval EFI_INVALID_PARAMETER Any parameter is NULL.
|
||||
@retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibGetWakeupTime (
|
||||
OUT BOOLEAN *Enabled,
|
||||
OUT BOOLEAN *Pending,
|
||||
OUT EFI_TIME *Time
|
||||
)
|
||||
{
|
||||
// Not a required feature
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Sets the system wakeup alarm clock time.
|
||||
|
||||
@param Enabled Enable or disable the wakeup alarm.
|
||||
@param Time If Enable is TRUE, the time to set the wakeup alarm for.
|
||||
|
||||
@retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If
|
||||
Enable is FALSE, then the wakeup alarm was disabled.
|
||||
@retval EFI_INVALID_PARAMETER A time field is out of range.
|
||||
@retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error.
|
||||
@retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibSetWakeupTime (
|
||||
IN BOOLEAN Enabled,
|
||||
OUT EFI_TIME *Time
|
||||
)
|
||||
{
|
||||
// Not a required feature
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
This is the declaration of an EFI image entry point. This can be the entry point to an application
|
||||
written to this specification, an EFI boot service driver, or an EFI runtime driver.
|
||||
|
||||
@param ImageHandle Handle that identifies the loaded image.
|
||||
@param SystemTable System Table for this image.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibRtcInitialize (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do some initialization if reqruied to turn on the RTC
|
||||
//
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Fixup internal data so that EFI can be call in virtual mode.
|
||||
Call the passed in Child Notify event and convert any pointers in
|
||||
lib to virtual mode.
|
||||
|
||||
@param[in] Event The Event that is being processed
|
||||
@param[in] Context Event Context
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibRtcVirtualNotifyEvent (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
)
|
||||
{
|
||||
//
|
||||
// Only needed if you are going to support the OS calling RTC functions in virtual mode.
|
||||
// You will need to call EfiConvertPointer (). To convert any stored physical addresses
|
||||
// to virtual address. After the OS transistions to calling in virtual mode, all future
|
||||
// runtime calls will be made in virtual mode.
|
||||
//
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
37
ArmRealViewEbPkg/Library/RealTimeClockLib/RealTimeClockLib.inf
Executable file
37
ArmRealViewEbPkg/Library/RealTimeClockLib/RealTimeClockLib.inf
Executable file
@@ -0,0 +1,37 @@
|
||||
#/** @file
|
||||
# Memory Status Code Library for UEFI drivers
|
||||
#
|
||||
# Lib to provide memory journal status code reporting Routines
|
||||
# Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = ArmEbRealTimeClockLib
|
||||
FILE_GUID = 470DFB96-E205-4515-A75E-2E60F853E79D
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = RealTimeClockLib
|
||||
|
||||
|
||||
[Sources.common]
|
||||
RealTimeClockLib.c
|
||||
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
IoLib
|
||||
DebugLib
|
||||
|
88
ArmRealViewEbPkg/Library/ResetSystemLib/ResetSystemLib.c
Executable file
88
ArmRealViewEbPkg/Library/ResetSystemLib/ResetSystemLib.c
Executable file
@@ -0,0 +1,88 @@
|
||||
/** @file
|
||||
Template library implementation to support ResetSystem Runtime call.
|
||||
|
||||
Fill in the templates with what ever makes you system reset.
|
||||
|
||||
|
||||
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||
|
||||
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 <PiDxe.h>
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/EfiResetSystemLib.h>
|
||||
|
||||
#include <ArmEb/ArmEb.h>
|
||||
|
||||
/**
|
||||
Resets the entire platform.
|
||||
|
||||
@param ResetType The type of reset to perform.
|
||||
@param ResetStatus The status code for the reset.
|
||||
@param DataSize The size, in bytes, of WatchdogData.
|
||||
@param ResetData For a ResetType of EfiResetCold, EfiResetWarm, or
|
||||
EfiResetShutdown the data buffer starts with a Null-terminated
|
||||
Unicode string, optionally followed by additional binary data.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibResetSystem (
|
||||
IN EFI_RESET_TYPE ResetType,
|
||||
IN EFI_STATUS ResetStatus,
|
||||
IN UINTN DataSize,
|
||||
IN CHAR16 *ResetData OPTIONAL
|
||||
)
|
||||
{
|
||||
if (ResetData != NULL) {
|
||||
DEBUG ((EFI_D_ERROR, "%s", ResetData));
|
||||
}
|
||||
|
||||
switch (ResetType) {
|
||||
case EfiResetWarm:
|
||||
// Map a warm reset into a cold reset
|
||||
case EfiResetCold:
|
||||
case EfiResetShutdown:
|
||||
default:
|
||||
CpuDeadLoop ();
|
||||
break;
|
||||
}
|
||||
|
||||
// If the reset didn't work, return an error.
|
||||
ASSERT (FALSE);
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Initialize any infrastructure required for LibResetSystem () to function.
|
||||
|
||||
@param ImageHandle The firmware allocated handle for the EFI image.
|
||||
@param SystemTable A pointer to the EFI System Table.
|
||||
|
||||
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibInitializeResetSystem (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
35
ArmRealViewEbPkg/Library/ResetSystemLib/ResetSystemLib.inf
Executable file
35
ArmRealViewEbPkg/Library/ResetSystemLib/ResetSystemLib.inf
Executable file
@@ -0,0 +1,35 @@
|
||||
#/** @file
|
||||
# Reset System lib to make it easy to port new platforms
|
||||
#
|
||||
# Copyright (c) 2008, Apple Inc. All rights reserved.<BR>
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = ArmEbResetSystemLib
|
||||
FILE_GUID = CEFFA65C-B568-453e-9E11-B81AE683D035
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = EfiResetSystemLib
|
||||
|
||||
|
||||
[Sources.common]
|
||||
ResetSystemLib.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
ArmRealViewEbPkg/ArmRealViewEbPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
DebugLib
|
||||
BaseLib
|
137
ArmRealViewEbPkg/Library/SerialPortLib/SerialPortLib.c
Executable file
137
ArmRealViewEbPkg/Library/SerialPortLib/SerialPortLib.c
Executable file
@@ -0,0 +1,137 @@
|
||||
/** @file
|
||||
Serial I/O Port library functions with no library constructor/destructor
|
||||
|
||||
|
||||
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||
|
||||
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 <Base.h>
|
||||
#include <Library/SerialPortLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
|
||||
#include <ArmEb/ArmEb.h>
|
||||
|
||||
/*
|
||||
|
||||
Programmed hardware of Serial port.
|
||||
|
||||
@return Always return EFI_UNSUPPORTED.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
SerialPortInitialize (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UINT32 Base = PcdGet32 (PcdConsoleUartBase);
|
||||
|
||||
// initialize baud rate generator to 115200 based on EB clock REFCLK24MHZ
|
||||
MmioWrite32 (Base + UARTIBRD, UART_115200_IDIV);
|
||||
MmioWrite32 (Base + UARTFBRD, UART_115200_FDIV);
|
||||
|
||||
// no parity, 1 stop, no fifo, 8 data bits
|
||||
MmioWrite32 (Base + UARTLCR_H, 0x60);
|
||||
|
||||
// clear any pending errors
|
||||
MmioWrite32 (Base + UARTECR, 0);
|
||||
|
||||
// enable tx, rx, and uart overall
|
||||
MmioWrite32 (Base + UARTCR, 0x301);
|
||||
|
||||
return RETURN_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Write data to serial device.
|
||||
|
||||
@param Buffer Point of data buffer which need to be writed.
|
||||
@param NumberOfBytes Number of output bytes which are cached in Buffer.
|
||||
|
||||
@retval 0 Write data failed.
|
||||
@retval !0 Actual number of bytes writed to serial device.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
SerialPortWrite (
|
||||
IN UINT8 *Buffer,
|
||||
IN UINTN NumberOfBytes
|
||||
)
|
||||
{
|
||||
UINT32 FR = PcdGet32 (PcdConsoleUartBase) + UARTFR;
|
||||
UINT32 DR = PcdGet32 (PcdConsoleUartBase) + UARTDR;
|
||||
UINTN Count;
|
||||
|
||||
for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) {
|
||||
while ((MmioRead32 (FR) & UART_TX_EMPTY_FLAG_MASK) == 0);
|
||||
MmioWrite8 (DR, *Buffer);
|
||||
}
|
||||
|
||||
return NumberOfBytes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Read data from serial device and save the datas in buffer.
|
||||
|
||||
@param Buffer Point of data buffer which need to be writed.
|
||||
@param NumberOfBytes Number of output bytes which are cached in Buffer.
|
||||
|
||||
@retval 0 Read data failed.
|
||||
@retval !0 Aactual number of bytes read from serial device.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
SerialPortRead (
|
||||
OUT UINT8 *Buffer,
|
||||
IN UINTN NumberOfBytes
|
||||
)
|
||||
{
|
||||
UINT32 FR = PcdGet32 (PcdConsoleUartBase) + UARTFR;
|
||||
UINT32 DR = PcdGet32 (PcdConsoleUartBase) + UARTDR;
|
||||
UINTN Count;
|
||||
|
||||
for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) {
|
||||
while ((MmioRead32 (FR) & UART_RX_EMPTY_FLAG_MASK) != 0);
|
||||
*Buffer = MmioRead8 (DR);
|
||||
}
|
||||
|
||||
return NumberOfBytes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Check to see if any data is avaiable to be read from the debug device.
|
||||
|
||||
@retval EFI_SUCCESS At least one byte of data is avaiable to be read
|
||||
@retval EFI_NOT_READY No data is avaiable to be read
|
||||
@retval EFI_DEVICE_ERROR The serial device is not functioning properly
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
SerialPortPoll (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UINT32 FR = PcdGet32 (PcdConsoleUartBase) + UARTFR;
|
||||
|
||||
if ((MmioRead32 (FR) & UART_RX_EMPTY_FLAG_MASK) == 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
41
ArmRealViewEbPkg/Library/SerialPortLib/SerialPortLib.inf
Executable file
41
ArmRealViewEbPkg/Library/SerialPortLib/SerialPortLib.inf
Executable file
@@ -0,0 +1,41 @@
|
||||
#/** @file
|
||||
# EDK Serial port lib
|
||||
#
|
||||
# Copyright (c) 2009, Apple Inc. All rights reserved.<BR>
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = ArmEbSerialPortLib
|
||||
FILE_GUID = C653196A-3BE1-4ec7-850B-DB7E0A16150F
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = SerialPortLib
|
||||
|
||||
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
#
|
||||
|
||||
[Sources.common]
|
||||
SerialPortLib.c
|
||||
|
||||
[LibraryClasses]
|
||||
IoLib
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
ArmRealViewEbPkg/ArmRealViewEbPkg.dec
|
||||
|
||||
[FixedPcd]
|
||||
gArmRealViewEbPkgTokenSpaceGuid.PcdConsoleUartBase
|
||||
|
177
ArmRealViewEbPkg/Library/TimerLib/TimerLib.c
Executable file
177
ArmRealViewEbPkg/Library/TimerLib/TimerLib.c
Executable file
@@ -0,0 +1,177 @@
|
||||
/** @file
|
||||
TimerLib for ARM EB. Hardcoded to 100ns period
|
||||
|
||||
This library assume the following initialization, usually done in SEC.
|
||||
|
||||
// configure SP810 to use 1MHz clock and disable
|
||||
MmioAndThenOr32 (EB_SP810_CTRL_BASE + SP810_SYS_CTRL_REG, ~SP810_SYS_CTRL_TIMER2_EN, SP810_SYS_CTRL_TIMER2_TIMCLK);
|
||||
// Enable
|
||||
MmioOr32 (EB_SP810_CTRL_BASE + SP810_SYS_CTRL_REG, SP810_SYS_CTRL_TIMER2_EN);
|
||||
|
||||
// configure timer 2 for one shot operation, 32 bits, no prescaler, and interrupt disabled
|
||||
MmioOr32 (EB_SP804_TIMER2_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_ONESHOT | SP804_TIMER_CTRL_32BIT | SP804_PRESCALE_DIV_1);
|
||||
|
||||
// preload the timer count register
|
||||
MmioWrite32 (EB_SP804_TIMER2_BASE + SP804_TIMER_LOAD_REG, 1);
|
||||
|
||||
// enable the timer
|
||||
MmioOr32 (EB_SP804_TIMER2_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_ENABLE);
|
||||
|
||||
|
||||
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||
|
||||
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 <Base.h>
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/TimerLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
|
||||
#include <ArmEb/ArmEb.h>
|
||||
|
||||
|
||||
/**
|
||||
Stalls the CPU for at least the given number of microseconds.
|
||||
|
||||
Stalls the CPU for the number of microseconds specified by MicroSeconds.
|
||||
|
||||
@param MicroSeconds The minimum number of microseconds to delay.
|
||||
|
||||
@return The value of MicroSeconds inputted.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
MicroSecondDelay (
|
||||
IN UINTN MicroSeconds
|
||||
)
|
||||
{
|
||||
UINT64 NanoSeconds;
|
||||
|
||||
NanoSeconds = MultU64x32 (MicroSeconds, 1000);
|
||||
|
||||
while (NanoSeconds > (UINTN)-1) {
|
||||
NanoSecondDelay((UINTN)-1);
|
||||
NanoSeconds -= (UINTN)-1;
|
||||
}
|
||||
|
||||
NanoSecondDelay (NanoSeconds);
|
||||
|
||||
return MicroSeconds;
|
||||
}
|
||||
|
||||
/**
|
||||
Stalls the CPU for at least the given number of nanoseconds.
|
||||
|
||||
Stalls the CPU for the number of nanoseconds specified by NanoSeconds.
|
||||
|
||||
@param NanoSeconds The minimum number of nanoseconds to delay.
|
||||
|
||||
@return The value of NanoSeconds inputted.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
NanoSecondDelay (
|
||||
IN UINTN NanoSeconds
|
||||
)
|
||||
{
|
||||
UINT32 TickNumber;
|
||||
|
||||
if (NanoSeconds == 0) {
|
||||
return NanoSeconds;
|
||||
}
|
||||
|
||||
// Round up to 100ns Tick Number
|
||||
TickNumber = (UINT32)NanoSeconds / 100;
|
||||
TickNumber += ((UINT32)NanoSeconds % 100) == 0 ? 0 : 1;
|
||||
|
||||
// load the timer count register
|
||||
MmioWrite32 (EB_SP804_TIMER2_BASE + SP804_TIMER_LOAD_REG, TickNumber);
|
||||
|
||||
while (MmioRead32 (EB_SP804_TIMER2_BASE + SP804_TIMER_CURRENT_REG) > 0) {
|
||||
;
|
||||
}
|
||||
|
||||
return NanoSeconds;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves the current value of a 64-bit free running performance counter.
|
||||
|
||||
The counter can either count up by 1 or count down by 1. If the physical
|
||||
performance counter counts by a larger increment, then the counter values
|
||||
must be translated. The properties of the counter can be retrieved from
|
||||
GetPerformanceCounterProperties().
|
||||
|
||||
@return The current value of the free running performance counter.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
GetPerformanceCounter (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
// Free running 64-bit/32-bit counter is needed here.
|
||||
// Don't think we need this to boot, just to do performance profile
|
||||
ASSERT (FALSE);
|
||||
return (UINT64)0ULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Retrieves the 64-bit frequency in Hz and the range of performance counter
|
||||
values.
|
||||
|
||||
If StartValue is not NULL, then the value that the performance counter starts
|
||||
with immediately after is it rolls over is returned in StartValue. If
|
||||
EndValue is not NULL, then the value that the performance counter end with
|
||||
immediately before it rolls over is returned in EndValue. The 64-bit
|
||||
frequency of the performance counter in Hz is always returned. If StartValue
|
||||
is less than EndValue, then the performance counter counts up. If StartValue
|
||||
is greater than EndValue, then the performance counter counts down. For
|
||||
example, a 64-bit free running counter that counts up would have a StartValue
|
||||
of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24-bit free running counter
|
||||
that counts down would have a StartValue of 0xFFFFFF and an EndValue of 0.
|
||||
|
||||
@param StartValue The value the performance counter starts with when it
|
||||
rolls over.
|
||||
@param EndValue The value that the performance counter ends with before
|
||||
it rolls over.
|
||||
|
||||
@return The frequency in Hz.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
GetPerformanceCounterProperties (
|
||||
OUT UINT64 *StartValue, OPTIONAL
|
||||
OUT UINT64 *EndValue OPTIONAL
|
||||
)
|
||||
{
|
||||
if (StartValue != NULL) {
|
||||
// Timer starts with the reload value
|
||||
*StartValue = (UINT64)0ULL;
|
||||
}
|
||||
|
||||
if (EndValue != NULL) {
|
||||
// Timer counts up to 0xFFFFFFFF
|
||||
*EndValue = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
return 100;
|
||||
}
|
||||
|
||||
|
44
ArmRealViewEbPkg/Library/TimerLib/TimerLib.inf
Executable file
44
ArmRealViewEbPkg/Library/TimerLib/TimerLib.inf
Executable file
@@ -0,0 +1,44 @@
|
||||
#/** @file
|
||||
# Timer library implementation
|
||||
#
|
||||
# A non-functional instance of the Timer Library that can be used as a template
|
||||
# for the implementation of a functional timer library instance. This library instance can
|
||||
# also be used to test build DXE, Runtime, DXE SAL, and DXE SMM modules that require timer
|
||||
# services as well as EBC modules that require timer services
|
||||
# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = ArmEbTimerLib
|
||||
FILE_GUID = B2333114-328B-47cc-8E5E-F64E22E4B417
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = TimerLib
|
||||
|
||||
[Sources.common]
|
||||
TimerLib.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
ArmRealViewEbPkg/ArmRealViewEbPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
DebugLib
|
||||
IoLib
|
||||
BaseLib
|
||||
|
||||
[Pcd]
|
||||
gEmbeddedTokenSpaceGuid.PcdEmbeddedPerformanceCounterFrequencyInHz
|
||||
gEmbeddedTokenSpaceGuid.PcdEmbeddedPerformanceCounterPeriodInNanoseconds
|
||||
|
Reference in New Issue
Block a user