From 932836e3c79fd321029fc71bf3e5d647eeec1b9f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 4 May 2019 17:05:42 +0200 Subject: [PATCH] Kernel: Computing the boot timestamp was a bit broken. --- Kernel/RTC.cpp | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/Kernel/RTC.cpp b/Kernel/RTC.cpp index ab004446bd..945eacbf8d 100644 --- a/Kernel/RTC.cpp +++ b/Kernel/RTC.cpp @@ -33,23 +33,26 @@ inline bool is_leap_year(unsigned year) static unsigned days_in_months_since_start_of_year(unsigned month, unsigned year) { + unsigned days = 0; switch (month) { - case 11: return 30; - case 10: return 31; - case 9: return 30; - case 8: return 31; - case 7: return 31; - case 6: return 30; - case 5: return 31; - case 4: return 30; - case 3: return 31; + case 11: days += 30; + case 10: days += 31; + case 9: days += 30; + case 8: days += 31; + case 7: days += 31; + case 6: days += 30; + case 5: days += 31; + case 4: days += 30; + case 3: days += 31; case 2: if (is_leap_year(year)) - return 29; - return 28; - case 1: return 31; - default: return 0; + days += 29; + else + days += 28; + case 1: days += 31; + default: break; } + return days; } static unsigned days_in_years_since_epoch(unsigned year) @@ -88,6 +91,8 @@ time_t now() unsigned year, month, day, hour, minute, second; read_registers(year, month, day, hour, minute, second); + kprintf("year: %d, month: %d, day: %d\n", year, month, day); + ASSERT(year >= 2018); return days_in_years_since_epoch(year - 1) * 86400