restore_flags(flags); 
local_irq_restore(flags); 
timer1_handler(int irq, void *dev_id, struct pt_regs *regs){  struct fast_timer *t;  unsigned long flags;  save_flags(flags);  cli();  /* Clear timer1 irq */  *R_IRQ_MASK0_CLR = IO_STATE(R_IRQ_MASK0_CLR, timer1, clr);  /* First stop timer, then ack interrupt */  /* Stop timer */  *R_TIMER_CTRL = r_timer_ctrl_shadow =    (r_timer_ctrl_shadow & ~IO_MASK(R_TIMER_CTRL, tm1)) |    IO_STATE(R_TIMER_CTRL, tm1, stop_ld);  /* Ack interrupt */  *R_TIMER_CTRL =  r_timer_ctrl_shadow | IO_STATE(R_TIMER_CTRL, i1, clr);  fast_timer_running = 0;  fast_timer_ints++;  restore_flags(flags);  t = fast_timer_list;  while (t)  {    struct timeval tv;    /* Has it really expired? */    do_gettimeofday_fast(&tv);    D1(printk("t: %is %06ius\n", tv.tv_sec, tv.tv_usec));    if (timeval_cmp(&t->tv_expires, &tv) <= 0)    {      /* Yes it has expired */#ifdef FAST_TIMER_LOG      timer_expired_log[fast_timers_expired % NUM_TIMER_STATS] = *t;#endif      fast_timers_expired++;      /* Remove this timer before call, since it may reuse the timer */      save_flags(flags);      cli();      if (t->prev)      {        t->prev->next = t->next;      }      else      {        fast_timer_list = t->next;      }      if (t->next)      {        t->next->prev = t->prev;      }      t->prev = NULL;      t->next = NULL;      restore_flags(flags);      if (t->function != NULL)      {        t->function(t->data);      }      else      {        DEBUG_LOG("!timer1 %i function==NULL!\n", fast_timer_ints);      }    }    else    {      /* Timer is to early, let's set it again using the normal routines */      D1(printk(".\n"));    }    save_flags(flags);    cli();    if ((t = fast_timer_list) != NULL)    {      /* Start next timer.. */      long us;      struct timeval tv;      do_gettimeofday_fast(&tv);      us = ((t->tv_expires.tv_sec - tv.tv_sec) * 1000000 +            t->tv_expires.tv_usec - tv.tv_usec);      if (us > 0)      {        if (!fast_timer_running)        {#ifdef FAST_TIMER_LOG          timer_started_log[fast_timers_started % NUM_TIMER_STATS] = *t;#endif          start_timer1(us);        }        restore_flags(flags);        break;      }      else      {        /* Timer already expired, let's handle it better late than never.         * The normal loop handles it         */        D1(printk("e! %d\n", us));      }    }    restore_flags(flags);  }  if (!t)  {    D1(printk("t1 stop!\n"));  }  return IRQ_HANDLED;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7e9204265b4ec6680fad9abc7a78b94087983916/fasttimer.c/clean/arch/cris/arch-v10/kernel/fasttimer.c