Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch Move compat_13_machdep.c, strstr.c, copystr.S, bcop...



details:   https://anonhg.NetBSD.org/src/rev/bee6a3313fd6
branches:  trunk
changeset: 504508:bee6a3313fd6
user:      matt <matt%NetBSD.org@localhost>
date:      Sun Mar 04 08:25:38 2001 +0000

description:
Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.

diffstat:

 sys/arch/arm/arm32/bcopy_page.S          |  152 +++++++++++++++++++
 sys/arch/arm/arm32/bcopyinout.S          |  243 +++++++++++++++++++++++++++++++
 sys/arch/arm/arm32/compat_13_machdep.c   |  107 +++++++++++++
 sys/arch/arm/arm32/copystr.S             |  209 ++++++++++++++++++++++++++
 sys/arch/arm/arm32/strstr.c              |   68 ++++++++
 sys/arch/arm/conf/files.arm              |   11 +-
 sys/arch/arm32/arm32/bcopy_page.S        |  152 -------------------
 sys/arch/arm32/arm32/bcopyinout.S        |  243 -------------------------------
 sys/arch/arm32/arm32/compat_13_machdep.c |  107 -------------
 sys/arch/arm32/arm32/copystr.S           |  209 --------------------------
 sys/arch/arm32/arm32/strstr.c            |   68 --------
 sys/arch/arm32/conf/files.arm32          |   15 +-
 sys/arch/hpcarm/conf/files.hpcarm        |   52 +----
 sys/arch/hpcarm/hpcarm/bcopy_page.S      |  152 -------------------
 sys/arch/hpcarm/hpcarm/bcopyinout.S      |  243 -------------------------------
 sys/arch/hpcarm/hpcarm/copystr.S         |  209 --------------------------
 sys/arch/hpcarm/hpcarm/strstr.c          |   68 --------
 17 files changed, 804 insertions(+), 1504 deletions(-)

diffs (truncated from 2443 to 300 lines):

