summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chip/host/system.c12
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)