static inline void check_io(CPUX86State *env, int addr, int size)

{

    int io_offset, val, mask;



    /* TSS must be a valid 32 bit one */

    if (!(env->tr.flags & DESC_P_MASK) ||

        ((env->tr.flags >> DESC_TYPE_SHIFT) & 0xf) != 9 ||

        env->tr.limit < 103) {

        goto fail;

    }

    io_offset = cpu_lduw_kernel(env, env->tr.base + 0x66);

    io_offset += (addr >> 3);

    /* Note: the check needs two bytes */

    if ((io_offset + 1) > env->tr.limit) {

        goto fail;

    }

    val = cpu_lduw_kernel(env, env->tr.base + io_offset);

    val >>= (addr & 7);

    mask = (1 << size) - 1;

    /* all bits must be zero to allow the I/O */

    if ((val & mask) != 0) {

    fail:

        raise_exception_err(env, EXCP0D_GPF, 0);

    }

}

static inline void check_io(CPUX86State *env, int addr, int size)

{

    int io_offset, val, mask;



    

    if (!(env->tr.flags & DESC_P_MASK) ||

        ((env->tr.flags >> DESC_TYPE_SHIFT) & 0xf) != 9 ||

        env->tr.limit < 103) {

        goto fail;

    }

    io_offset = cpu_lduw_kernel(env, env->tr.base + 0x66);

    io_offset += (addr >> 3);

    

    if ((io_offset + 1) > env->tr.limit) {

        goto fail;

    }

    val = cpu_lduw_kernel(env, env->tr.base + io_offset);

    val >>= (addr & 7);

    mask = (1 << size) - 1;

    

    if ((val & mask) != 0) {

    fail:

        raise_exception_err(env, EXCP0D_GPF, 0);

    }

}

static inline void FUNC_0(CPUX86State *VAR_0, int VAR_1, int VAR_2)

{

    int VAR_3, VAR_4, VAR_5;



    

    if (!(VAR_0->tr.flags & DESC_P_MASK) ||

        ((VAR_0->tr.flags >> DESC_TYPE_SHIFT) & 0xf) != 9 ||

        VAR_0->tr.limit < 103) {

        goto fail;

    }

    VAR_3 = cpu_lduw_kernel(VAR_0, VAR_0->tr.base + 0x66);

    VAR_3 += (VAR_1 >> 3);

    

    if ((VAR_3 + 1) > VAR_0->tr.limit) {

        goto fail;

    }

    VAR_4 = cpu_lduw_kernel(VAR_0, VAR_0->tr.base + VAR_3);

    VAR_4 >>= (VAR_1 & 7);

    VAR_5 = (1 << VAR_2) - 1;

    

    if ((VAR_4 & VAR_5) != 0) {

    fail:

        raise_exception_err(VAR_0, EXCP0D_GPF, 0);

    }

}

static inline void FUNC_0(CPUX86State *VAR_0, int VAR_1, int VAR_2)
{ int VAR_3, VAR_4, VAR_5; if (!(VAR_0->tr.flags & DESC_P_MASK) ||
((VAR_0->tr.flags >> DESC_TYPE_SHIFT) & 0xf) != 9 ||
VAR_0->tr.limit < 103) { goto fail; } VAR_3 = cpu_lduw_kernel(VAR_0, VAR_0->tr.base + 0x66); VAR_3 += (VAR_1 >> 3); if ((VAR_3 + 1) > VAR_0->tr.limit) { goto fail; } VAR_4 = cpu_lduw_kernel(VAR_0, VAR_0->tr.base + VAR_3); VAR_4 >>= (VAR_1 & 7); VAR_5 = (1 << VAR_2) - 1; if ((VAR_4 & VAR_5) != 0) { fail:
raise_exception_err(VAR_0, EXCP0D_GPF, 0); } }