static void do_interrupt_user(CPUX86State *env, int intno, int is_int,

                              int error_code, target_ulong next_eip)

{

    SegmentCache *dt;

    target_ulong ptr;

    int dpl, cpl, shift;

    uint32_t e2;



    dt = &env->idt;

    if (env->hflags & HF_LMA_MASK) {

        shift = 4;

    } else {

        shift = 3;

    }

    ptr = dt->base + (intno << shift);

    e2 = cpu_ldl_kernel(env, ptr + 4);



    dpl = (e2 >> DESC_DPL_SHIFT) & 3;

    cpl = env->hflags & HF_CPL_MASK;

    /* check privilege if software int */

    if (is_int && dpl < cpl) {

        raise_exception_err(env, EXCP0D_GPF, (intno << shift) + 2);

    }



    /* Since we emulate only user space, we cannot do more than

       exiting the emulation with the suitable exception and error

       code. So update EIP for INT 0x80 and EXCP_SYSCALL. */

    if (is_int || intno == EXCP_SYSCALL) {

        env->eip = next_eip;

    }

}

static void do_interrupt_user(CPUX86State *env, int intno, int is_int,

                              int error_code, target_ulong next_eip)

{

    SegmentCache *dt;

    target_ulong ptr;

    int dpl, cpl, shift;

    uint32_t e2;



    dt = &env->idt;

    if (env->hflags & HF_LMA_MASK) {

        shift = 4;

    } else {

        shift = 3;

    }

    ptr = dt->base + (intno << shift);

    e2 = cpu_ldl_kernel(env, ptr + 4);



    dpl = (e2 >> DESC_DPL_SHIFT) & 3;

    cpl = env->hflags & HF_CPL_MASK;

    

    if (is_int && dpl < cpl) {

        raise_exception_err(env, EXCP0D_GPF, (intno << shift) + 2);

    }



    





    if (is_int || intno == EXCP_SYSCALL) {

        env->eip = next_eip;

    }

}

    SegmentCache *dt;     target_ulong ptr;     int dpl, cpl, shift;     uint32_t e2;     dt = &env->idt;     if (env->hflags & HF_LMA_MASK) {         shift = 4;     } else {         shift = 3;     ptr = dt->base + (intno << shift);     e2 = cpu_ldl_kernel(env, ptr + 4);     dpl = (e2 >> DESC_DPL_SHIFT) & 3;     cpl = env->hflags & HF_CPL_MASK;     if (is_int && dpl < cpl) {         raise_exception_err(env, EXCP0D_GPF, (intno << shift) + 2);
static void FUNC_0(CPUX86State *VAR_0, int VAR_1, int VAR_2,

                              int VAR_3, target_ulong VAR_4)

{

    SegmentCache *dt;

    target_ulong ptr;

    int VAR_5, VAR_6, VAR_7;

    uint32_t e2;



    dt = &VAR_0->idt;

    if (VAR_0->hflags & HF_LMA_MASK) {

        VAR_7 = 4;

    } else {

        VAR_7 = 3;

    }

    ptr = dt->base + (VAR_1 << VAR_7);

    e2 = cpu_ldl_kernel(VAR_0, ptr + 4);



    VAR_5 = (e2 >> DESC_DPL_SHIFT) & 3;

    VAR_6 = VAR_0->hflags & HF_CPL_MASK;

    

    if (VAR_2 && VAR_5 < VAR_6) {

        raise_exception_err(VAR_0, EXCP0D_GPF, (VAR_1 << VAR_7) + 2);

    }



    





    if (VAR_2 || VAR_1 == EXCP_SYSCALL) {

        VAR_0->eip = VAR_4;

    }

}

static void FUNC_0(CPUX86State *VAR_0, int VAR_1, int VAR_2,
int VAR_3, target_ulong VAR_4)
{ SegmentCache *dt; target_ulong ptr; int VAR_5, VAR_6, VAR_7; uint32_t e2; dt = &VAR_0->idt; if (VAR_0->hflags & HF_LMA_MASK) { VAR_7 = 4; } else { VAR_7 = 3; } ptr = dt->base + (VAR_1 << VAR_7); e2 = cpu_ldl_kernel(VAR_0, ptr + 4); VAR_5 = (e2 >> DESC_DPL_SHIFT) & 3; VAR_6 = VAR_0->hflags & HF_CPL_MASK; if (VAR_2 && VAR_5 < VAR_6) { raise_exception_err(VAR_0, EXCP0D_GPF, (VAR_1 << VAR_7) + 2); } if (VAR_2 || VAR_1 == EXCP_SYSCALL) { VAR_0->eip = VAR_4; } }