/*
 * Enter an interrupt handler, moving away from idle.
 */
void rcu_irq_enter(void)
{
	unsigned long flags;
	long long oldval;

	local_irq_save(flags);
	oldval = rcu_dynticks_nesting;
	rcu_dynticks_nesting++;
	WARN_ON_ONCE(rcu_dynticks_nesting == 0);
	rcu_idle_exit_common(oldval);
	local_irq_restore(flags);
}
/*
 * Enter an interrupt handler, moving away from idle.
 */
void rcu_irq_enter(void)
{
	unsigned long flags;
	long long oldval;

	local_irq_save(flags);
	oldval = rcu_dynticks_nesting;
	rcu_dynticks_nesting++;
  mutant_covered = 1;
 /* MUTANT (rep_const) */	WARN_ON_ONCE(rcu_dynticks_nesting == 1);
	rcu_idle_exit_common(oldval);
	local_irq_restore(flags);
}
/*
 * Enter an interrupt handler, moving away from idle.
 */
void rcu_irq_enter(void)
{
 mutant_covered = 1;
 /* MUTANT (del_stmt) */ /* 	unsigned long flags; */ 
	long long oldval;

	local_irq_save(flags);
	oldval = rcu_dynticks_nesting;
	rcu_dynticks_nesting++;
	WARN_ON_ONCE(rcu_dynticks_nesting == 0);
	rcu_idle_exit_common(oldval);
	local_irq_restore(flags);
}
/*
 * Exit idle, so that we are no longer in an extended quiescent state.
 */
void rcu_idle_exit(void)
{
	unsigned long flags;
	long long oldval;

	local_irq_save(flags);
	oldval = rcu_dynticks_nesting;
	WARN_ON_ONCE(rcu_dynticks_nesting < 0);
	if (rcu_dynticks_nesting & DYNTICK_TASK_NEST_MASK)
		rcu_dynticks_nesting += DYNTICK_TASK_NEST_VALUE;
	else
		rcu_dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
	rcu_idle_exit_common(oldval);
	local_irq_restore(flags);
}
void rcu_irq_enter(void)
{
	unsigned long flags;
	struct rcu_dynticks *rdtp;
	long long oldval;

	local_irq_save(flags);
	rdtp = &__get_cpu_var(rcu_dynticks);
	oldval = rdtp->dynticks_nesting;
	rdtp->dynticks_nesting++;
	WARN_ON_ONCE(rdtp->dynticks_nesting == 0);
	if (oldval)
		trace_rcu_dyntick("++=", oldval, rdtp->dynticks_nesting);
	else
		rcu_idle_exit_common(rdtp, oldval);
	local_irq_restore(flags);
}
void rcu_idle_exit(void)
{
	unsigned long flags;
	struct rcu_dynticks *rdtp;
	long long oldval;

	local_irq_save(flags);
	rdtp = &__get_cpu_var(rcu_dynticks);
	oldval = rdtp->dynticks_nesting;
	WARN_ON_ONCE(oldval < 0);
	if (oldval & DYNTICK_TASK_NEST_MASK)
		rdtp->dynticks_nesting += DYNTICK_TASK_NEST_VALUE;
	else
		rdtp->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
	rcu_idle_exit_common(rdtp, oldval);
	local_irq_restore(flags);
}
/*
 * Exit idle, so that we are no longer in an extended quiescent state.
 */
void rcu_idle_exit(void)
{
 /* MUTANT (del_stmt) */ /* 	unsigned long flags; */ 
	long long oldval;

	local_irq_save(flags);
	oldval = rcu_dynticks_nesting;
	WARN_ON_ONCE(rcu_dynticks_nesting < 0);
	if (rcu_dynticks_nesting & DYNTICK_TASK_NEST_MASK) {
		rcu_dynticks_nesting += DYNTICK_TASK_NEST_VALUE;
	}
	else {
		rcu_dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
	}
	rcu_idle_exit_common(oldval);
	local_irq_restore(flags);
}
/*
 * Exit idle, so that we are no longer in an extended quiescent state.
 */
void rcu_idle_exit(void)
{
	unsigned long flags;
	long long oldval;

	local_irq_save(flags);
	oldval = rcu_dynticks_nesting;
 mutant_covered = 1;
 /* MUTANT (rep_op) */	WARN_ON_ONCE(rcu_dynticks_nesting == 0);
	if (rcu_dynticks_nesting & DYNTICK_TASK_NEST_MASK) {
		rcu_dynticks_nesting += DYNTICK_TASK_NEST_VALUE;
	}
	else {
		rcu_dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
	}
	rcu_idle_exit_common(oldval);
	local_irq_restore(flags);
}
/*
 * Exit idle, so that we are no longer in an extended quiescent state.
 */
void rcu_idle_exit(void)
{
	unsigned long flags;
	long long oldval;

	local_irq_save(flags);
	oldval = rcu_dynticks_nesting;
	WARN_ON_ONCE(rcu_dynticks_nesting < 0);
	if (rcu_dynticks_nesting & DYNTICK_TASK_NEST_MASK) {
		if (!__covered6) {__covered6 = 1; total_covered += 1;}
		rcu_dynticks_nesting += DYNTICK_TASK_NEST_VALUE;
	}
	else {
		if (!__covered7) {__covered7 = 1; total_covered += 1;}
		rcu_dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
	}
	rcu_idle_exit_common(oldval);
	local_irq_restore(flags);
}