audk/ArmVirtPkg
Ard Biesheuvel 81c6f1dfba ArmVirtPkg/PrePi: clear frame pointer in startup code
When setting up the stack in the startup code and jumping into C code
for the first time, ensure that the frame pointer register is cleared
so that backtraces terminate correctly. Otherwise, output like the
below is shown when encountering an exception on a DEBUG build:

  Synchronous Exception at 0x0000000078A14780
  PC 0x000078A14780 (0x000078A00000+0x00014780) [ 0] ArmVeNorFlashDxe.dll
  PC 0x000078A10634 (0x000078A00000+0x00010634) [ 0] ArmVeNorFlashDxe.dll
  PC 0x000078A11CF0 (0x000078A00000+0x00011CF0) [ 0] ArmVeNorFlashDxe.dll
  PC 0x000078A11DD0 (0x000078A00000+0x00011DD0) [ 0] ArmVeNorFlashDxe.dll
  PC 0x00007BC9D87C (0x00007BC98000+0x0000587C) [ 1] PartitionDxe.dll
  PC 0x00007BC99B3C (0x00007BC98000+0x00001B3C) [ 1] PartitionDxe.dll
  PC 0x00007F362F50 (0x00007F359000+0x00009F50) [ 2] DxeCore.dll
  PC 0x00007BD63BB0 (0x00007BD5B000+0x00008BB0) [ 3] BdsDxe.dll
  PC 0x00007BD6EE00 (0x00007BD5B000+0x00013E00) [ 3] BdsDxe.dll
  PC 0x00007BD67C70 (0x00007BD5B000+0x0000CC70) [ 3] BdsDxe.dll
  PC 0x00007F3724F0 (0x00007F359000+0x000194F0) [ 4] DxeCore.dll
  PC 0x00004008FC30
  PC 0x000040090130
  PC 0x5800F6025800F5E1

  Recursive exception occurred while dumping the CPU state

which is rather unhelpful, given that this prevent the remaining debug
output from being printed (register dump, stack dump, fault related
system registers etc)

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-11-19 11:10:10 -08:00
..
FdtClientDxe ArmVirtPkg/FdtClientDxe: honor memory DT node 'status' property 2017-04-04 15:24:59 +01:00
HighMemDxe ArmVirtPkg/HighMemDxe: check new regions against GCD memory space map 2017-03-21 10:41:25 +00:00
Include ArmVirtPkg: introduce ArmVirtMemInfoLib library class 2017-11-23 16:05:18 +00:00
Library ArmVirtPkg/PlatformBDS: Implement PlatformBootManagerUnableToBoot 2018-07-27 15:47:55 +08:00
PlatformHasAcpiDtDxe ArmVirtPkg/PlatformHasAcpiDtDxe: depend on gEfiVariableArchProtocolGuid 2018-04-12 21:24:40 +02:00
PrePi ArmVirtPkg/PrePi: clear frame pointer in startup code 2018-11-19 11:10:10 -08:00
VirtioFdtDxe ArmVirtPkg/VirtFdtDxe: remove Xenio handling and rename to VirtioFdtDxe 2016-04-13 17:26:07 +02:00
XenAcpiPlatformDxe ArmVirtPkg/XenAcpiPlatformDxe: don't cast UINT64 to pointer directly 2017-03-28 13:48:39 +02:00
XenPlatformHasAcpiDtDxe MdeModulePkg: move PlatformHasAcpiGuid from EmbeddedPkg 2017-04-05 16:59:13 +01:00
XenioFdtDxe ArmVirtPkg/FdtClientDxe: report address and size cell count directly 2016-09-15 15:31:24 +01:00
ArmVirt.dsc.inc ArmVirtPkg: remove wrong and superfluous ResourcePublicationLib resolution 2018-07-24 22:44:29 +02:00
ArmVirtPkg.dec ArmVirtPkg: introduce ArmVirtMemInfoLib library class 2017-11-23 16:05:18 +00:00
ArmVirtQemu.dsc ArmVirtPkg/ArmVirtQemu: enable the IPv6 stack 2018-07-13 08:40:32 +02:00
ArmVirtQemu.fdf ArmVirtPkg: factor out Rules FDF section 2016-07-12 15:19:42 +02:00
ArmVirtQemuFvMain.fdf.inc ArmVirtPkg/ArmVirtQemu: enable the IPv6 stack 2018-07-13 08:40:32 +02:00
ArmVirtQemuKernel.dsc ArmVirtPkg/ArmVirtQemu: enable the IPv6 stack 2018-07-13 08:40:32 +02:00
ArmVirtQemuKernel.fdf ArmVirtPkg/ArmVirtQemuKernel: increase slack space for DTB 2017-04-04 16:00:12 +01:00
ArmVirtRules.fdf.inc ArmVirtPkg: Add Ramdisk support to ArmVirtPkg platforms 2016-08-22 09:05:17 +02:00
ArmVirtXen.dsc ArmVirtPkg: use protocol-based DevicePathLib instance for most DXE modules 2018-04-30 11:21:19 +02:00
ArmVirtXen.fdf ArmVirtPkg/ArmVirtXen: move from Intel to generic BDS 2017-12-04 16:12:34 +00:00
VarStore.fdf.inc ArmVirtPkg: add FDF definition for empty varstore 2016-06-23 16:07:38 +02:00