hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/s390/cio/qdio.h
....@@ -88,15 +88,15 @@
8888 static inline int do_sqbs(u64 token, unsigned char state, int queue,
8989 int *start, int *count)
9090 {
91
- register unsigned long _ccq asm ("0") = *count;
92
- register unsigned long _token asm ("1") = token;
9391 unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
92
+ unsigned long _ccq = *count;
9493
9594 asm volatile(
96
- " .insn rsy,0xeb000000008A,%1,0,0(%2)"
97
- : "+d" (_ccq), "+d" (_queuestart)
98
- : "d" ((unsigned long)state), "d" (_token)
99
- : "memory", "cc");
95
+ " lgr 1,%[token]\n"
96
+ " .insn rsy,0xeb000000008a,%[qs],%[ccq],0(%[state])"
97
+ : [ccq] "+&d" (_ccq), [qs] "+&d" (_queuestart)
98
+ : [state] "a" ((unsigned long)state), [token] "d" (token)
99
+ : "memory", "cc", "1");
100100 *count = _ccq & 0xff;
101101 *start = _queuestart & 0xff;
102102
....@@ -106,16 +106,17 @@
106106 static inline int do_eqbs(u64 token, unsigned char *state, int queue,
107107 int *start, int *count, int ack)
108108 {
109
- register unsigned long _ccq asm ("0") = *count;
110
- register unsigned long _token asm ("1") = token;
111109 unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
112110 unsigned long _state = (unsigned long)ack << 63;
111
+ unsigned long _ccq = *count;
113112
114113 asm volatile(
115
- " .insn rrf,0xB99c0000,%1,%2,0,0"
116
- : "+d" (_ccq), "+d" (_queuestart), "+d" (_state)
117
- : "d" (_token)
118
- : "memory", "cc");
114
+ " lgr 1,%[token]\n"
115
+ " .insn rrf,0xb99c0000,%[qs],%[state],%[ccq],0"
116
+ : [ccq] "+&d" (_ccq), [qs] "+&d" (_queuestart),
117
+ [state] "+&d" (_state)
118
+ : [token] "d" (token)
119
+ : "memory", "cc", "1");
119120 *count = _ccq & 0xff;
120121 *start = _queuestart & 0xff;
121122 *state = _state & 0xff;