diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2019-04-09 19:16:37 -0700 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2019-07-01 11:02:22 -0700 |
commit | 23c0cbd0c75c3b564850294427fd2be2bc2a015b (patch) | |
tree | 1d21578cc359eddd8f3ab6f58bb4a0a77de4ddb0 /drivers/firmware/arm_scmi | |
parent | 45869eb0c0afd72bd5ab2437d4b00915697c044a (diff) | |
download | linux-stable-23c0cbd0c75c3b564850294427fd2be2bc2a015b.tar.gz linux-stable-23c0cbd0c75c3b564850294427fd2be2bc2a015b.tar.bz2 linux-stable-23c0cbd0c75c3b564850294427fd2be2bc2a015b.zip |
ARCv2: entry: push out the Z flag unclobber from common EXCEPTION_PROLOGUE
Upon a taken interrupt/exception from User mode, HS hardware auto sets Z flag.
This helps shave a few instructions from EXCEPTION_PROLOGUE by eliding
re-reading ERSTATUS and some bit fiddling.
However TLB Miss Exception handler can clobber the CPU flags and still end
up in EXCEPTION_PROLOGUE in the slow path handling TLB handling case:
EV_TLBMissD
do_slow_path_pf
EV_TLBProtV (aliased to call_do_page_fault)
EXCEPTION_PROLOGUE
As a result, EXCEPTION_PROLOGUE need to "unclobber" the Z flag which this
patch changes. It is now pushed out to TLB Miss Exception handler.
The reasons beings:
- The flag restoration is only needed for slowpath TLB Miss Exception
handling, but currently being in EXCEPTION_PROLOGUE penalizes all
exceptions such as ProtV and syscall Trap, where Z flag is already
as expected.
- Pushing unclobber out to where it was clobbered is much cleaner and
also serves to document the fact.
- Makes EXCEPTION_PROLGUE similar to INTERRUPT_PROLOGUE so easier to
refactor the common parts which is what this series aims to do
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'drivers/firmware/arm_scmi')
0 files changed, 0 insertions, 0 deletions