local_save_flags(flags); local_irq_disable();
cris_atomic_save(sem, flags);
extern inline void down(struct semaphore * sem){	unsigned long flags;	int failed;	might_sleep();	/* atomically decrement the semaphores count, and if its negative, we wait */	local_save_flags(flags);	local_irq_disable();	failed = --(sem->count.counter) < 0;	local_irq_restore(flags);	if(failed) {		__down(sem);	}}