Loading arch/x86_64/kernel/time.c +12 −29 Original line number Diff line number Diff line Loading @@ -504,42 +504,25 @@ unsigned long long sched_clock(void) static unsigned long get_cmos_time(void) { unsigned int timeout = 1000000, year, mon, day, hour, min, sec; unsigned char uip = 0, this = 0; unsigned int year, mon, day, hour, min, sec; unsigned long flags; unsigned extyear = 0; /* * The Linux interpretation of the CMOS clock register contents: When the * Update-In-Progress (UIP) flag goes from 1 to 0, the RTC registers show the * second which has precisely just started. Waiting for this can take up to 1 * second, we timeout approximately after 2.4 seconds on a machine with * standard 8.3 MHz ISA bus. */ spin_lock_irqsave(&rtc_lock, flags); while (timeout && (!uip || this)) { uip |= this; this = CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP; timeout--; } /* * Here we are safe to assume the registers won't change for a whole * second, so we just go ahead and read them. */ do { sec = CMOS_READ(RTC_SECONDS); min = CMOS_READ(RTC_MINUTES); hour = CMOS_READ(RTC_HOURS); day = CMOS_READ(RTC_DAY_OF_MONTH); mon = CMOS_READ(RTC_MONTH); year = CMOS_READ(RTC_YEAR); #ifdef CONFIG_ACPI if (acpi_fadt.revision >= FADT2_REVISION_ID && acpi_fadt.century) if (acpi_fadt.revision >= FADT2_REVISION_ID && acpi_fadt.century) extyear = CMOS_READ(acpi_fadt.century); #endif } while (sec != CMOS_READ(RTC_SECONDS)); spin_unlock_irqrestore(&rtc_lock, flags); Loading Loading
arch/x86_64/kernel/time.c +12 −29 Original line number Diff line number Diff line Loading @@ -504,42 +504,25 @@ unsigned long long sched_clock(void) static unsigned long get_cmos_time(void) { unsigned int timeout = 1000000, year, mon, day, hour, min, sec; unsigned char uip = 0, this = 0; unsigned int year, mon, day, hour, min, sec; unsigned long flags; unsigned extyear = 0; /* * The Linux interpretation of the CMOS clock register contents: When the * Update-In-Progress (UIP) flag goes from 1 to 0, the RTC registers show the * second which has precisely just started. Waiting for this can take up to 1 * second, we timeout approximately after 2.4 seconds on a machine with * standard 8.3 MHz ISA bus. */ spin_lock_irqsave(&rtc_lock, flags); while (timeout && (!uip || this)) { uip |= this; this = CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP; timeout--; } /* * Here we are safe to assume the registers won't change for a whole * second, so we just go ahead and read them. */ do { sec = CMOS_READ(RTC_SECONDS); min = CMOS_READ(RTC_MINUTES); hour = CMOS_READ(RTC_HOURS); day = CMOS_READ(RTC_DAY_OF_MONTH); mon = CMOS_READ(RTC_MONTH); year = CMOS_READ(RTC_YEAR); #ifdef CONFIG_ACPI if (acpi_fadt.revision >= FADT2_REVISION_ID && acpi_fadt.century) if (acpi_fadt.revision >= FADT2_REVISION_ID && acpi_fadt.century) extyear = CMOS_READ(acpi_fadt.century); #endif } while (sec != CMOS_READ(RTC_SECONDS)); spin_unlock_irqrestore(&rtc_lock, flags); Loading