]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/s390/block/xpram.c
[MTD] cmdlinepart: Missing partition info is not an error
[linux-2.6-omap-h63xx.git] / drivers / s390 / block / xpram.c
index cab2c736683a089672f5d5283926353d5d66605b..f231bc21b1cafd3465dcf97cc3c4f6618b5b804c 100644 (file)
@@ -89,28 +89,15 @@ MODULE_LICENSE("GPL");
  */
 static int xpram_page_in (unsigned long page_addr, unsigned int xpage_index)
 {
-       int cc;
+       int cc = 2;     /* return unused cc 2 if pgin traps */
 
-       __asm__ __volatile__ (
-               "   lhi   %0,2\n"  /* return unused cc 2 if pgin traps */
-               "   .insn rre,0xb22e0000,%1,%2\n"  /* pgin %1,%2 */
-                "0: ipm   %0\n"
-               "   srl   %0,28\n"
+       asm volatile(
+               "       .insn   rre,0xb22e0000,%1,%2\n"  /* pgin %1,%2 */
+               "0:     ipm     %0\n"
+               "       srl     %0,28\n"
                "1:\n"
-#ifndef CONFIG_64BIT
-               ".section __ex_table,\"a\"\n"
-               "   .align 4\n"
-               "   .long  0b,1b\n"
-               ".previous"
-#else
-                ".section __ex_table,\"a\"\n"
-                "   .align 8\n"
-                "   .quad 0b,1b\n"
-                ".previous"
-#endif
-               : "=&d" (cc) 
-               : "a" (__pa(page_addr)), "a" (xpage_index) 
-               : "cc" );
+               EX_TABLE(0b,1b)
+               : "+d" (cc) : "a" (__pa(page_addr)), "d" (xpage_index) : "cc");
        if (cc == 3)
                return -ENXIO;
        if (cc == 2) {
@@ -137,28 +124,15 @@ static int xpram_page_in (unsigned long page_addr, unsigned int xpage_index)
  */
 static long xpram_page_out (unsigned long page_addr, unsigned int xpage_index)
 {
-       int cc;
+       int cc = 2;     /* return unused cc 2 if pgin traps */
 
-       __asm__ __volatile__ (
-               "   lhi   %0,2\n"  /* return unused cc 2 if pgout traps */
-               "   .insn rre,0xb22f0000,%1,%2\n"  /* pgout %1,%2 */
-                "0: ipm   %0\n"
-               "   srl   %0,28\n"
+       asm volatile(
+               "       .insn   rre,0xb22f0000,%1,%2\n"  /* pgout %1,%2 */
+               "0:     ipm     %0\n"
+               "       srl     %0,28\n"
                "1:\n"
-#ifndef CONFIG_64BIT
-               ".section __ex_table,\"a\"\n"
-               "   .align 4\n"
-               "   .long  0b,1b\n"
-               ".previous"
-#else
-                ".section __ex_table,\"a\"\n"
-                "   .align 8\n"
-                "   .quad 0b,1b\n"
-                ".previous"
-#endif
-               : "=&d" (cc) 
-               : "a" (__pa(page_addr)), "a" (xpage_index) 
-               : "cc" );
+               EX_TABLE(0b,1b)
+               : "+d" (cc) : "a" (__pa(page_addr)), "d" (xpage_index) : "cc");
        if (cc == 3)
                return -ENXIO;
        if (cc == 2) {
@@ -217,7 +191,7 @@ static unsigned long __init xpram_highest_page_index(void)
 /*
  * Block device make request function.
  */
-static int xpram_make_request(request_queue_t *q, struct bio *bio)
+static int xpram_make_request(struct request_queue *q, struct bio *bio)
 {
        xpram_device_t *xdev = bio->bi_bdev->bd_disk->private_data;
        struct bio_vec *bvec;
@@ -256,12 +230,10 @@ static int xpram_make_request(request_queue_t *q, struct bio *bio)
                }
        }
        set_bit(BIO_UPTODATE, &bio->bi_flags);
-       bytes = bio->bi_size;
-       bio->bi_size = 0;
-       bio->bi_end_io(bio, bytes, 0);
+       bio_endio(bio, 0);
        return 0;
 fail:
-       bio_io_error(bio, bio->bi_size);
+       bio_io_error(bio);
        return 0;
 }