diff -r 6c3a4ee423dd -r bee6a3313fd6 sys/arch/arm/arm32/bcopy_page.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/arm/arm32/bcopy_page.S   Sun Mar 04 08:25:38 2001 +0000
@@ -0,0 +1,152 @@
+/*     $NetBSD: bcopy_page.S,v 1.1 2001/03/04 08:25:39 matt Exp $      */
+
+/*
+ * Copyright (c) 1995 Scott Stevens
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by Scott Stevens.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * RiscBSD kernel project
+ *
+ * bcopy_page.S
+ *
+ * page optimised bcopy and bzero routines
+ *
+ * Created      : 08/04/95
+ */
+
+#include <machine/param.h>
+#include <machine/asm.h>
+
+/*
+ * bcopy_page(src, dest)
+ *
+ * Optimised copy page routine.
+ *
+ * On entry:
+ *   r0 - src address
+ *   r1 - dest address
+ *
+ * Requires:
+ *   number of bytes per page (NBPG) is a multiple of 512
+ */
+
+ENTRY(bcopy_page)
+       stmfd   sp!, {r4-r10, lr}
+       mov     r2, #(NBPG >> 9)
+
+Lloopcopy:
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+       ldmia   r0!, {r3-r10}
+       stmia   r1!, {r3-r10}
+
+       subs    r2, r2, #1
+       bne     Lloopcopy
+
+       ldmfd   sp!, {r4-r10, pc}
+
+/*
+ * bzero_page(dest)
+ *
+ * Optimised zero page routine.
+ *
+ * On entry:
+ *   r0 - dest address
+ *
+ * Requires:
+ *   number of bytes per page (NBPG) is a multiple of 512
+ */
+
+ENTRY(bzero_page)
+       stmfd   sp!, {r4-r10, lr}
+       mov     r2, #(NBPG >> 9)
+
+       mov     r3, #0
+       mov     r4, #0
+       mov     r5, #0
+       mov     r6, #0
+       mov     r7, #0
+       mov     r8, #0
+       mov     r9, #0
+       mov     r10, #0
+
+Lloopzero:
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+       stmia   r0!, {r3-r10}
+
+       subs    r2, r2, #1
+       bne     Lloopzero
+
+       ldmfd   sp!, {r4-r10, pc}
diff -r 6c3a4ee423dd -r bee6a3313fd6 sys/arch/arm/arm32/bcopyinout.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/arm/arm32/bcopyinout.S   Sun Mar 04 08:25:38 2001 +0000
@@ -0,0 +1,243 @@
+/*     $NetBSD: bcopyinout.S,v 1.1 2001/03/04 08:25:39 matt Exp $      */
+
+/*
+ * Copyright (c) 1995-1998 Mark Brinicombe.
+ * Copyright (c) 1995 Brini.
+ * All rights reserved.
+ *
+ * This code is derived from software written for Brini by Mark Brinicombe
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by Mark Brinicombe.
+ * 4. The name of the company nor the name of the author may be used to
+ *    endorse or promote products derived from this software without specific
+ *    prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ *
+ * bcopyinout.S
+ *
+ * optimized and fault protected byte copy functions
+ *
+ * Created      : 16/05/95
+ */
+
+#include "assym.h"
+
+#include <machine/asm.h>
+#include <sys/errno.h>
+
+       .text
+       .align  0
+Lcurpcb:
+       .word   _C_LABEL(curpcb)
+
+Lvm_min_address:
+       .word   VM_MIN_ADDRESS
+Lvm_maxuser_address:
+       .word   VM_MAXUSER_ADDRESS
+Lvm_maxkern_address:
+       .word   VM_MAXKERN_ADDRESS
+
+ENTRY(kcopy)
+       b       do_copyinout
+
+/*
+ * r0 = user space address
+ * r1 = kernel space address
+ * r2 = length
+ *
+ * Copies bytes from user space to kernel space
+ */
+
+ENTRY(copyin)
+       /* Validate user and kernel addresses */
+       ldr     r3, Lvm_min_address
+       cmp     r0, r3
+       bcc     Lbadaddress
+       ldr     r3, Lvm_maxuser_address
+       cmp     r0, r3
+       bcs     Lbadaddress
+       cmp     r1, r3
+       bcc     Lbadaddress
+       ldr     r3, Lvm_maxkern_address
+       cmp     r1, r3
+       bcs     Lbadaddress
+
+       /* Quick exit if length is zero */      
+       teq     r2, #0
+       moveq   r0, #0
+       moveq   pc, lr
+
+       /* Do the actual copy */
+       b       do_copyinout
+
+/*
+ * r0 = kernel space address
+ * r1 = user space address
+ * r2 = length
+ *
+ * Copies bytes from user space to kernel space
+ */
+
+Lpgbase:
+       .long   PROCESS_PAGE_TBLS_BASE
+       
+ENTRY(copyout)
+       /* Validate user and kernel addresses */
+       ldr     r3, Lvm_min_address
+       cmp     r1, r3
+       bcc     Lbadaddress
+       ldr     r3, Lvm_maxuser_address
+       cmp     r1, r3
+       bcs     Lbadaddress
+       cmp     r0, r3
+       bcc     Lbadaddress
+       ldr     r3, Lvm_maxkern_address
+       cmp     r0, r3
+       bcs     Lbadaddress
+
+       /* Quick exit if length is zero */      
+       teq     r2, #0
+       moveq   r0, #0
+       moveq   pc, lr
+
+       /* Check the page protection for copy-on-write */
+       stmfd   sp!, {r4-r7}
+       ldr     r4, Lcurpcb
+       ldr     r4, [r4]
+
+       ldr     r5, [r4, #PCB_ONFAULT]
+       add     r3, pc, #do_cowfault - . - 8
+       str     r3, [r4, #PCB_ONFAULT]
+
+       ldr     r3, Lpgbase
+       add     r6, r3, r1, lsr #(PGSHIFT-2)
+       bic     r6, r6, #3                      /* beginning PTE */
+
+       mov     r7, r1, lsl #(32-PGSHIFT)
+       add     r7, r2, r7, lsr #(32-PGSHIFT)
+       sub     r7, r7, #1
+       mov     r7, r7, lsr #(PGSHIFT)          /* number of pages -1 */
+
+do_ptecheck:



Home | Main Index | Thread Index | Old Index