spin_unlock_irqrestore(&rtc_lock, flags); 
rtc_ds1386_get_time(void){	u8 byte;	u8 temp;	unsigned int year, month, day, hour, minute, second;	/* let us freeze external registers */	byte = READ_RTC(0xB);	byte &= 0x3f;	WRITE_RTC(0xB, byte);	/* read time data */	year = BCD2BIN(READ_RTC(0xA)) + EPOCH;	month = BCD2BIN(READ_RTC(0x9) & 0x1f);	day = BCD2BIN(READ_RTC(0x8));	minute = BCD2BIN(READ_RTC(0x2));	second = BCD2BIN(READ_RTC(0x1));	/* hour is special - deal with it later */	temp = READ_RTC(0x4);	/* enable time transfer */	byte |= 0x80;	WRITE_RTC(0xB, byte);	/* calc hour */	if (temp & 0x40) {		/* 12 hour format */		hour = BCD2BIN(temp & 0x1f);		if (temp & 0x20) hour += 12; 		/* PM */	} else {		/* 24 hour format */		hour = BCD2BIN(temp & 0x3f);	}	return mktime(year, month, day, hour, minute, second);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/53c2df2f4ebbc1d8231ca7cc13ac5381230888b1/rtc_ds1386.c/buggy/arch/mips/ddb5xxx/common/rtc_ds1386.c