[BACK]Return to copypage.s CVS log [TXT][DIR] Up to [local] / sys / arch / m68k / m68k

Annotation of sys/arch/m68k/m68k/copypage.s, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: copypage.s,v 1.4 2005/09/25 22:27:15 miod Exp $       */
                      2: /*     $NetBSD: copypage.s,v 1.4 1997/05/30 01:34:49 jtc Exp $ */
                      3:
                      4: /*-
                      5:  * Copyright (c) 1997 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by J.T. Conklin <jtc@netbsd.org> and
                     10:  * by Hiroshi Horitomo <horimoto@cs-aoi.cs.sist.ac.jp>
                     11:  *
                     12:  * Redistribution and use in source and binary forms, with or without
                     13:  * modification, are permitted provided that the following conditions
                     14:  * are met:
                     15:  * 1. Redistributions of source code must retain the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer.
                     17:  * 2. Redistributions in binary form must reproduce the above copyright
                     18:  *    notice, this list of conditions and the following disclaimer in the
                     19:  *    documentation and/or other materials provided with the distribution.
                     20:  * 3. All advertising materials mentioning features or use of this software
                     21:  *    must display the following acknowledgement:
                     22:  *        This product includes software developed by the NetBSD
                     23:  *        Foundation, Inc. and its contributors.
                     24:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     25:  *    contributors may be used to endorse or promote products derived
                     26:  *    from this software without specific prior written permission.
                     27:  *
                     28:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     29:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     30:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     31:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     32:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     33:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     34:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     35:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     36:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     37:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     38:  * POSSIBILITY OF SUCH DAMAGE.
                     39:  */
                     40:
                     41: /*
                     42:  * Optimized functions for copying/clearing a whole page.
                     43:  */
                     44:
                     45: #include <machine/asm.h>
                     46: #include "assym.h"
                     47:
                     48:        .file   "copypage.s"
                     49:        .text
                     50:
                     51: /*
                     52:  * copypage040(fromaddr, toaddr)
                     53:  *
                     54:  * Optimized version of bcopy for a single page-aligned NBPG byte copy,
                     55:  * using instructions only available on the mc68040 and later.
                     56:  */
                     57: #if defined(M68040) || defined(M68060)
                     58: ENTRY(copypage040)
                     59:        movl    sp@(4),a0               | source address
                     60:        movl    sp@(8),a1               | destination address
                     61:        movw    #NBPG/32-1,d0           | number of 32 byte chunks - 1
                     62: Lm16loop:
                     63:        .long   0xf6209000              | move16 a0@+,a1@+
                     64:        .long   0xf6209000              | move16 a0@+,a1@+
                     65:        dbf     d0,Lm16loop
                     66:        rts
                     67: #endif /* M68040 || M68060 */
                     68:
                     69: /*
                     70:  * copypage(fromaddr, toaddr)
                     71:  *
                     72:  * Optimized version of bcopy for a single page-aligned NBPG byte copy.
                     73:  */
                     74: ENTRY(copypage)
                     75:        movl    sp@(4),a0               | source address
                     76:        movl    sp@(8),a1               | destination address
                     77:        movw    #NBPG/32-1,d0           | number of 32 byte chunks - 1
                     78: Lmlloop:
                     79:        movl    a0@+,a1@+
                     80:        movl    a0@+,a1@+
                     81:        movl    a0@+,a1@+
                     82:        movl    a0@+,a1@+
                     83:        movl    a0@+,a1@+
                     84:        movl    a0@+,a1@+
                     85:        movl    a0@+,a1@+
                     86:        movl    a0@+,a1@+
                     87:        dbf     d0,Lmlloop
                     88:        rts
                     89:
                     90: /*
                     91:  * zeropage(addr)
                     92:  *
                     93:  * Optimized version of bzero for a single page-aligned NBPG byte zero.
                     94:  */
                     95: ENTRY(zeropage)
                     96:        movl    sp@(4),a0               | dest address
                     97:        movql   #NBPG/256-1,d0          | number of 256 byte chunks - 1
                     98:        movml   d2-d7,sp@-
                     99:        movql   #0,d1
                    100:        movql   #0,d2
                    101:        movql   #0,d3
                    102:        movql   #0,d4
                    103:        movql   #0,d5
                    104:        movql   #0,d6
                    105:        movql   #0,d7
                    106:        movl    d1,a1
                    107:        lea     a0@(NBPG),a0
                    108: Lzloop:
                    109:        movml   d1-d7/a1,a0@-
                    110:        movml   d1-d7/a1,a0@-
                    111:        movml   d1-d7/a1,a0@-
                    112:        movml   d1-d7/a1,a0@-
                    113:        movml   d1-d7/a1,a0@-
                    114:        movml   d1-d7/a1,a0@-
                    115:        movml   d1-d7/a1,a0@-
                    116:        movml   d1-d7/a1,a0@-
                    117:        dbf     d0,Lzloop
                    118:        movml   sp@+,d2-d7
                    119:        rts

CVSweb