diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc index a4ae25d982..10037c938e 100644 --- a/ArmVirtPkg/ArmVirt.dsc.inc +++ b/ArmVirtPkg/ArmVirt.dsc.inc @@ -10,6 +10,21 @@ [Defines] DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F +!if $(TARGET) != NOOPT + DEFINE FD_SIZE_IN_MB = 2 +!else + DEFINE FD_SIZE_IN_MB = 3 +!endif + +!if $(FD_SIZE_IN_MB) == 2 + DEFINE FD_SIZE = 0x200000 + DEFINE FD_NUM_BLOCKS = 0x200 +!endif +!if $(FD_SIZE_IN_MB) == 3 + DEFINE FD_SIZE = 0x300000 + DEFINE FD_NUM_BLOCKS = 0x300 +!endif + [BuildOptions.common.EDKII.DXE_CORE,BuildOptions.common.EDKII.DXE_DRIVER,BuildOptions.common.EDKII.UEFI_DRIVER,BuildOptions.common.EDKII.UEFI_APPLICATION] GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 diff --git a/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf index c2169cb796..2c8936a1ae 100644 --- a/ArmVirtPkg/ArmVirtQemu.fdf +++ b/ArmVirtPkg/ArmVirtQemu.fdf @@ -20,14 +20,22 @@ # ################################################################################ +[Defines] +!if $(FD_SIZE_IN_MB) == 2 + DEFINE FVMAIN_COMPACT_SIZE = 0x1ff000 +!endif +!if $(FD_SIZE_IN_MB) == 3 + DEFINE FVMAIN_COMPACT_SIZE = 0x2ff000 +!endif + [FD.QEMU_EFI] BaseAddress = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress # QEMU assigns 0 - 0x8000000 for a BootROM -Size = 0x00200000|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the FLASH Device +Size = $(FD_SIZE)|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the FLASH Device ErasePolarity = 1 # This one is tricky, it must be: BlockSize * NumBlocks = Size BlockSize = 0x00001000 -NumBlocks = 0x200 +NumBlocks = $(FD_NUM_BLOCKS) ################################################################################ # @@ -59,7 +67,7 @@ DATA = { !endif } -0x00001000|0x001ff000 +0x00001000|$(FVMAIN_COMPACT_SIZE) gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize FV = FVMAIN_COMPACT diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf b/ArmVirtPkg/ArmVirtQemuKernel.fdf index f675b6d65e..72fc8dd698 100644 --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf @@ -20,14 +20,22 @@ # ################################################################################ +[Defines] +!if $(FD_SIZE_IN_MB) == 2 + DEFINE FVMAIN_COMPACT_SIZE = 0x1f8000 +!endif +!if $(FD_SIZE_IN_MB) == 3 + DEFINE FVMAIN_COMPACT_SIZE = 0x2f8000 +!endif + [FD.QEMU_EFI] BaseAddress = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress # QEMU assigns 0 - 0x8000000 for a BootROM -Size = 0x00200000|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the FLASH Device +Size = $(FD_SIZE)|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the FLASH Device ErasePolarity = 1 # This one is tricky, it must be: BlockSize * NumBlocks = Size BlockSize = 0x00001000 -NumBlocks = 0x200 +NumBlocks = $(FD_NUM_BLOCKS) ################################################################################ # @@ -56,7 +64,12 @@ DATA = { 0x01, 0x00, 0x00, 0x10, # code0: adr x1, . 0xff, 0x1f, 0x00, 0x14, # code1: b 0x8000 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB +!if $(FD_SIZE_IN_MB) == 2 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB +!endif +!if $(FD_SIZE_IN_MB) == 3 + 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 3 MB +!endif 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res2 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res3 @@ -76,12 +89,17 @@ DATA = { 0xf6, 0x1f, 0x00, 0xea, # b 0x8000 0x18, 0x28, 0x6f, 0x01, # magic 0x00, 0x00, 0x00, 0x00, # start +!if $(FD_SIZE_IN_MB) == 2 0x00, 0x00, 0x20, 0x00, # image size: 2 MB +!endif +!if $(FD_SIZE_IN_MB) == 3 + 0x00, 0x00, 0x30, 0x00, # image size: 3 MB +!endif 0x01, 0x02, 0x03, 0x04 # endiannness flag !endif } -0x00008000|0x001f8000 +0x00008000|$(FVMAIN_COMPACT_SIZE) gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize FV = FVMAIN_COMPACT diff --git a/ArmVirtPkg/ArmVirtXen.fdf b/ArmVirtPkg/ArmVirtXen.fdf index 79f681cde0..38d4cc1635 100644 --- a/ArmVirtPkg/ArmVirtXen.fdf +++ b/ArmVirtPkg/ArmVirtXen.fdf @@ -20,14 +20,22 @@ # ################################################################################ +[Defines] +!if $(FD_SIZE_IN_MB) == 2 + DEFINE FVMAIN_COMPACT_SIZE = 0x1fe000 +!endif +!if $(FD_SIZE_IN_MB) == 3 + DEFINE FVMAIN_COMPACT_SIZE = 0x2fe000 +!endif + [FD.XEN_EFI] BaseAddress = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress -Size = 0x00200000|gArmTokenSpaceGuid.PcdFdSize +Size = $(FD_SIZE)|gArmTokenSpaceGuid.PcdFdSize ErasePolarity = 1 # This one is tricky, it must be: BlockSize * NumBlocks = Size BlockSize = 0x00001000 -NumBlocks = 0x200 +NumBlocks = $(FD_NUM_BLOCKS) ################################################################################ # @@ -56,7 +64,12 @@ DATA = { 0x01, 0x00, 0x00, 0x10, # code0: adr x1, . 0xff, 0x07, 0x00, 0x14, # code1: b 0x2000 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB +!if $(FD_SIZE_IN_MB) == 2 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB +!endif +!if $(FD_SIZE_IN_MB) == 3 + 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 3 MB +!endif 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res2 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res3 @@ -76,12 +89,17 @@ DATA = { 0xf6, 0x07, 0x00, 0xea, # b 0x2000 0x18, 0x28, 0x6f, 0x01, # magic 0x00, 0x00, 0x00, 0x00, # start +!if $(FD_SIZE_IN_MB) == 2 0x00, 0x00, 0x20, 0x00, # image size: 2 MB +!endif +!if $(FD_SIZE_IN_MB) == 3 + 0x00, 0x00, 0x30, 0x00, # image size: 3 MB +!endif 0x01, 0x02, 0x03, 0x04 # endiannness flag !endif } -0x00002000|0x001fe000 +0x00002000|$(FVMAIN_COMPACT_SIZE) gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize FV = FVMAIN_COMPACT