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>
This commit is contained in:
Родитель
da90575767
Коммит
5a4e0f58e2
|
@ -162,16 +162,18 @@ static bool reipl_ccw_clear;
|
|||
|
||||
static inline int __diag308(unsigned long subcode, void *addr)
|
||||
{
|
||||
register unsigned long _addr asm("0") = (unsigned long) addr;
|
||||
register unsigned long _rc asm("1") = 0;
|
||||
union register_pair r1;
|
||||
|
||||
r1.even = (unsigned long) addr;
|
||||
r1.odd = 0;
|
||||
asm volatile(
|
||||
" diag %0,%2,0x308\n"
|
||||
" diag %[r1],%[subcode],0x308\n"
|
||||
"0: nopr %%r7\n"
|
||||
EX_TABLE(0b,0b)
|
||||
: "+d" (_addr), "+d" (_rc)
|
||||
: "d" (subcode) : "cc", "memory");
|
||||
return _rc;
|
||||
: [r1] "+&d" (r1.pair)
|
||||
: [subcode] "d" (subcode)
|
||||
: "cc", "memory");
|
||||
return r1.odd;
|
||||
}
|
||||
|
||||
int diag308(unsigned long subcode, void *addr)
|
||||
|
|
Загрузка…
Ссылка в новой задаче