spin_unlock_irqrestore(&rtc_lock, flags); 
static unsigned long dec_rtc_get_time(void){	unsigned int year, mon, day, hour, min, sec, real_year;	int i;	/* The Linux interpretation of the DS1287 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.	 * Let's hope other operating systems interpret the RTC the same way.	 */	/* read RTC exactly on falling edge of update flag */	for (i = 0; i < 1000000; i++)	/* may take up to 1 second... */		if (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP)			break;	for (i = 0; i < 1000000; i++)	/* must try at least 2.228 ms */		if (!(CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP))			break;	/* Isn't this overkill?  UIP above should guarantee consistency */	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);	} while (sec != CMOS_READ(RTC_SECONDS));	if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD) {		sec = BCD2BIN(sec);		min = BCD2BIN(min);		hour = BCD2BIN(hour);		day = BCD2BIN(day);		mon = BCD2BIN(mon);		year = BCD2BIN(year);	}	/*	 * The PROM will reset the year to either '72 or '73.	 * Therefore we store the real year separately, in one	 * of unused BBU RAM locations.	 */	real_year = CMOS_READ(RTC_DEC_YEAR);	year += real_year - 72 + 2000;	return mktime(year, mon, day, hour, min, sec);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/53c2df2f4ebbc1d8231ca7cc13ac5381230888b1/time.c/buggy/arch/mips/dec/time.c