Home | History | Annotate | Download | only in ArmVirtPkg
      1 #
      2 #  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
      3 #  Copyright (c) 2014, Linaro Limited. All rights reserved.
      4 #  Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
      5 #
      6 #  This program and the accompanying materials
      7 #  are licensed and made available under the terms and conditions of the BSD License
      8 #  which accompanies this distribution.  The full text of the license may be found at
      9 #  http://opensource.org/licenses/bsd-license.php
     10 #
     11 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 #
     14 #
     15 
     16 ################################################################################
     17 #
     18 # Defines Section - statements that will be processed to create a Makefile.
     19 #
     20 ################################################################################
     21 [Defines]
     22   PLATFORM_NAME                  = ArmVirtXen
     23   PLATFORM_GUID                  = d1c43be3-3373-4a06-86fb-d1cb3083a207
     24   PLATFORM_VERSION               = 0.1
     25   DSC_SPECIFICATION              = 0x00010005
     26   OUTPUT_DIRECTORY               = Build/ArmVirtXen-$(ARCH)
     27   SUPPORTED_ARCHITECTURES        = AARCH64|ARM
     28   BUILD_TARGETS                  = DEBUG|RELEASE
     29   SKUID_IDENTIFIER               = DEFAULT
     30   FLASH_DEFINITION               = ArmVirtPkg/ArmVirtXen.fdf
     31 
     32 !include ArmVirtPkg/ArmVirt.dsc.inc
     33 
     34 [LibraryClasses]
     35   SerialPortLib|OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf
     36   RealTimeClockLib|ArmVirtPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf
     37   XenHypercallLib|OvmfPkg/Library/XenHypercallLib/XenHypercallLib.inf
     38 
     39 [LibraryClasses.AARCH64]
     40   ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf
     41 
     42 [LibraryClasses.ARM]
     43   ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf
     44 
     45 [LibraryClasses.common]
     46   ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
     47   ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
     48 
     49   # Virtio Support
     50   VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
     51   VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
     52 
     53   ArmPlatformLib|ArmVirtPkg/Library/ArmXenRelocatablePlatformLib/ArmXenRelocatablePlatformLib.inf
     54   ArmPlatformSysConfigLib|ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.inf
     55 
     56   TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
     57 
     58   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
     59   GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
     60   PlatformBdsLib|ArmPlatformPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
     61   CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
     62 
     63   BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf
     64 
     65 [LibraryClasses.common.UEFI_DRIVER]
     66   UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
     67 
     68 [BuildOptions]
     69   RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmVirtPkg/Include
     70   GCC:*_*_ARM_PLATFORM_FLAGS == -mcpu=cortex-a15 -I$(WORKSPACE)/ArmVirtPkg/Include
     71   GCC:*_*_AARCH64_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmVirtPkg/Include
     72 
     73 [BuildOptions.ARM.EDKII.SEC, BuildOptions.ARM.EDKII.BASE]
     74   # Avoid MOVT/MOVW instruction pairs in code that may end up in the PIE
     75   # executable we build for the relocatable PrePi. They are not runtime
     76   # relocatable in ELF.
     77   *_CLANG35_*_CC_FLAGS = -mno-movt
     78 
     79 ################################################################################
     80 #
     81 # Pcd Section - list of all EDK II PCD Entries defined by this Platform
     82 #
     83 ################################################################################
     84 
     85 [PcdsFixedAtBuild.common]
     86   gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"$(FIRMWARE_VER)"
     87 
     88   gArmPlatformTokenSpaceGuid.PcdCoreCount|1
     89 !if $(ARCH) == AARCH64
     90   gArmTokenSpaceGuid.PcdVFPEnabled|1
     91 !endif
     92 
     93   gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
     94 
     95   # Size of the region used by UEFI in permanent memory (Reserved 64MB)
     96   gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
     97 
     98   #
     99   # ARM Virtual Architectural Timer
    100   #
    101   gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|0
    102 
    103   gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
    104   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 }
    105 
    106 [PcdsPatchableInModule.common]
    107   #
    108   # This will be overridden in the code
    109   #
    110   gArmTokenSpaceGuid.PcdSystemMemoryBase|0x0
    111   gArmTokenSpaceGuid.PcdSystemMemorySize|0x0
    112   gArmVirtTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress|0x0
    113 
    114   gArmTokenSpaceGuid.PcdFdBaseAddress|0x0
    115   gArmTokenSpaceGuid.PcdFvBaseAddress|0x0
    116 
    117 [PcdsDynamicDefault.common]
    118 
    119   gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum|0x0
    120   gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x0
    121   gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x0
    122   gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum|0x0
    123 
    124   #
    125   # ARM General Interrupt Controller
    126   #
    127   gArmTokenSpaceGuid.PcdGicDistributorBase|0x0
    128   gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x0
    129   gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x0
    130 
    131   ## PL031 RealTimeClock
    132   gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x0
    133 
    134   gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|3
    135 
    136 ################################################################################
    137 #
    138 # Components Section - list of all EDK II Modules needed by this Platform
    139 #
    140 ################################################################################
    141 [Components.common]
    142   #
    143   # PEI Phase modules
    144   #
    145   ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf {
    146     <LibraryClasses>
    147       ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf
    148       LzmaDecompressLib|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
    149       PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
    150       HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf
    151       PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
    152       MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf
    153       SerialPortLib|OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf
    154   }
    155 
    156   #
    157   # DXE
    158   #
    159   MdeModulePkg/Core/Dxe/DxeMain.inf {
    160     <LibraryClasses>
    161       NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
    162   }
    163   MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
    164     <LibraryClasses>
    165       PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    166   }
    167 
    168   #
    169   # Architectural Protocols
    170   #
    171   ArmPkg/Drivers/CpuDxe/CpuDxe.inf
    172   MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
    173   MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
    174   MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
    175 
    176   MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf
    177 
    178   MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
    179   EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
    180   EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
    181   EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
    182 
    183   MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
    184   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
    185   MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
    186 
    187   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
    188 
    189   ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
    190   ArmPkg/Drivers/TimerDxe/TimerDxe.inf {
    191     <LibraryClasses>
    192       NULL|ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf
    193   }
    194   MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
    195 
    196   #
    197   # Platform Driver
    198   #
    199   ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.inf
    200   ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf
    201 
    202   #
    203   # FAT filesystem + GPT/MBR partitioning
    204   #
    205   MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
    206   MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
    207   MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
    208   FatPkg/EnhancedFatDxe/Fat.inf
    209 
    210   #
    211   # Bds
    212   #
    213   MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
    214   MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
    215   MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
    216   IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
    217 
    218   OvmfPkg/XenBusDxe/XenBusDxe.inf
    219   OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf
    220 
    221   #
    222   # ACPI support
    223   #
    224 !if $(ARCH) == AARCH64
    225   ArmVirtPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.inf
    226 !endif
    227