diff options
author | Icarus Sparry <icarus.w.sparry@intel.com> | 2015-12-26 12:18:03 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-01-05 17:26:10 -0800 |
commit | 077e545662963fc9d656bf13ed4d811e9d0590ed (patch) | |
tree | 5abc6285747de7fa7917ed16d5b422ecd79ef9d8 /util | |
parent | 3d752a3bf6bdacce4e7f2ec797e98a63c380f813 (diff) | |
download | chrome-ec-077e545662963fc9d656bf13ed4d811e9d0590ed.tar.gz |
cortex-m: proper handling of input parameters to SVC handler
According to section 2.7 of Cortex-M3 Application Note 179: A Cortex-M3
processor can get a "late arriving exception" and this will corrupt the
values of the r0, r1, r2 and r3 registers passed in an svc call.
http://infocenter.arm.com/help/topic/com.arm.doc.dai0179b/AppsNote179.pdf
The fix is to reload the two registers we care about, r0 and r1, from
the stack to ensure the input parameters to SVC handler, desched (r0)
and resched (r1), are valid.
BUG=chrome-os-partner:48499
BRANCH=none
TEST=Used assert to verify resched is a valid TASK ID.
Change-Id: Ie2229472e709febe16eee3c2cd986e3815fda076
Signed-off-by: Icarus Sparry <icarus.w.sparry@intel.com>
Signed-off-by: Kevin K Wong <kevin.k.wong@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/319849
Commit-Ready: Icarus W Sparry <icarus.w.sparry@intel.com>
Tested-by: Icarus W Sparry <icarus.w.sparry@intel.com>
Reviewed-by: Icarus W Sparry <icarus.w.sparry@intel.com>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'util')
0 files changed, 0 insertions, 0 deletions