audk/ArmPkg
Heyi Guo 36c64c664b ArmPkg/CpuDxe: Disable interrupt before restoring context
Interrupt must be disabled before we storing ELR and other system
registers, or else ELR will be overridden by interrupt reentrance.

This bug is critical as we may get occasional exception or dead loop
when interrupt reentrance occurs:

  After increasing SP ... Before popping out registers
Or
  After restoring ELR

The 1st circumstance could also be resolved by optimizing SP operation
(Pop out registers before adding SP back), but the 2nd could not be
resolved by disabling interrupt.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18538 6f19259b-4bc3-4df7-8a09-765794883524
2015-09-24 17:05:39 +00:00
..
Application/LinuxLoader ArmPkg/Application: Add new EFI application to boot Linux 2015-07-06 16:49:40 +00:00
Drivers ArmPkg/CpuDxe: Disable interrupt before restoring context 2015-09-24 17:05:39 +00:00
Filesystem/SemihostFs ArmPkg/SemihostFs: Implement SetInfo() and handle seeking past the end of a file 2014-10-27 10:42:51 +00:00
Include ArmPkg: remove ARMv6 support code 2015-08-19 10:51:59 +00:00
Library ArmPkg/Mmu: Fix potential page table memory leak 2015-09-09 13:37:50 +00:00
ArmPkg.dec ArmPkg: split off ArmGicArchLib from ArmGicLib 2015-07-28 20:44:44 +00:00
ArmPkg.dsc ArmPkg: remove ARMv6 support code 2015-08-19 10:51:59 +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