Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

s390/ipl: use register pair instead of register asm

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>

authored by

Heiko Carstens and committed by
Vasily Gorbik
5a4e0f58 da905757

+8 -6
+8 -6
arch/s390/kernel/ipl.c
··· 162 162 163 163 static inline int __diag308(unsigned long subcode, void *addr) 164 164 { 165 - register unsigned long _addr asm("0") = (unsigned long) addr; 166 - register unsigned long _rc asm("1") = 0; 165 + union register_pair r1; 167 166 167 + r1.even = (unsigned long) addr; 168 + r1.odd = 0; 168 169 asm volatile( 169 - " diag %0,%2,0x308\n" 170 + " diag %[r1],%[subcode],0x308\n" 170 171 "0: nopr %%r7\n" 171 172 EX_TABLE(0b,0b) 172 - : "+d" (_addr), "+d" (_rc) 173 - : "d" (subcode) : "cc", "memory"); 174 - return _rc; 173 + : [r1] "+&d" (r1.pair) 174 + : [subcode] "d" (subcode) 175 + : "cc", "memory"); 176 + return r1.odd; 175 177 } 176 178 177 179 int diag308(unsigned long subcode, void *addr)