diff options
| -rw-r--r-- | drivers/s390/block/dasd_diag.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c index ab782bb46ac1..e810e4a44ed4 100644 --- a/drivers/s390/block/dasd_diag.c +++ b/drivers/s390/block/dasd_diag.c | |||
| @@ -65,7 +65,7 @@ static const u8 DASD_DIAG_CMS1[] = { 0xc3, 0xd4, 0xe2, 0xf1 };/* EBCDIC CMS1 */ | |||
| 65 | * resulting condition code and DIAG return code. */ | 65 | * resulting condition code and DIAG return code. */ |
| 66 | static inline int dia250(void *iob, int cmd) | 66 | static inline int dia250(void *iob, int cmd) |
| 67 | { | 67 | { |
| 68 | register unsigned long reg0 asm ("0") = (unsigned long) iob; | 68 | register unsigned long reg2 asm ("2") = (unsigned long) iob; |
| 69 | typedef union { | 69 | typedef union { |
| 70 | struct dasd_diag_init_io init_io; | 70 | struct dasd_diag_init_io init_io; |
| 71 | struct dasd_diag_rw_io rw_io; | 71 | struct dasd_diag_rw_io rw_io; |
| @@ -74,15 +74,15 @@ static inline int dia250(void *iob, int cmd) | |||
| 74 | 74 | ||
| 75 | rc = 3; | 75 | rc = 3; |
| 76 | asm volatile( | 76 | asm volatile( |
| 77 | " diag 0,%2,0x250\n" | 77 | " diag 2,%2,0x250\n" |
| 78 | "0: ipm %0\n" | 78 | "0: ipm %0\n" |
| 79 | " srl %0,28\n" | 79 | " srl %0,28\n" |
| 80 | " or %0,1\n" | 80 | " or %0,3\n" |
| 81 | "1:\n" | 81 | "1:\n" |
| 82 | EX_TABLE(0b,1b) | 82 | EX_TABLE(0b,1b) |
| 83 | : "+d" (rc), "=m" (*(addr_type *) iob) | 83 | : "+d" (rc), "=m" (*(addr_type *) iob) |
| 84 | : "d" (cmd), "d" (reg0), "m" (*(addr_type *) iob) | 84 | : "d" (cmd), "d" (reg2), "m" (*(addr_type *) iob) |
| 85 | : "1", "cc"); | 85 | : "3", "cc"); |
| 86 | return rc; | 86 | return rc; |
| 87 | } | 87 | } |
| 88 | 88 | ||
