
#/** @file
#  SEC - Reset vector code that jumps to C and loads DXE core
#
#  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                      = BeagleBoardSec
  FILE_GUID                      = d959e387-7b91-452c-90e0-a1dbac90ddb8
  MODULE_TYPE                    = SEC
  VERSION_STRING                 = 1.0


[Sources.ARM]
  Arm/ModuleEntryPoint.S   | GCC
  Arm/ModuleEntryPoint.asm | RVCT

[Sources.ARM]
  Sec.c
  Cache.c
  PadConfiguration.c
  Clock.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  EmbeddedPkg/EmbeddedPkg.dec
  ArmPkg/ArmPkg.dec
  Omap35xxPkg/Omap35xxPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec

[LibraryClasses]
  BaseLib
  DebugLib
  ArmLib
  IoLib
  ExtractGuidedSectionLib
  LzmaDecompressLib
  OmapLib
  PeCoffGetEntryPointLib
  DebugAgentLib
  MemoryAllocationLib
  PrePiHobListPointerLib

[FeaturePcd]
  gEmbeddedTokenSpaceGuid.PcdCacheEnable

[FixedPcd]
  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
  gEmbeddedTokenSpaceGuid.PcdEmbeddedFdBaseAddress
  gEmbeddedTokenSpaceGuid.PcdEmbeddedFdSize
  gEmbeddedTokenSpaceGuid.PcdFlashFvMainBase
  gEmbeddedTokenSpaceGuid.PcdFlashFvMainSize
  gEmbeddedTokenSpaceGuid.PcdPrePiStackSize
  gEmbeddedTokenSpaceGuid.PcdPrePiStackBase
  gEmbeddedTokenSpaceGuid.PcdMemoryBase
  gEmbeddedTokenSpaceGuid.PcdMemorySize

  gOmap35xxTokenSpaceGuid.PcdOmap35xxConsoleUart
  gOmap35xxTokenSpaceGuid.PcdOmap35xxFreeTimer

  gArmTokenSpaceGuid.PcdCpuVectorBaseAddress

