static int vscsi_srp_direct_data(VSCSIState *s, vscsi_req *req,

                                 uint8_t *buf, uint32_t len)

{

    struct srp_direct_buf *md = req->cur_desc;

    uint32_t llen;

    int rc;



    dprintf("VSCSI: direct segment 0x%x bytes, va=0x%llx desc len=0x%x\n",

            len, (unsigned long long)md->va, md->len);



    llen = MIN(len, md->len);

    if (llen) {

        if (req->writing) { /* writing = to device = reading from memory */

            rc = spapr_tce_dma_read(&s->vdev, md->va, buf, llen);

        } else {

            rc = spapr_tce_dma_write(&s->vdev, md->va, buf, llen);

        }

    }

    md->len -= llen;

    md->va += llen;



    if (rc) {

        return -1;

    }

    return llen;

}

static int vscsi_srp_direct_data(VSCSIState *s, vscsi_req *req,

                                 uint8_t *buf, uint32_t len)

{

    struct srp_direct_buf *md = req->cur_desc;

    uint32_t llen;

    int rc;



    dprintf("VSCSI: direct segment 0x%x bytes, va=0x%llx desc len=0x%x\n",

            len, (unsigned long long)md->va, md->len);



    llen = MIN(len, md->len);

    if (llen) {

        if (req->writing) { 

            rc = spapr_tce_dma_read(&s->vdev, md->va, buf, llen);

        } else {

            rc = spapr_tce_dma_write(&s->vdev, md->va, buf, llen);

        }

    }

    md->len -= llen;

    md->va += llen;



    if (rc) {

        return -1;

    }

    return llen;

}

    int rc;
static int FUNC_0(VSCSIState *VAR_0, vscsi_req *VAR_1,

                                 uint8_t *VAR_2, uint32_t VAR_3)

{

    struct srp_direct_buf *VAR_4 = VAR_1->cur_desc;

    uint32_t llen;

    int VAR_5;



    dprintf("VSCSI: direct segment 0x%x bytes, va=0x%llx desc VAR_3=0x%x\n",

            VAR_3, (unsigned long long)VAR_4->va, VAR_4->VAR_3);



    llen = MIN(VAR_3, VAR_4->VAR_3);

    if (llen) {

        if (VAR_1->writing) { 

            VAR_5 = spapr_tce_dma_read(&VAR_0->vdev, VAR_4->va, VAR_2, llen);

        } else {

            VAR_5 = spapr_tce_dma_write(&VAR_0->vdev, VAR_4->va, VAR_2, llen);

        }

    }

    VAR_4->VAR_3 -= llen;

    VAR_4->va += llen;



    if (VAR_5) {

        return -1;

    }

    return llen;

}

static int FUNC_0(VSCSIState *VAR_0, vscsi_req *VAR_1,
uint8_t *VAR_2, uint32_t VAR_3)
{ struct srp_direct_buf *VAR_4 = VAR_1->cur_desc; uint32_t llen; int VAR_5; dprintf("VSCSI: direct segment 0x%x bytes, va=0x%llx desc VAR_3=0x%x\n",
VAR_3, (unsigned long long)VAR_4->va, VAR_4->VAR_3); llen = MIN(VAR_3, VAR_4->VAR_3); if (llen) { if (VAR_1->writing) { VAR_5 = spapr_tce_dma_read(&VAR_0->vdev, VAR_4->va, VAR_2, llen); } else { VAR_5 = spapr_tce_dma_write(&VAR_0->vdev, VAR_4->va, VAR_2, llen); } } VAR_4->VAR_3 -= llen; VAR_4->va += llen; if (VAR_5) { return -1; } return llen; }