diff options
author | Nicolas Boichat <drinkcat@chromium.org> | 2018-04-02 09:39:39 +0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2018-04-18 07:59:26 +0000 |
commit | 54d5355a471c54b5bf38f32b9ac76040144416d0 (patch) | |
tree | 551f931a6e921dc8ab519afd2f959e04a84a0361 | |
parent | 5a140f7eeedcf2e23f9f8b1f19c77ac7465492c3 (diff) | |
download | chrome-ec-54d5355a471c54b5bf38f32b9ac76040144416d0.tar.gz |
host_event_commands: Fix lpc_get_next_host_event for 64-bit events
__builtin_ffs takes an int as argument, and, therefore, does not
find bits >= 32. Fix this up when CONFIG_HOST_EVENT64.
BUG=b:69329196
BRANCH=fizz,poppy
TEST=Patch coreboot to add bit 33 in SCI mask, add EC code to send
such events, EC does not watchdog anymore
Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/989514
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
(cherry picked from commit da1b429c79ac591fb077a705ac41cb188a2500a9)
Change-Id: Id400538bb88019c02137b1605b71865ac61d450b
Reviewed-on: https://chromium-review.googlesource.com/1013900
Reviewed-by: Joel Kitching <kitching@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
Trybot-Ready: Joel Kitching <kitching@chromium.org>
-rw-r--r-- | common/host_event_commands.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/common/host_event_commands.c b/common/host_event_commands.c index 0f092f6bea..5fad82b4b6 100644 --- a/common/host_event_commands.c +++ b/common/host_event_commands.c @@ -129,6 +129,15 @@ int lpc_get_next_host_event(void) host_event_t ev; int evt_idx = __builtin_ffs(lpc_host_events); +#ifdef CONFIG_HOST_EVENT64 + if (evt_idx == 0) { + int evt_idx_high = __builtin_ffs(lpc_host_events >> 32); + + if (evt_idx_high) + evt_idx = 32 + evt_idx_high; + } +#endif + if (evt_idx) { host_event_set_bit(&ev, evt_idx); host_clear_events(ev); |