diff options
author | Heiko Carstens | 2021-06-09 22:59:13 +0200 |
---|---|---|
committer | Vasily Gorbik | 2021-06-18 16:41:22 +0200 |
commit | 6a7b4e4ee1d9f7444dc7fe3ec1b3cf441a3ce9b4 (patch) | |
tree | 68f25c57c89eeda25cedd6f2cbc1b8d6e6099996 /arch/s390/kernel/sthyi.c | |
parent | dda74578e7da917fdf2e16608c1f8ad2e87c451f (diff) |
s390/sthyi: 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>
Diffstat (limited to 'arch/s390/kernel/sthyi.c')
-rw-r--r-- | arch/s390/kernel/sthyi.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/s390/kernel/sthyi.c b/arch/s390/kernel/sthyi.c index 888cc2f166db..4d141e2c132e 100644 --- a/arch/s390/kernel/sthyi.c +++ b/arch/s390/kernel/sthyi.c @@ -395,19 +395,18 @@ out: static int sthyi(u64 vaddr, u64 *rc) { - register u64 code asm("0") = 0; - register u64 addr asm("2") = vaddr; - register u64 rcode asm("3"); + union register_pair r1 = { .even = 0, }; /* subcode */ + union register_pair r2 = { .even = vaddr, }; int cc; asm volatile( - ".insn rre,0xB2560000,%[code],%[addr]\n" + ".insn rre,0xB2560000,%[r1],%[r2]\n" "ipm %[cc]\n" "srl %[cc],28\n" - : [cc] "=d" (cc), "=d" (rcode) - : [code] "d" (code), [addr] "a" (addr) + : [cc] "=&d" (cc), [r2] "+&d" (r2.pair) + : [r1] "d" (r1.pair) : "memory", "cc"); - *rc = rcode; + *rc = r2.odd; return cc; } |