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