Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Heiko Carstens and committed by
Vasily Gorbik
a29a6b5a 3c45a07b

+6 -4
+6 -4
arch/s390/include/asm/checksum.h
··· 29 29 */ 30 30 static inline __wsum csum_partial(const void *buff, int len, __wsum sum) 31 31 { 32 - register unsigned long reg2 asm("2") = (unsigned long) buff; 33 - register unsigned long reg3 asm("3") = (unsigned long) len; 32 + union register_pair rp = { 33 + .even = (unsigned long) buff, 34 + .odd = (unsigned long) len, 35 + }; 34 36 35 37 asm volatile( 36 - "0: cksm %0,%1\n" /* do checksum on longs */ 38 + "0: cksm %[sum],%[rp]\n" 37 39 " jo 0b\n" 38 - : "+d" (sum), "+d" (reg2), "+d" (reg3) : : "cc", "memory"); 40 + : [sum] "+&d" (sum), [rp] "+&d" (rp.pair) : : "cc", "memory"); 39 41 return sum; 40 42 } 41 43