audk/ArmPlatformPkg
Mark Rutland d855b261d1 ArmPkg/ArmPlatformPkg: position vectors relative to base
We currently rely on .align directives to ensure that each exception
vector entry is the appropriate offset from the vector base address.

This is slightly fragile, as were an entry to become too large (greater
than 32 A64 instructions), all following entries would be silently
shifted until they meet the next alignment boundary. Thus we might
execute the wrong code in response to an exception.

To prevent this, introduce a new macro, VECTOR_ENTRY, that uses .org
directives to position each entry at the precise required offset from
the base of a vector. A vector entry which is too large will trigger a
build failure rather than a runtime failure which is difficult to debug.

For consistency, the base and end of each vector is similarly annotated,
with VECTOR_BASE and VECTOR_END, which provide the necessary alignment
and symbol exports. The now redundant directives and labels are removed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18904 6f19259b-4bc3-4df7-8a09-765794883524
2015-11-19 14:39:48 +00:00
..
ArmJunoPkg ArmPlatformPkg: Juno - add correct SPI interrupt numbers for MSI 2015-11-03 11:11:22 +00:00
ArmVExpressPkg ArmVExpressPkg/ArmVExpressLibRTSM: map NOR flash as normal memory 2015-11-18 11:50:50 +00:00
Bds ArmPlatformPkg/Bds: Use HandleProtocol to get SNP instance 2015-07-16 11:27:05 +00:00
Documentation ArmPlatformPkg: remove mention of ARMGCC and ARMLINUXGCC 2015-08-12 05:25:26 +00:00
Drivers ArmPlatformPkg: NorFlashDxe: mellow DEBUG messages about flash reinit 2015-10-16 15:46:28 +00:00
FileSystem/BootMonFs ArmPlatformPkg: Fixed builds after some ShellPkg libraries have moved 2015-01-13 18:58:00 +00:00
Include ArmPlatformPkg/LcdGraphicsOutputDxe: check PrimeCell ID before initializing 2015-08-25 13:11:11 +00:00
Library ArmPlatformPkg: signal EndOfDxe event in PlatformBsdInit 2015-09-04 06:11:42 +00:00
MemoryInitPei ArmPlatformPkg: ASSERT that PcdSystemMemoryBase does not exceed MAX_ADDRESS 2015-09-09 15:30:37 +00:00
PlatformPei ArmPlatformPkg/PlatformPeim: constify EFI_PEI_PPI_DESCRIPTOR globals 2015-08-07 17:27:33 +00:00
PrePeiCore ArmPkg/ArmPlatformPkg: position vectors relative to base 2015-11-19 14:39:48 +00:00
PrePi ArmPlatformPkg: use correct ASM decoration for non-function global symbols 2015-07-07 14:34:39 +00:00
Scripts ArmPlatformPkg: bring DS-5 scripts in line with linker script changes 2015-11-12 07:29:21 +00:00
Sec ArmPlatformPkg: Allow PcdFirmwareVersionString to be a dynamic PCD 2015-07-06 16:54:26 +00:00
ArmPlatformPkg-2ndstage.dsc ArmPkg: copy ArmGicArchLib to ArmGicArchSecLib 2015-07-28 20:44:58 +00:00
ArmPlatformPkg-2ndstage.fdf ArmPlatformPkg: Add the LinuxLoader.efi EFI application 2015-07-14 14:32:24 +00:00
ArmPlatformPkg.dec ArmPlatformPkg/Bds: Added support for booting legacy kernel from BDS 2015-07-14 14:41:46 +00:00
ArmPlatformPkg.dsc ArmPkg: copy ArmGicArchLib to ArmGicArchSecLib 2015-07-28 20:44:58 +00:00
ArmPlatformPkg.fdf ArmPlatformPkg: Add the LinuxLoader.efi EFI application 2015-07-14 14:32:24 +00:00
Contributions.txt */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
License.txt EDK II Packages: Added License.txt files 2012-04-12 16:40:32 +00:00