hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/s390/cio/qdio_main.c
....@@ -31,38 +31,41 @@
3131 MODULE_LICENSE("GPL");
3232
3333 static inline int do_siga_sync(unsigned long schid,
34
- unsigned int out_mask, unsigned int in_mask,
34
+ unsigned long out_mask, unsigned long in_mask,
3535 unsigned int fc)
3636 {
37
- register unsigned long __fc asm ("0") = fc;
38
- register unsigned long __schid asm ("1") = schid;
39
- register unsigned long out asm ("2") = out_mask;
40
- register unsigned long in asm ("3") = in_mask;
4137 int cc;
4238
4339 asm volatile(
40
+ " lgr 0,%[fc]\n"
41
+ " lgr 1,%[schid]\n"
42
+ " lgr 2,%[out]\n"
43
+ " lgr 3,%[in]\n"
4444 " siga 0\n"
45
- " ipm %0\n"
46
- " srl %0,28\n"
47
- : "=d" (cc)
48
- : "d" (__fc), "d" (__schid), "d" (out), "d" (in) : "cc");
45
+ " ipm %[cc]\n"
46
+ " srl %[cc],28\n"
47
+ : [cc] "=&d" (cc)
48
+ : [fc] "d" (fc), [schid] "d" (schid),
49
+ [out] "d" (out_mask), [in] "d" (in_mask)
50
+ : "cc", "0", "1", "2", "3");
4951 return cc;
5052 }
5153
52
-static inline int do_siga_input(unsigned long schid, unsigned int mask,
53
- unsigned int fc)
54
+static inline int do_siga_input(unsigned long schid, unsigned long mask,
55
+ unsigned long fc)
5456 {
55
- register unsigned long __fc asm ("0") = fc;
56
- register unsigned long __schid asm ("1") = schid;
57
- register unsigned long __mask asm ("2") = mask;
5857 int cc;
5958
6059 asm volatile(
60
+ " lgr 0,%[fc]\n"
61
+ " lgr 1,%[schid]\n"
62
+ " lgr 2,%[mask]\n"
6163 " siga 0\n"
62
- " ipm %0\n"
63
- " srl %0,28\n"
64
- : "=d" (cc)
65
- : "d" (__fc), "d" (__schid), "d" (__mask) : "cc");
64
+ " ipm %[cc]\n"
65
+ " srl %[cc],28\n"
66
+ : [cc] "=&d" (cc)
67
+ : [fc] "d" (fc), [schid] "d" (schid), [mask] "d" (mask)
68
+ : "cc", "0", "1", "2");
6669 return cc;
6770 }
6871
....@@ -78,23 +81,24 @@
7881 * Note: For IQDC unicast queues only the highest priority queue is processed.
7982 */
8083 static inline int do_siga_output(unsigned long schid, unsigned long mask,
81
- unsigned int *bb, unsigned int fc,
84
+ unsigned int *bb, unsigned long fc,
8285 unsigned long aob)
8386 {
84
- register unsigned long __fc asm("0") = fc;
85
- register unsigned long __schid asm("1") = schid;
86
- register unsigned long __mask asm("2") = mask;
87
- register unsigned long __aob asm("3") = aob;
8887 int cc;
8988
9089 asm volatile(
90
+ " lgr 0,%[fc]\n"
91
+ " lgr 1,%[schid]\n"
92
+ " lgr 2,%[mask]\n"
93
+ " lgr 3,%[aob]\n"
9194 " siga 0\n"
92
- " ipm %0\n"
93
- " srl %0,28\n"
94
- : "=d" (cc), "+d" (__fc), "+d" (__aob)
95
- : "d" (__schid), "d" (__mask)
96
- : "cc");
97
- *bb = __fc >> 31;
95
+ " lgr %[fc],0\n"
96
+ " ipm %[cc]\n"
97
+ " srl %[cc],28\n"
98
+ : [cc] "=&d" (cc), [fc] "+&d" (fc)
99
+ : [schid] "d" (schid), [mask] "d" (mask), [aob] "d" (aob)
100
+ : "cc", "0", "1", "2", "3");
101
+ *bb = fc >> 31;
98102 return cc;
99103 }
100104