Commit 3c45a07b authored by Heiko Carstens's avatar Heiko Carstens Committed by Vasily Gorbik

s390/diag: use register pair instead of register asm

Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 75c89a2b
...@@ -141,16 +141,15 @@ EXPORT_SYMBOL(diag14); ...@@ -141,16 +141,15 @@ EXPORT_SYMBOL(diag14);
static inline int __diag204(unsigned long *subcode, unsigned long size, void *addr) static inline int __diag204(unsigned long *subcode, unsigned long size, void *addr)
{ {
register unsigned long _subcode asm("0") = *subcode; union register_pair rp = { .even = *subcode, .odd = size };
register unsigned long _size asm("1") = size;
asm volatile( asm volatile(
" diag %2,%0,0x204\n" " diag %[addr],%[rp],0x204\n"
"0: nopr %%r7\n" "0: nopr %%r7\n"
EX_TABLE(0b,0b) EX_TABLE(0b,0b)
: "+d" (_subcode), "+d" (_size) : "d" (addr) : "memory"); : [rp] "+&d" (rp.pair) : [addr] "d" (addr) : "memory");
*subcode = _subcode; *subcode = rp.even;
return _size; return rp.odd;
} }
int diag204(unsigned long subcode, unsigned long size, void *addr) int diag204(unsigned long subcode, unsigned long size, void *addr)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment