arm-trusted-firmware/bl31
Soby Mathew c3260f9b82 Preserve x19-x29 across world switch for exception handling
Previously exception handlers in BL3-1, X19-X29 were not saved
and restored on every SMC/trap into EL3. Instead these registers
were 'saved as needed' as a side effect of the A64 ABI used by the C
compiler.

That approach failed when world switching but was not visible
with the TSP/TSPD code because the TSP is 64-bit, did not
clobber these registers when running and did not support pre-emption
by normal world interrupts. These scenarios showed
that the values in these registers can be passed through a world
switch, which broke the normal and trusted world assumptions
about these registers being preserved.

The Ideal solution saves and restores these registers when a
world switch occurs - but that type of implementation is more complex.
So this patch always saves and restores these registers on entry and
exit of EL3.

Fixes ARM-software/tf-issues#141

Change-Id: I9a727167bbc594454e81cf78a97ca899dfb11c27
2014-05-08 12:01:23 +01:00
..
aarch64 Preserve x19-x29 across world switch for exception handling 2014-05-08 12:01:23 +01:00
bl31.ld.S Use --gc-sections during link 2014-03-26 21:54:37 +00:00
bl31.mk Remove vpath usage in makefiles 2014-05-06 12:35:02 +01:00
bl31_main.c Remove variables from .data section 2014-05-06 17:55:38 +01:00
context_mgmt.c Reduce deep nesting of header files 2014-05-06 13:57:48 +01:00
runtime_svc.c Reduce deep nesting of header files 2014-05-06 13:57:48 +01:00