Commit 10679e4d authored by Heiko Carstens's avatar Heiko Carstens Committed by Vasily Gorbik
Browse files

s390/uaccess: use symbolic names for inline assembly operands



Improve readability of the uaccess inline assemblies by using symbolic
names for all input and output operands.

Except for debug sections the output of "objdump -Dr" of the uaccess object
file is identical before/after this change.

Reviewed-by: default avatarGerald Schaefer <gerald.schaefer@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 89aba4c2
Loading
Loading
Loading
Loading
+54 −51
Original line number Diff line number Diff line
@@ -45,24 +45,25 @@ static unsigned long raw_copy_from_user_key(void *to, const void __user *from,
	tmp1 = -4096UL;
	asm volatile(
		"	lr	0,%[spec]\n"
		"0: mvcos 0(%2),0(%1),%0\n"
		"0:	mvcos	0(%[to]),0(%[from]),%[size]\n"
		"6:	jz	4f\n"
		"1: algr  %0,%3\n"
		"   slgr  %1,%3\n"
		"   slgr  %2,%3\n"
		"1:	algr	%[size],%[tmp1]\n"
		"	slgr	%[from],%[tmp1]\n"
		"	slgr	%[to],%[tmp1]\n"
		"	j	0b\n"
		"2: la    %4,4095(%1)\n"/* %4 = ptr + 4095 */
		"   nr    %4,%3\n"	/* %4 = (ptr + 4095) & -4096 */
		"   slgr  %4,%1\n"
		"   clgr  %0,%4\n"	/* copy crosses next page boundary? */
		"2:	la	%[tmp2],4095(%[from])\n"/* tmp2 = from + 4095 */
		"	nr	%[tmp2],%[tmp1]\n"	/* tmp2 = (from + 4095) & -4096 */
		"	slgr	%[tmp2],%[from]\n"
		"	clgr	%[size],%[tmp2]\n"	/* copy crosses next page boundary? */
		"	jnh	5f\n"
		"3: mvcos 0(%2),0(%1),%4\n"
		"7: slgr  %0,%4\n"
		"3:	mvcos	0(%[to]),0(%[from]),%[tmp2]\n"
		"7:	slgr	%[size],%[tmp2]\n"
		"	j	5f\n"
		"4: slgr  %0,%0\n"
		"4:	slgr	%[size],%[size]\n"
		"5:\n"
		EX_TABLE(0b,2b) EX_TABLE(3b,5b) EX_TABLE(6b,2b) EX_TABLE(7b,5b)
		: "+a" (size), "+a" (from), "+a" (to), "+a" (tmp1), "=a" (tmp2)
		: [size] "+a" (size), [from] "+a" (from), [to] "+a" (to),
		  [tmp1] "+a" (tmp1), [tmp2] "=a" (tmp2)
		: [spec] "d" (spec.val)
		: "cc", "memory", "0");
	return size;
@@ -105,24 +106,25 @@ static unsigned long raw_copy_to_user_key(void __user *to, const void *from,
	tmp1 = -4096UL;
	asm volatile(
		"	lr	0,%[spec]\n"
		"0: mvcos 0(%1),0(%2),%0\n"
		"0:	mvcos	0(%[to]),0(%[from]),%[size]\n"
		"6:	jz	4f\n"
		"1: algr  %0,%3\n"
		"   slgr  %1,%3\n"
		"   slgr  %2,%3\n"
		"1:	algr	%[size],%[tmp1]\n"
		"	slgr	%[to],%[tmp1]\n"
		"	slgr	%[from],%[tmp1]\n"
		"	j	0b\n"
		"2: la    %4,4095(%1)\n"/* %4 = ptr + 4095 */
		"   nr    %4,%3\n"	/* %4 = (ptr + 4095) & -4096 */
		"   slgr  %4,%1\n"
		"   clgr  %0,%4\n"	/* copy crosses next page boundary? */
		"2:	la	%[tmp2],4095(%[to])\n"	/* tmp2 = to + 4095 */
		"	nr	%[tmp2],%[tmp1]\n"	/* tmp2 = (to + 4095) & -4096 */
		"	slgr	%[tmp2],%[to]\n"
		"	clgr	%[size],%[tmp2]\n"	/* copy crosses next page boundary? */
		"	jnh	5f\n"
		"3: mvcos 0(%1),0(%2),%4\n"
		"7: slgr  %0,%4\n"
		"3:	mvcos	0(%[to]),0(%[from]),%[tmp2]\n"
		"7:	slgr	%[size],%[tmp2]\n"
		"	j	5f\n"
		"4: slgr  %0,%0\n"
		"4:	slgr	%[size],%[size]\n"
		"5:\n"
		EX_TABLE(0b,2b) EX_TABLE(3b,5b) EX_TABLE(6b,2b) EX_TABLE(7b,5b)
		: "+a" (size), "+a" (to), "+a" (from), "+a" (tmp1), "=a" (tmp2)
		: [size] "+a" (size), [to] "+a" (to), [from] "+a" (from),
		  [tmp1] "+a" (tmp1), [tmp2] "=a" (tmp2)
		: [spec] "d" (spec.val)
		: "cc", "memory", "0");
	return size;
@@ -156,24 +158,25 @@ unsigned long __clear_user(void __user *to, unsigned long size)
	tmp1 = -4096UL;
	asm volatile(
		"	lr	0,%[spec]\n"
		"0: mvcos 0(%1),0(%4),%0\n"
		"0:	mvcos	0(%[to]),0(%[zeropg]),%[size]\n"
		"6:	jz	4f\n"
		"1: algr  %0,%2\n"
		"   slgr  %1,%2\n"
		"1:	algr	%[size],%[tmp1]\n"
		"	slgr	%[to],%[tmp1]\n"
		"	j	0b\n"
		"2: la	  %3,4095(%1)\n"/* %4 = to + 4095 */
		"   nr	  %3,%2\n"	/* %4 = (to + 4095) & -4096 */
		"   slgr  %3,%1\n"
		"   clgr  %0,%3\n"	/* copy crosses next page boundary? */
		"2:	la	%[tmp2],4095(%[to])\n"	/* tmp2 = to + 4095 */
		"	nr	%[tmp2],%[tmp1]\n"	/* tmp2 = (to + 4095) & -4096 */
		"	slgr	%[tmp2],%[to]\n"
		"	clgr	%[size],%[tmp2]\n"	/* copy crosses next page boundary? */
		"	jnh	5f\n"
		"3: mvcos 0(%1),0(%4),%3\n"
		"7: slgr  %0,%3\n"
		"3:	mvcos	0(%[to]),0(%[zeropg]),%[tmp2]\n"
		"7:	slgr	%[size],%[tmp2]\n"
		"	j	5f\n"
		"4: slgr  %0,%0\n"
		"4:	slgr	%[size],%[size]\n"
		"5:\n"
		EX_TABLE(0b,2b) EX_TABLE(6b,2b) EX_TABLE(3b,5b) EX_TABLE(7b,5b)
		: "+&a" (size), "+&a" (to), "+a" (tmp1), "=&a" (tmp2)
		: "a" (empty_zero_page), [spec] "d" (spec.val)
		: [size] "+&a" (size), [to] "+&a" (to),
		  [tmp1] "+a" (tmp1), [tmp2] "=&a" (tmp2)
		: [zeropg] "a" (empty_zero_page), [spec] "d" (spec.val)
		: "cc", "memory", "0");
	return size;
}