]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/ia64/hp/sim/simscsi.c
Merge ../linux-2.6
[linux-2.6-omap-h63xx.git] / arch / ia64 / hp / sim / simscsi.c
index a18983a3c9347286670f47cfcc3267c521f3dc35..8f0a16a79a677c8830b5f5385eb0559fc08fe934 100644 (file)
@@ -151,7 +151,7 @@ static void
 simscsi_sg_readwrite (struct scsi_cmnd *sc, int mode, unsigned long offset)
 {
        int list_len = sc->use_sg;
-       struct scatterlist *sl = (struct scatterlist *)sc->buffer;
+       struct scatterlist *sl = (struct scatterlist *)sc->request_buffer;
        struct disk_stat stat;
        struct disk_req req;
 
@@ -205,10 +205,11 @@ simscsi_get_disk_size (int fd)
        char buf[512];
 
        /*
-        * This is a bit kludgey: the simulator doesn't provide a direct way of determining
-        * the disk size, so we do a binary search, assuming a maximum disk size of 4GB.
+        * This is a bit kludgey: the simulator doesn't provide a
+        * direct way of determining the disk size, so we do a binary
+        * search, assuming a maximum disk size of 128GB.
         */
-       for (bit = (4UL << 30)/512; bit != 0; bit >>= 1) {
+       for (bit = (128UL << 30)/512; bit != 0; bit >>= 1) {
                req.addr = __pa(&buf);
                req.len = sizeof(buf);
                ia64_ssc(fd, 1, __pa(&req), ((sectors | bit) - 1)*512, SSC_READ);
@@ -225,8 +226,10 @@ simscsi_readwrite10 (struct scsi_cmnd *sc, int mode)
 {
        unsigned long offset;
 
-       offset = (  (sc->cmnd[2] << 24) | (sc->cmnd[3] << 16)
-                 | (sc->cmnd[4] <<  8) | (sc->cmnd[5] <<  0))*512;
+       offset = (((unsigned long)sc->cmnd[2] << 24) 
+               | ((unsigned long)sc->cmnd[3] << 16)
+               | ((unsigned long)sc->cmnd[4] <<  8) 
+               | ((unsigned long)sc->cmnd[5] <<  0))*512UL;
        if (sc->use_sg > 0)
                simscsi_sg_readwrite(sc, mode, offset);
        else
@@ -241,7 +244,8 @@ static void simscsi_fillresult(struct scsi_cmnd *sc, char *buf, unsigned len)
 
        if (scatterlen == 0)
                memcpy(sc->request_buffer, buf, len);
-       else for (slp = (struct scatterlist *)sc->buffer; scatterlen-- > 0 && len > 0; slp++) {
+       else for (slp = (struct scatterlist *)sc->request_buffer;
+                 scatterlen-- > 0 && len > 0; slp++) {
                unsigned thislen = min(len, slp->length);
 
                memcpy(page_address(slp->page) + slp->offset, buf, thislen);