unsigned long max_wait_tb; 
u64 max_wait_tb; 
void rtas_get_rtc_time(struct rtc_time *rtc_tm){        int ret[8];	int error, wait_time;	unsigned long max_wait_tb;	max_wait_tb = get_tb() + tb_ticks_per_usec * 1000 * MAX_RTC_WAIT;	do {		error = rtas_call(rtas_token("get-time-of-day"), 0, 8, ret);		if (error == RTAS_CLOCK_BUSY || rtas_is_extended_busy(error)) {			if (in_interrupt() && printk_ratelimit()) {				memset(&rtc_tm, 0, sizeof(struct rtc_time));				printk(KERN_WARNING "error: reading clock"				       " would delay interrupt\n");				return;	/* delay not allowed */			}			wait_time = rtas_extended_busy_delay_time(error);			msleep(wait_time);			error = RTAS_CLOCK_BUSY;		}	} while (error == RTAS_CLOCK_BUSY && (get_tb() < max_wait_tb));        if (error != 0 && printk_ratelimit()) {                printk(KERN_WARNING "error: reading the clock failed (%d)\n",		       error);		return;        }	rtc_tm->tm_sec = ret[5];	rtc_tm->tm_min = ret[4];	rtc_tm->tm_hour = ret[3];	rtc_tm->tm_mday = ret[2];	rtc_tm->tm_mon = ret[1] - 1;	rtc_tm->tm_year = ret[0] - 1900;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/49e16b7becd6320bde51aa238c11815708f836d9/rtas-rtc.c/clean/arch/powerpc/kernel/rtas-rtc.c