Go to file
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
AppPkg AppPkg/Applications/Python/Python-2.7.10: Initial Checkin part 5/5. 2015-11-07 19:43:57 +00:00
ArmPkg ArmPkg/ArmPlatformPkg: position vectors relative to base 2015-11-19 14:39:48 +00:00
ArmPlatformPkg ArmPkg/ArmPlatformPkg: position vectors relative to base 2015-11-19 14:39:48 +00:00
ArmVirtPkg ArmVirtPkg/ArmVirtPlatformLib: map executable NOR region as normal memory 2015-11-18 11:50:33 +00:00
BaseTools BaseTool/UPT: Add supporting of decimal numbers for INF_VERSION and DEC_SPECIFICATION 2015-11-18 05:38:35 +00:00
BeagleBoardPkg ArmPkg BeagleBoardPkg Omap35xxPkg: fix typo 'ArmDataSyncronizationBarrier' 2015-11-09 13:25:50 +00:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootModulePkg:Removing EFI_RESOURCE_ATTRIBUTE_TESTED 2015-08-18 16:08:22 +00:00
CorebootPayloadPkg CorebootPayloadPkgIa32: Don't specify X64 architecture 2015-07-27 06:43:29 +00:00
CryptoPkg CryptoPkg: fix AARCH64 build under CLANG35 2015-11-05 14:41:43 +00:00
DuetPkg DuetPkg: exit pci function loops early if device is not multi-function 2015-10-06 20:55:36 +00:00
EdkCompatibilityPkg EdkCompatibilityPkg: Remove gZeroGuid def in FrameworkHiiOnUefiHiiThunk 2015-07-07 03:05:18 +00:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg EmbeddedPkg: Add EFIAPI to several Ebl functions 2015-10-29 12:59:06 +00:00
EmulatorPkg EmulatorPkg/build.sh: Use GCC49 toolchain with GCC 5.* 2015-10-08 05:51:57 +00:00
FatBinPkg FatBinPkg: Update EBC/IA32/X64/IPF binaries 2015-08-28 03:14:25 +00:00
IntelFrameworkModulePkg IntelFrameworkModulePkg BdsDxe: Use PcdSet##S to replace PcdSet## 2015-10-15 00:57:45 +00:00
IntelFrameworkPkg IntelFrameworkPkg: Update DEC and DSC version from 0.94 to 0.96 2015-08-20 08:45:45 +00:00
IntelFspPkg Handle extra module patchable PCD variable in Linux map. 2015-09-06 22:36:43 +00:00
IntelFspWrapperPkg Publish FspHob to PEI Hob by default. 2015-10-27 23:10:49 +00:00
MdeModulePkg MdeModulePkg PeiCore: PeiInstallPeiMemory improper ASSERT test on second call 2015-11-18 10:13:31 +00:00
MdePkg MdePkg: Add Platform Recovery definitions. 2015-11-17 10:06:44 +00:00
NetworkPkg NetworkPkg: Httpboot will fail the 2nd time result by wrong TCP state. 2015-11-13 09:35:54 +00:00
Nt32Pkg Nt32Pkg: Use BootLogoLib for logo and progress bar drawing. 2015-11-12 05:39:39 +00:00
Omap35xxPkg ArmPkg BeagleBoardPkg Omap35xxPkg: fix typo 'ArmDataSyncronizationBarrier' 2015-11-09 13:25:50 +00:00
OptionRomPkg OptionRomPkg: Remove redundant included header file defintion in Ax88772.h and Ax88772b.h files 2015-07-08 02:56:54 +00:00
OvmfPkg OvmfPkg: QemuFlashFvbServicesRuntimeDxe: clean up includes and libraries 2015-10-26 14:58:46 +00:00
PcAtChipsetPkg PcAtChipsetPkg: IdeControllerDxe: fix protocol usage hints in the INF file 2015-09-22 11:18:36 +00:00
PerformancePkg PerformancePkg/Dp_App: Support dumping cumulative data 2015-11-10 04:57:14 +00:00
SecurityPkg Add error handling for TPM in S3 resume failure. 2015-11-10 02:03:40 +00:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2015-09-18 05:51:14 +00:00
ShellPkg ShellPkg: Corrected CatSPrint usage to prevent memory leaks. 2015-11-19 08:37:03 +00:00
SourceLevelDebugPkg SourceLevelDebugPkg: DebugAgent: Set Local APIC SoftwareEnable 2015-10-30 17:53:53 +00:00
StdLib StdLib: remove mention of ARMGCC 2015-08-12 05:25:12 +00:00
StdLibPrivateInternalFiles */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
UefiCpuPkg UefiCpuPkg: PiSmmCpuDxeSmm: Remove Framework compatibility 2015-11-05 00:01:45 +00:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg Vlv2TbltDevicePkg/Vlv2DeviceRefCodePkg: 2015-11-10 07:47:29 +00:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Sync the branch changes to Trunk, 2015-11-13 02:38:08 +00:00
.gitignore EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
BuildNotes2.txt Update to new SVN URL in readme.txt 2013-06-08 05:26:39 +00:00
Edk2Setup.bat BaseTools: Update Edk2Setup.bat to support multiple workspaces 2015-10-08 09:29:36 +00:00
edksetup.bat BaseTools: Update edksetup.bat to support multiple workspaces 2015-10-08 09:29:09 +00:00
edksetup.sh BaseTools: Update edksetup.sh to support multiple workspaces 2015-10-08 09:29:56 +00:00
Maintainers.txt edk2: Change BaseTools owner in Maintainers.txt 2015-09-14 05:52:36 +00:00