Build option to include AArch32 registers in cpu context
The system registers that are saved and restored in CPU context include
AArch32 systems registers like SPSR_ABT, SPSR_UND, SPSR_IRQ, SPSR_FIQ,
DACR32_EL2, IFSR32_EL2 and FPEXC32_EL2. Accessing these registers on an
AArch64-only (i.e. on hardware that does not implement AArch32, or at
least not at EL1 and higher ELs) platform leads to an exception. This patch
introduces the build option `CTX_INCLUDE_AARCH32_REGS` to specify whether to
include these AArch32 systems registers in the cpu context or not. By default
this build option is set to 1 to ensure compatibility. AArch64-only platforms
must set it to 0. A runtime check is added in BL1 and BL31 cold boot path to
verify this.

Fixes ARM-software/tf-issues#386

Change-Id: I720cdbd7ed7f7d8516635a2ec80d025f478b95ee
1 parent e141aa0 commit 8cd16e6b5b4a83a2cf704362b9acb1c2eea1417e
@Soby Mathew Soby Mathew authored on 17 May 2016
Showing 6 changed files
View
Makefile
View
bl1/bl1_context_mgmt.c
View
bl31/bl31_main.c
View
common/aarch64/context.S
View
docs/user-guide.md
View
include/common/context.h