.. | .. |
---|
88 | 88 | static inline int do_sqbs(u64 token, unsigned char state, int queue, |
---|
89 | 89 | int *start, int *count) |
---|
90 | 90 | { |
---|
91 | | - register unsigned long _ccq asm ("0") = *count; |
---|
92 | | - register unsigned long _token asm ("1") = token; |
---|
93 | 91 | unsigned long _queuestart = ((unsigned long)queue << 32) | *start; |
---|
| 92 | + unsigned long _ccq = *count; |
---|
94 | 93 | |
---|
95 | 94 | 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"); |
---|
100 | 100 | *count = _ccq & 0xff; |
---|
101 | 101 | *start = _queuestart & 0xff; |
---|
102 | 102 | |
---|
.. | .. |
---|
106 | 106 | static inline int do_eqbs(u64 token, unsigned char *state, int queue, |
---|
107 | 107 | int *start, int *count, int ack) |
---|
108 | 108 | { |
---|
109 | | - register unsigned long _ccq asm ("0") = *count; |
---|
110 | | - register unsigned long _token asm ("1") = token; |
---|
111 | 109 | unsigned long _queuestart = ((unsigned long)queue << 32) | *start; |
---|
112 | 110 | unsigned long _state = (unsigned long)ack << 63; |
---|
| 111 | + unsigned long _ccq = *count; |
---|
113 | 112 | |
---|
114 | 113 | 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"); |
---|
119 | 120 | *count = _ccq & 0xff; |
---|
120 | 121 | *start = _queuestart & 0xff; |
---|
121 | 122 | *state = _state & 0xff; |
---|