static uint32_t tpm_tis_data_read(TPMState *s, uint8_t locty)

{

    TPMTISEmuState *tis = &s->s.tis;

    uint32_t ret = TPM_TIS_NO_DATA_BYTE;

    uint16_t len;



    if ((tis->loc[locty].sts & TPM_TIS_STS_DATA_AVAILABLE)) {

        len = tpm_tis_get_size_from_buffer(&tis->loc[locty].r_buffer);



        ret = tis->loc[locty].r_buffer.buffer[tis->loc[locty].r_offset++];

        if (tis->loc[locty].r_offset >= len) {

            /* got last byte */

            tis->loc[locty].sts = TPM_TIS_STS_VALID;

#ifdef RAISE_STS_IRQ

            tpm_tis_raise_irq(s, locty, TPM_TIS_INT_STS_VALID);

#endif

        }

        DPRINTF("tpm_tis: tpm_tis_data_read byte 0x%02x   [%d]\n",

                ret, tis->loc[locty].r_offset-1);

    }



    return ret;

}

static uint32_t tpm_tis_data_read(TPMState *s, uint8_t locty)

{

    TPMTISEmuState *tis = &s->s.tis;

    uint32_t ret = TPM_TIS_NO_DATA_BYTE;

    uint16_t len;



    if ((tis->loc[locty].sts & TPM_TIS_STS_DATA_AVAILABLE)) {

        len = tpm_tis_get_size_from_buffer(&tis->loc[locty].r_buffer);



        ret = tis->loc[locty].r_buffer.buffer[tis->loc[locty].r_offset++];

        if (tis->loc[locty].r_offset >= len) {

            

            tis->loc[locty].sts = TPM_TIS_STS_VALID;

#ifdef RAISE_STS_IRQ

            tpm_tis_raise_irq(s, locty, TPM_TIS_INT_STS_VALID);

#endif

        }

        DPRINTF("tpm_tis: tpm_tis_data_read byte 0x%02x   [%d]\n",

                ret, tis->loc[locty].r_offset-1);

    }



    return ret;

}

static uint32_t FUNC_0(TPMState *s, uint8_t locty)

{

    TPMTISEmuState *tis = &s->s.tis;

    uint32_t ret = TPM_TIS_NO_DATA_BYTE;

    uint16_t len;



    if ((tis->loc[locty].sts & TPM_TIS_STS_DATA_AVAILABLE)) {

        len = tpm_tis_get_size_from_buffer(&tis->loc[locty].r_buffer);



        ret = tis->loc[locty].r_buffer.buffer[tis->loc[locty].r_offset++];

        if (tis->loc[locty].r_offset >= len) {

            

            tis->loc[locty].sts = TPM_TIS_STS_VALID;

#ifdef RAISE_STS_IRQ

            tpm_tis_raise_irq(s, locty, TPM_TIS_INT_STS_VALID);

#endif

        }

        DPRINTF("tpm_tis: FUNC_0 byte 0x%02x   [%d]\n",

                ret, tis->loc[locty].r_offset-1);

    }



    return ret;

}

static uint32_t FUNC_0(TPMState *s, uint8_t locty)
{ TPMTISEmuState *tis = &s->s.tis; uint32_t ret = TPM_TIS_NO_DATA_BYTE; uint16_t len; if ((tis->loc[locty].sts & TPM_TIS_STS_DATA_AVAILABLE)) { len = tpm_tis_get_size_from_buffer(&tis->loc[locty].r_buffer); ret = tis->loc[locty].r_buffer.buffer[tis->loc[locty].r_offset++]; if (tis->loc[locty].r_offset >= len) { tis->loc[locty].sts = TPM_TIS_STS_VALID; #ifdef RAISE_STS_IRQ
tpm_tis_raise_irq(s, locty, TPM_TIS_INT_STS_VALID); #endif
} DPRINTF("tpm_tis: FUNC_0 byte 0x%02x   [%d]\n",
ret, tis->loc[locty].r_offset-1); } return ret; }