diff options
author | Jeenu Viswambharan <jeenu.viswambharan@arm.com> | 2014-05-12 15:28:47 +0100 |
---|---|---|
committer | Jeenu Viswambharan <jeenu.viswambharan@arm.com> | 2014-05-16 17:11:31 +0100 |
commit | 2da8d8bfc0877b9c723514133554dfee4c0638f1 (patch) | |
tree | 5178aafe28b80e33b6581663bee66b9d2194688a /include | |
parent | c3c1e9b0abe1a879dad4400421ad00849231eb3c (diff) |
Add build configuration for timer save/restore
At present, non-secure timer register contents are saved and restored as
part of world switch by BL3-1. This effectively means that the
non-secure timer stops, and non-secure timer interrupts are prevented
from asserting until BL3-1 switches back, introducing latency for
non-secure services. Often, secure world might depend on alternate
sources for secure interrupts (secure timer or platform timer) instead
of non-secure timers, in which case this save and restore is
unnecessary.
This patch introduces a boolean build-time configuration NS_TIMER_SWITCH
to choose whether or not to save and restore non-secure timer registers
upon world switch. The default choice is made not to save and restore
them.
Fixes ARM-software/tf-issues#148
Change-Id: I1b9d623606acb9797c3e0b02fb5ec7c0a414f37e
Diffstat (limited to 'include')
-rw-r--r-- | include/bl31/context.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/bl31/context.h b/include/bl31/context.h index 549fa21..b0dfec1 100644 --- a/include/bl31/context.h +++ b/include/bl31/context.h @@ -127,6 +127,11 @@ #define CTX_AFSR1_EL1 0xc8 #define CTX_CONTEXTIDR_EL1 0xd0 #define CTX_VBAR_EL1 0xd8 +/* + * If the timer registers aren't saved and restored, we don't have to reserve + * space for them in the context + */ +#if NS_TIMER_SWITCH #define CTX_CNTP_CTL_EL0 0xe0 #define CTX_CNTP_CVAL_EL0 0xe8 #define CTX_CNTV_CTL_EL0 0xf0 @@ -134,6 +139,10 @@ #define CTX_CNTKCTL_EL1 0x100 #define CTX_FP_FPEXC32_EL2 0x108 #define CTX_SYSREGS_END 0x110 +#else +#define CTX_FP_FPEXC32_EL2 0xe0 +#define CTX_SYSREGS_END 0xf0 +#endif /******************************************************************************* * Constants that allow assembler code to access members of and the 'fp_regs' |