void cpu_interrupt(CPUState *env, int mask)

{

    int old_mask;



    old_mask = env->interrupt_request;

    env->interrupt_request |= mask;



#ifndef CONFIG_USER_ONLY

    /*

     * If called from iothread context, wake the target cpu in

     * case its halted.

     */

    if (!qemu_cpu_self(env)) {

        qemu_cpu_kick(env);

        return;

    }

#endif



    if (use_icount) {

        env->icount_decr.u16.high = 0xffff;

#ifndef CONFIG_USER_ONLY

        if (!can_do_io(env)

            && (mask & ~old_mask) != 0) {

            cpu_abort(env, "Raised interrupt while not in I/O function");

        }

#endif

    } else {

        cpu_unlink_tb(env);

    }

}

void cpu_interrupt(CPUState *env, int mask)

{

    int old_mask;



    old_mask = env->interrupt_request;

    env->interrupt_request |= mask;



#ifndef CONFIG_USER_ONLY

    







    if (!qemu_cpu_self(env)) {

        qemu_cpu_kick(env);

        return;

    }

#endif



    if (use_icount) {

        env->icount_decr.u16.high = 0xffff;

#ifndef CONFIG_USER_ONLY

        if (!can_do_io(env)

            && (mask & ~old_mask) != 0) {

            cpu_abort(env, "Raised interrupt while not in I/O function");

        }

#endif

    } else {

        cpu_unlink_tb(env);

    }

}

void FUNC_0(CPUState *VAR_0, int VAR_1)

{

    int VAR_2;



    VAR_2 = VAR_0->interrupt_request;

    VAR_0->interrupt_request |= VAR_1;



#ifndef CONFIG_USER_ONLY

    







    if (!qemu_cpu_self(VAR_0)) {

        qemu_cpu_kick(VAR_0);

        return;

    }

#endif



    if (use_icount) {

        VAR_0->icount_decr.u16.high = 0xffff;

#ifndef CONFIG_USER_ONLY

        if (!can_do_io(VAR_0)

            && (VAR_1 & ~VAR_2) != 0) {

            cpu_abort(VAR_0, "Raised interrupt while not in I/O function");

        }

#endif

    } else {

        cpu_unlink_tb(VAR_0);

    }

}

void FUNC_0(CPUState *VAR_0, int VAR_1)
{ int VAR_2; VAR_2 = VAR_0->interrupt_request; VAR_0->interrupt_request |= VAR_1; #ifndef CONFIG_USER_ONLY
if (!qemu_cpu_self(VAR_0)) { qemu_cpu_kick(VAR_0); return; } #endif
if (use_icount) { VAR_0->icount_decr.u16.high = 0xffff; #ifndef CONFIG_USER_ONLY
if (!can_do_io(VAR_0)
&& (VAR_1 & ~VAR_2) != 0) { cpu_abort(VAR_0, "Raised interrupt while not in I/O function"); } #endif
} else { cpu_unlink_tb(VAR_0); } }