diff options
Diffstat (limited to 'chip/host/system.c')
-rw-r--r-- | chip/host/system.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/chip/host/system.c b/chip/host/system.c index e726245ee0..41f634aadd 100644 --- a/chip/host/system.c +++ b/chip/host/system.c @@ -152,7 +152,17 @@ test_mockable void system_reset(int flags) test_mockable void system_hibernate(uint32_t seconds, uint32_t microseconds) { - exit(EXIT_CODE_HIBERNATE); + uint32_t i; + + save_reset_flags(RESET_FLAG_HIBERNATE); + + if (!seconds && !microseconds) + exit(EXIT_CODE_HIBERNATE); + + for (i = 0; i < seconds; ++i) + udelay(SECOND); + udelay(microseconds); + emulator_reboot(); } test_mockable int system_is_locked(void) |