diff options
author | Heiko Carstens <hca@linux.ibm.com> | 2021-06-09 22:59:13 +0200 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2021-06-18 16:41:22 +0200 |
commit | 25130c1a9e99c7b10af6d542d62808476a0dff24 (patch) | |
tree | a506e5cd4ee5b9d11f948b1e98fb34aa78a8a8bc | |
parent | 6a7b4e4ee1d9f7444dc7fe3ec1b3cf441a3ce9b4 (diff) | |
download | linux-25130c1a9e99c7b10af6d542d62808476a0dff24.tar.bz2 |
s390/sigp: 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/include/asm/sigp.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/s390/include/asm/sigp.h b/arch/s390/include/asm/sigp.h index 53ee795cd3d3..edee63da08e7 100644 --- a/arch/s390/include/asm/sigp.h +++ b/arch/s390/include/asm/sigp.h @@ -41,15 +41,17 @@ static inline int ____pcpu_sigp(u16 addr, u8 order, unsigned long parm, u32 *status) { - register unsigned long reg1 asm ("1") = parm; + union register_pair r1 = { .odd = parm, }; int cc; asm volatile( - " sigp %1,%2,0(%3)\n" - " ipm %0\n" - " srl %0,28\n" - : "=d" (cc), "+d" (reg1) : "d" (addr), "a" (order) : "cc"); - *status = reg1; + " sigp %[r1],%[addr],0(%[order])\n" + " ipm %[cc]\n" + " srl %[cc],28\n" + : [cc] "=&d" (cc), [r1] "+&d" (r1.pair) + : [addr] "d" (addr), [order] "a" (order) + : "cc"); + *status = r1.even; return cc; } |