summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2021-06-14 22:32:21 +0200
committerVasily Gorbik <gor@linux.ibm.com>2021-06-18 16:41:24 +0200
commit5a4e0f58e2d959e2de0f0f1ddaa169e60711d2f0 (patch)
tree9eb660e28d051a956491b253722247192060d494
parentda9057576785aaab52e706e76c0475c85b77ec14 (diff)
downloadlinux-stable-5a4e0f58e2d959e2de0f0f1ddaa169e60711d2f0.tar.gz
linux-stable-5a4e0f58e2d959e2de0f0f1ddaa169e60711d2f0.tar.bz2
linux-stable-5a4e0f58e2d959e2de0f0f1ddaa169e60711d2f0.zip
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>
-rw-r--r--arch/s390/kernel/ipl.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index dba04fbc37a2..9ae33977e0b7 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -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)