Module Name:    src
Committed By:   rin
Date:           Mon Oct  3 23:32:28 UTC 2022

Modified Files:
        src/sys/arch/powerpc/ibm4xx: copyinstr.c copyoutstr.c

Log Message:
copy{in,out}str: Tidy up inline asm's:
- Use %[foo], %[bar], ... instead of %0, %1, ...
- One instruction per line.
- Paragraph grouped instructions.
- Fix wrong comments.
No binary changes.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/powerpc/ibm4xx/copyinstr.c \
    src/sys/arch/powerpc/ibm4xx/copyoutstr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/ibm4xx/copyinstr.c
diff -u src/sys/arch/powerpc/ibm4xx/copyinstr.c:1.15 src/sys/arch/powerpc/ibm4xx/copyinstr.c:1.16
--- src/sys/arch/powerpc/ibm4xx/copyinstr.c:1.15	Mon Sep 12 08:02:44 2022
+++ src/sys/arch/powerpc/ibm4xx/copyinstr.c	Mon Oct  3 23:32:27 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: copyinstr.c,v 1.15 2022/09/12 08:02:44 rin Exp $	*/
+/*	$NetBSD: copyinstr.c,v 1.16 2022/10/03 23:32:27 rin Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: copyinstr.c,v 1.15 2022/09/12 08:02:44 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: copyinstr.c,v 1.16 2022/10/03 23:32:27 rin Exp $");
 
 #include <sys/param.h>
 #include <uvm/uvm_extern.h>
@@ -72,32 +72,42 @@ copyinstr(const void *udaddr, void *kadd
 
 	resid = len;
 	__asm volatile(
-		"mtctr %3;"			/* Set up counter */
-		"mfmsr %0;"			/* Save MSR */
-		"li %1,0x20;"
-		"andc %1,%0,%1; mtmsr %1;"	/* Disable IMMU */
+		"mtctr %[resid];"		/* Set up counter */
+
+		"mfmsr %[msr];"			/* Save MSR */
+
+		"li %[pid],0x20;"		/* Disable IMMU */
+		"andc %[pid],%[msr],%[pid];"
+		"mtmsr %[pid];"
 		"isync;"
-		MFPID(%1)			/* Save old PID */
 
-		"1: "
-		MTPID(%4)			/* Load user ctx */
+		MFPID(%[pid])			/* Save old PID */
+
+	"1:"	MTPID(%[ctx])			/* Load user ctx */
 		"isync;"
-		"lbz %2,0(%5); addi %5,%5,1;"	/* Load byte */
+		"lbz %[data],0(%[udaddr]);"	/* Load byte */
+		"addi %[udaddr],%[udaddr],1;"
 		"sync;"
-		MTPID(%1)
+
+		MTPID(%[pid])
 		"isync;"
-		"stb %2,0(%6); dcbst 0,%6; addi %6,%6,1;"
-						/* Store kernel byte */
-		"or. %2,%2,%2;"
+		"stb %[data],0(%[kaddr]);"	/* Store kernel byte */
+		"dcbst 0,%[kaddr];"
+		"addi %[kaddr],%[kaddr],1;"
+		"or. %[data],%[data],%[data];"
 		"sync;"
-		"bdnzf 2,1b;"			/* while(ctr-- && !zero) */
 
-		MTPID(%1)			/* Restore PID, MSR */
-		"mtmsr %0;"
+		"bdnzf eq,1b;"			/* while(ctr-- && !zero) */
+
+		MTPID(%[pid])			/* Restore PID, MSR */
+		"mtmsr %[msr];"
 		"isync;"
-		"mfctr %3;"			/* Restore resid */
-		: "=&r" (msr), "=&r" (pid), "=&r" (data), "+r" (resid)
-		: "r" (ctx), "b" (udaddr), "b" (kaddr));
+
+		"mfctr %[resid];"		/* Restore resid */
+
+		: [msr] "=&r" (msr), [pid] "=&r" (pid), [data] "=&r" (data),
+		  [resid] "+r" (resid)
+		: [ctx] "r" (ctx), [udaddr] "b" (udaddr), [kaddr] "b" (kaddr));
 
 	curpcb->pcb_onfault = NULL;
 	if (done)
