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)