diff options
author | Tzung-Bi Shih <tzungbi@chromium.org> | 2021-02-18 16:17:21 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-02-19 09:20:24 +0000 |
commit | fe1800f01d7151064f780d8623b71778b7a81f78 (patch) | |
tree | 619d2cbc6325bf143a9600c7114e8a8bab7d3f6b /board | |
parent | 80cacc3d251ba738e2c8e6a84305ac06395898ef (diff) | |
download | chrome-ec-fe1800f01d7151064f780d8623b71778b7a81f78.tar.gz |
core/riscv-rv32i: set in_interrupt at beginning of exception handler
There are 3 paths when receiving an excaption in
core/riscv-rv32i/init.S:
1. __irq_handler
2. excep_handler
3. unhandled_interrupt
Originally, in_interrupt_context() returns true only if it goes to 1st
path. However, the rest paths are also in interrupt context, especially
some function may rely on in_interrupt_context(), for example,
uart_flush_output() in common/uart_buffering.c.
Note that, only the 1st goes back to normal context. The rest of paths
are all going to panic and reset.
Sets in_interrupt at the beginning of exception handler instead of
start_irq_handler() so that the flag is ON when receiving an exception.
BRANCH=none
BUG=b:180571536
BUG=b:163300760
TEST=make BOARD=asurada_scp
Signed-off-by: Tzung-Bi Shih <tzungbi@chromium.org>
Change-Id: Iba689c506c02c4b5bb1668766f1d7ab5f86f72a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2702999
Reviewed-by: Eric Yilun Lin <yllin@chromium.org>
Diffstat (limited to 'board')
0 files changed, 0 insertions, 0 deletions