Index: src/sys/arch/powerpc/ibm4xx/copyoutstr.c
diff -u src/sys/arch/powerpc/ibm4xx/copyoutstr.c:1.15 src/sys/arch/powerpc/ibm4xx/copyoutstr.c:1.16
--- src/sys/arch/powerpc/ibm4xx/copyoutstr.c:1.15	Mon Sep 12 08:02:44 2022
+++ src/sys/arch/powerpc/ibm4xx/copyoutstr.c	Mon Oct  3 23:32:27 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: copyoutstr.c,v 1.15 2022/09/12 08:02:44 rin Exp $	*/
+/*	$NetBSD: copyoutstr.c,v 1.16 2022/10/03 23:32:27 rin Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: copyoutstr.c,v 1.15 2022/09/12 08:02:44 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: copyoutstr.c,v 1.16 2022/10/03 23:32:27 rin Exp $");
 
 #include <sys/param.h>
 #include <uvm/uvm_extern.h>
@@ -72,32 +72,44 @@ copyoutstr(const void *kaddr, void *udad
 
 	resid = len;
 	__asm volatile(
-		"mtctr %3;"			/* Set up counter */
-		"mfmsr %0;"			/* Save MSR */
-		"li %1,0x20;"
-		"andc %1,%0,%1; mtmsr %1;"	/* Disable IMMU */
+		"mtctr %[resid];"		/* Set up counter */
+
+		"mfmsr %[msr];"			/* Save MSR */
+
+		"li %[pid],0x20;"		/* Disable IMMU */
+		"andc %[pid],%[msr],%[pid];"
+		"mtmsr %[pid];"
 		"isync;"
-		MFPID(%1)			/* Save old PID */
 
-		"1:"
-		MTPID(%1)
+		MFPID(%[pid])			/* Save old PID */
+
+	"1:"	MTPID(%[pid])
 		"isync;"
-		"lbz %2,0(%6); addi %6,%6,1;"	/* Store kernel byte */
+
+		"lbz %[data],0(%[kaddr]);"	/* Load kernel byte */
+		"addi %[kaddr],%[kaddr],1;"
 		"sync;"
-		MTPID(%4)			/* Load user ctx */
+
+		MTPID(%[ctx])			/* Load user ctx */
 		"isync;"
-		"stb %2,0(%5); dcbst 0,%5; addi %5,%5,1;"
-						/* Load byte */
-		"or. %2,%2,%2;"
+
+		"stb %[data],0(%[udaddr]);"	/* Store byte */
+		"dcbst 0,%[udaddr];"
+		"addi %[udaddr],%[udaddr],1;"
+
+		"or. %[data],%[data],%[data];"
 		"sync;"
-		"bdnzf 2,1b;"			/* while(ctr-- && !zero) */
+		"bdnzf eq,1b;"			/* while(ctr-- && !zero) */
 
-		MTPID(%1)			/* Restore PID, MSR */
-		"mtmsr %0;"
+		MTPID(%[pid])			/* Restore PID, MSR */
+		"mtmsr %[msr];"
 		"isync;"
-		"mfctr %3;"			/* Restore resid */
-		: "=&r" (msr), "=&r" (pid), "=&r" (data), "+r" (resid)
-		: "r" (ctx), "b" (udaddr), "b" (kaddr));
+
+		"mfctr %[resid];"		/* Restore resid */
+
+		: [msr] "=&r" (msr), [pid] "=&r" (pid), [data] "=&r" (data),
+		  [resid] "+r" (resid)
+		: [ctx] "r" (ctx), [udaddr] "b" (udaddr), [kaddr] "b" (kaddr));
 
 	curpcb->pcb_onfault = NULL;
 	if (done)

Reply via email to