static int handle_instruction(S390CPU *cpu, struct kvm_run *run)

{

    unsigned int ipa0 = (run->s390_sieic.ipa & 0xff00);

    uint8_t ipa1 = run->s390_sieic.ipa & 0x00ff;

    int r = -1;



    DPRINTF("handle_instruction 0x%x 0x%x\n",

            run->s390_sieic.ipa, run->s390_sieic.ipb);

    switch (ipa0) {

    case IPA0_B2:

        r = handle_b2(cpu, run, ipa1);

        break;

    case IPA0_B9:

        r = handle_b9(cpu, run, ipa1);

        break;

    case IPA0_EB:

        r = handle_eb(cpu, run, run->s390_sieic.ipb & 0xff);

        break;

    case IPA0_E3:

        r = handle_e3(cpu, run, run->s390_sieic.ipb & 0xff);

        break;

    case IPA0_DIAG:

        r = handle_diag(cpu, run, run->s390_sieic.ipb);

        break;

    case IPA0_SIGP:

        r = handle_sigp(cpu, ipa1, run->s390_sieic.ipb);

        break;

    }



    if (r < 0) {

        r = 0;

        kvm_s390_program_interrupt(cpu, PGM_OPERATION);

    }



    return r;

}

static int handle_instruction(S390CPU *cpu, struct kvm_run *run)

{

    unsigned int ipa0 = (run->s390_sieic.ipa & 0xff00);

    uint8_t ipa1 = run->s390_sieic.ipa & 0x00ff;

    int r = -1;



    DPRINTF("handle_instruction 0x%x 0x%x\n",

            run->s390_sieic.ipa, run->s390_sieic.ipb);

    switch (ipa0) {

    case IPA0_B2:

        r = handle_b2(cpu, run, ipa1);

        break;

    case IPA0_B9:

        r = handle_b9(cpu, run, ipa1);

        break;

    case IPA0_EB:

        r = handle_eb(cpu, run, run->s390_sieic.ipb & 0xff);

        break;

    case IPA0_E3:

        r = handle_e3(cpu, run, run->s390_sieic.ipb & 0xff);

        break;

    case IPA0_DIAG:

        r = handle_diag(cpu, run, run->s390_sieic.ipb);

        break;

    case IPA0_SIGP:

        r = handle_sigp(cpu, ipa1, run->s390_sieic.ipb);

        break;

    }



    if (r < 0) {

        r = 0;

        kvm_s390_program_interrupt(cpu, PGM_OPERATION);

    }



    return r;

}

static int FUNC_0(S390CPU *VAR_0, struct kvm_run *VAR_1)

{

    unsigned int VAR_2 = (VAR_1->s390_sieic.ipa & 0xff00);

    uint8_t ipa1 = VAR_1->s390_sieic.ipa & 0x00ff;

    int VAR_3 = -1;



    DPRINTF("FUNC_0 0x%x 0x%x\n",

            VAR_1->s390_sieic.ipa, VAR_1->s390_sieic.ipb);

    switch (VAR_2) {

    case IPA0_B2:

        VAR_3 = handle_b2(VAR_0, VAR_1, ipa1);

        break;

    case IPA0_B9:

        VAR_3 = handle_b9(VAR_0, VAR_1, ipa1);

        break;

    case IPA0_EB:

        VAR_3 = handle_eb(VAR_0, VAR_1, VAR_1->s390_sieic.ipb & 0xff);

        break;

    case IPA0_E3:

        VAR_3 = handle_e3(VAR_0, VAR_1, VAR_1->s390_sieic.ipb & 0xff);

        break;

    case IPA0_DIAG:

        VAR_3 = handle_diag(VAR_0, VAR_1, VAR_1->s390_sieic.ipb);

        break;

    case IPA0_SIGP:

        VAR_3 = handle_sigp(VAR_0, ipa1, VAR_1->s390_sieic.ipb);

        break;

    }



    if (VAR_3 < 0) {

        VAR_3 = 0;

        kvm_s390_program_interrupt(VAR_0, PGM_OPERATION);

    }



    return VAR_3;

}

static int FUNC_0(S390CPU *VAR_0, struct kvm_run *VAR_1)
{ unsigned int VAR_2 = (VAR_1->s390_sieic.ipa & 0xff00); uint8_t ipa1 = VAR_1->s390_sieic.ipa & 0x00ff; int VAR_3 = -1; DPRINTF("FUNC_0 0x%x 0x%x\n",
VAR_1->s390_sieic.ipa, VAR_1->s390_sieic.ipb); switch (VAR_2) { case IPA0_B2:
VAR_3 = handle_b2(VAR_0, VAR_1, ipa1); break; case IPA0_B9:
VAR_3 = handle_b9(VAR_0, VAR_1, ipa1); break; case IPA0_EB:
VAR_3 = handle_eb(VAR_0, VAR_1, VAR_1->s390_sieic.ipb & 0xff); break; case IPA0_E3:
VAR_3 = handle_e3(VAR_0, VAR_1, VAR_1->s390_sieic.ipb & 0xff); break; case IPA0_DIAG:
VAR_3 = handle_diag(VAR_0, VAR_1, VAR_1->s390_sieic.ipb); break; case IPA0_SIGP:
VAR_3 = handle_sigp(VAR_0, ipa1, VAR_1->s390_sieic.ipb); break; } if (VAR_3 < 0) { VAR_3 = 0; kvm_s390_program_interrupt(VAR_0, PGM_OPERATION); } return VAR_3; }