diff options
author | Heiko Carstens | 2021-06-09 22:59:13 +0200 |
---|---|---|
committer | Vasily Gorbik | 2021-06-18 16:41:21 +0200 |
commit | a29a6b5a925b52fbec6b10edf8a7b713fda72bf1 (patch) | |
tree | 157908e4ed8f4457fb9d7aa18abab8d9a1c97c4b | |
parent | 3c45a07bee619bb997b75b323f8d014e3efb36f8 (diff) |
s390/checksum: 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/checksum.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/s390/include/asm/checksum.h b/arch/s390/include/asm/checksum.h index a8c02cfbc712..cdd19d326345 100644 --- a/arch/s390/include/asm/checksum.h +++ b/arch/s390/include/asm/checksum.h @@ -29,13 +29,15 @@ */ static inline __wsum csum_partial(const void *buff, int len, __wsum sum) { - register unsigned long reg2 asm("2") = (unsigned long) buff; - register unsigned long reg3 asm("3") = (unsigned long) len; + union register_pair rp = { + .even = (unsigned long) buff, + .odd = (unsigned long) len, + }; asm volatile( - "0: cksm %0,%1\n" /* do checksum on longs */ + "0: cksm %[sum],%[rp]\n" " jo 0b\n" - : "+d" (sum), "+d" (reg2), "+d" (reg3) : : "cc", "memory"); + : [sum] "+&d" (sum), [rp] "+&d" (rp.pair) : : "cc", "memory"); return sum; } |