s390/diag: 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>
This commit is contained in:
parent
75c89a2bc6
commit
3c45a07bee
|
@ -141,16 +141,15 @@ EXPORT_SYMBOL(diag14);
|
|||
|
||||
static inline int __diag204(unsigned long *subcode, unsigned long size, void *addr)
|
||||
{
|
||||
register unsigned long _subcode asm("0") = *subcode;
|
||||
register unsigned long _size asm("1") = size;
|
||||
union register_pair rp = { .even = *subcode, .odd = size };
|
||||
|
||||
asm volatile(
|
||||
" diag %2,%0,0x204\n"
|
||||
" diag %[addr],%[rp],0x204\n"
|
||||
"0: nopr %%r7\n"
|
||||
EX_TABLE(0b,0b)
|
||||
: "+d" (_subcode), "+d" (_size) : "d" (addr) : "memory");
|
||||
*subcode = _subcode;
|
||||
return _size;
|
||||
: [rp] "+&d" (rp.pair) : [addr] "d" (addr) : "memory");
|
||||
*subcode = rp.even;
|
||||
return rp.odd;
|
||||
}
|
||||
|
||||
int diag204(unsigned long subcode, unsigned long size, void *addr)
|
||||
|
|
Loading…
Reference in New Issue