-/* $OpenBSD: locore.s,v 1.16 1997/01/24 01:35:47 briggs Exp $ */
+/* $OpenBSD: locore.s,v 1.17 1997/02/10 12:01:45 downsj Exp $ */
/* $NetBSD: locore.s,v 1.73 1997/01/09 07:28:12 scottr Exp $ */
/*
#include <m68k/asm.h>
-/*
- * copypage(fromaddr, toaddr)
- *
- * Optimized version of bcopy for a single page-aligned NBPG byte copy.
- */
-ENTRY(copypage)
- movl sp@(4),a0 | source address
- movl sp@(8),a1 | destination address
- movl #NBPG/32,d0 | number of 32 byte chunks
-#if defined(M68040)
- cmpl #MMU_68040,_mmutype | 68040?
- jne Lmlloop | no, use movl
-Lm16loop:
- .long 0xf6209000 | move16 a0@+,a1@+
- .long 0xf6209000 | move16 a0@+,a1@+
- subql #1,d0
- jne Lm16loop
- rts
-#endif
-Lmlloop:
- movl a0@+,a1@+
- movl a0@+,a1@+
- movl a0@+,a1@+
- movl a0@+,a1@+
- movl a0@+,a1@+
- movl a0@+,a1@+
- movl a0@+,a1@+
- movl a0@+,a1@+
- subql #1,d0
- jne Lmlloop
- rts
-
/*
* non-local gotos
*/
-/* $OpenBSD: mem.c,v 1.3 1996/06/08 16:21:16 briggs Exp $ */
+/* $OpenBSD: mem.c,v 1.4 1997/02/10 12:01:47 downsj Exp $ */
/* $NetBSD: mem.c,v 1.11 1996/05/05 06:18:41 briggs Exp $ */
/*
#include <vm/vm.h>
-caddr_t zeropage;
+static caddr_t devzeropage;
#define mmread mmrw
#define mmwrite mmrw
c = iov->iov_len;
break;
}
- if (zeropage == NULL) {
- zeropage = (caddr_t)
+ if (devzeropage == NULL) {
+ devzeropage = (caddr_t)
malloc(CLBYTES, M_TEMP, M_WAITOK);
- bzero(zeropage, CLBYTES);
+ bzero(devzeropage, CLBYTES);
}
c = min(iov->iov_len, CLBYTES);
- error = uiomove(zeropage, c, uio);
+ error = uiomove(devzeropage, c, uio);
continue;
default:
-/* $OpenBSD: pmap.c,v 1.7 1997/01/24 01:35:51 briggs Exp $ */
+/* $OpenBSD: pmap.c,v 1.8 1997/02/10 12:01:49 downsj Exp $ */
/* $NetBSD: pmap.c,v 1.28 1996/10/21 05:42:27 scottr Exp $ */
/*
#endif
kva = (vm_offset_t) CADDR1;
pmap_enter(pmap_kernel(), kva, phys, VM_PROT_READ|VM_PROT_WRITE, TRUE);
- bzero((caddr_t)kva, NBPG);
+ zeropage((caddr_t)kva);
pmap_remove_mapping(pmap_kernel(), kva, PT_ENTRY_NULL,
PRM_TFLUSH|PRM_CFLUSH);
}
pmap_enter(pmap_kernel(), dkva, dst, VM_PROT_READ|VM_PROT_WRITE, TRUE);
copypage((caddr_t)skva, (caddr_t)dkva);
/* CADDR1 and CADDR2 are virtually contiguous */
- pmap_remove(pmap_kernel(), skva, skva+2*NBPG);
+ pmap_remove(pmap_kernel(), skva, skva + (2 * NBPG));
}