summaryrefslogtreecommitdiff
path: root/lib/libc/arch/hppa/string/bcopy.m4
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/arch/hppa/string/bcopy.m4')
-rw-r--r--lib/libc/arch/hppa/string/bcopy.m4275
1 files changed, 0 insertions, 275 deletions
diff --git a/lib/libc/arch/hppa/string/bcopy.m4 b/lib/libc/arch/hppa/string/bcopy.m4
deleted file mode 100644
index 1d6726ae990..00000000000
--- a/lib/libc/arch/hppa/string/bcopy.m4
+++ /dev/null
@@ -1,275 +0,0 @@
-define(_rcsid,``$OpenBSD: bcopy.m4,v 1.11 2002/08/27 16:32:24 mickey Exp $'')dnl
-dnl
-dnl
-dnl This is the source file for bcopy.S, spcopy.S
-dnl
-dnl
-define(`versionmacro',substr(_rcsid,1,eval(len(_rcsid)-2)))dnl
-dnl
-/* This is a generated file. DO NOT EDIT. */
-/*
- * Generated from:
- *
- * versionmacro
- */
-/*
- * Copyright (c) 1999 Michael Shalayeff
- * 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 Michael Shalayeff.
- * 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.
- *
- */
-
-dnl
-dnl macro: L(`arg1',`arg2')
-dnl synopsis: creates an assembly label based on args resulting in $arg1.arg2
-dnl
-define(`L', `$$1.$2')dnl
-dnl
-dnl
-dnl
-define(`STWS',`ifelse($5, `u',dnl
-`ifelse($1, `1', `vshd $4, t`$1', r31
- stbys,B,m r31, F`'4($2, $3)',
-`0', `0', `vshd t`'decr($1), t`$1', r31
- stws,M r31, F`'4($2, $3)')',dnl
-`0', `0',
-`ifelse($1, `1',
-`stbys,B`'ifelse(B, `b', `,m ', `0', `0', ` ')`'t`$1', F`'4($2, $3)',
-`0', `0', `stws,M t`$1', F`'4($2, $3)')')')dnl
-define(`STWSS', `ifelse(`$3', `1', `dnl',
-`0', `0', `STWSS($1, $2, eval($3 - 1), $4, $5)')
- STWS($3, $1, $2, $4, $5)dnl
-')dnl
-define(`LDWSS', `ifelse(`$3', `1', `dnl',
-`0', `0', `LDWSS($1, $2, eval($3 - 1))')
- ldws,M F`'4($1, $2), t`'$3`'dnl
-')dnl
-dnl
-dnl copy data in 4-words blocks
-dnl
-define(`hppa_blcopy',`
- addi -16, $6, $6
-L($1, `loop16'`$7')
-dnl cache hint may not work on some hardware
-dnl ldw F 32($2, $3), r0
-ifelse(F, `-', `dnl
- addi F`'4, $5, $5', `0', `0', `dnl')
-LDWSS($2, $3, 4)
-STWSS($4, $5, 3, `ret1', $7)
-ifelse($7, `u', `dnl
- STWS(4, $4, $5, `ret1', $7)', $7, `a', `dnl')
- addib,>= -16, $6, L($1, `loop16'`$7')
-ifelse($7, `a', `dnl
- STWS(4, $4, $5, `ret1', $7)dnl
-', $7, `u', `dnl
- copy t4, ret1')')dnl
-dnl
-dnl copy in words
-dnl
-define(`STWL', `addib,<,n 12, $6, L($1, cleanup)
-ifelse($7, `u', ` copy ret1, t1', $7, `a', `dnl')
-L($1, word)
- ldws,M F`'4($2, $3), t1
- addib,>= -4, $6, L($1, word)
- stws,M t1, F`'4($4, $5)
-
-L($1, cleanup)
- addib,=,n 4, $6, L($1, done)
- ldws 0($2, $3), t1
- add $5, $6, $5
- b L($1, done)
- stbys,E t1, 0($4, $5)
-')
-dnl
-dnl
-dnl parameters:
-dnl $1 name
-dnl $2 source space
-dnl $3 source address
-dnl $4 destination space
-dnl $5 destination address
-dnl $6 length
-dnl $7 direction
-dnl
-define(hppa_copy,
-`dnl
-dnl
-dnl if direction is `-' (backwards copy), adjust src, dst
-dnl
-ifelse($7,`-', `add $3, $6, $3
- add $5, $6, $5
-define(`F', `-')dnl
-define(`R', `')dnl
-define(`M', `mb')dnl
-define(`B', `e')dnl
-define(`E', `b')dnl
-',dnl ifelse
-`0',`0',
-`define(`F', `')dnl
-define(`R', `-')dnl
-define(`M', `ma')dnl
-define(`B', `b')dnl
-define(`E', `e')dnl
-')dnl ifelse
-
-ifelse($7,`-', `', `0',`0',
-` comib,>=,n 15, $6, L($1, byte)
-
- extru $3, 31, 2, t3
- extru $5, 31, 2, t4
- add $6, t4, $6
- comb,<> t3, t4, L($1, unaligned)
- dep r0, 31, 2, $3
- hppa_blcopy($1, $2, $3, $4, $5, $6, `a')
-
- STWL($1, $2, $3, $4, $5, $6, `a')dnl
-
-L($1, unaligned)
- sub,>= t4, t3, t2
- ldwm F`'4($2, $3), ret1
- zdep t2, 28, 29, t1
- mtsar t1
- hppa_blcopy($1, $2, $3, $4, $5, $6, `u')
-
-dnl STWL($1, $2, $3, $4, $5, $6, `u')
- addib,<,n 12, $6, L($1, cleanup_un)
-L($1, word_un)
- ldws,M F`'4($2, $3), t1
- vshd ret1, t1, t2
- addib,< -4, $6, L($1, cleanup1_un)
- stws,M t2, F`'4($4, $5)
- ldws,M F`'4($2, $3), ret1
- vshd t1, ret1, t2
- addib,>= -4, $6, L($1, word_un)
- stws,M t2, F`'4($4, $5)
-
-L($1, cleanup_un)
- addib,<=,n 4, $6, L($1, done)
- mfctl sar, t4
- add $5, $6, $5
- extru t4, 28, 2, t4
- sub,<= $6, t4, r0
- ldws,M F`'4($2, $3), t1
- vshd ret1, t1, t2
- b L($1, done)
- stbys,E t2, 0($4, $5)
-
-L($1, cleanup1_un)
- b L($1, cleanup_un)
- copy t1, ret1
-')dnl ifelse
-
-L($1, byte)
- comb,>=,n r0, $6, L($1, done)
-L($1, byte_loop)
- ldbs,M F`'1($2, $3), t1
- addib,<> -1, $6, L($1, byte_loop)
- stbs,M t1, F`'1($4, $5)
-L($1, done)
-')dnl
-`
-#undef _LOCORE
-#define _LOCORE
-#include <machine/asm.h>
-#include <machine/frame.h>
-'
-ifelse(NAME, `bcopy',
-`
-#if defined(LIBC_SCCS)
- .text
- .asciz "versionmacro"
- .align 4
-#endif
-
-LEAF_ENTRY(memcpy)
-ALTENTRY(memmove)
- copy arg0, t1
- copy arg1, arg0
- copy t1, arg1
- copy arg0, ret0
-ALTENTRY(ovbcopy)
-ALTENTRY(bcopy)
- comb,>,n arg1, arg0, L(bcopy, reverse)
- hppa_copy(bcopy_f, sr0, arg0, sr0, arg1, arg2, `+')
- bv 0(rp)
- nop
-L(bcopy, reverse)
- hppa_copy(bcopy_r, sr0, arg0, sr0, arg1, arg2, `-')
- bv 0(rp)
- nop
-EXIT(memcpy)
-')dnl
-dnl
-ifelse(NAME, `spcopy',
-`
-#ifdef _KERNEL
-#include <assym.h>
-
-/*
- * int spcopy (pa_space_t ssp, const void *src, pa_space_t dsp, void *dst,
- * size_t size)
- * do a space to space bcopy.
- *
- * assumed that spaces do not clash, otherwise we loose
- */
- .import curproc, data
- .import copy_on_fault, code
-LEAF_ENTRY(spcopy)
- ldw HPPA_FRAME_ARG(4)(sp), ret0
- sub,<> r0, ret0, r0
- bv r0(rp)
- nop
-`
- ldo 64(sp), sp
- stw rp, HPPA_FRAME_CRP(sp)
- /* setup fault handler */
- ldil L%curproc, t1
- ldw R%curproc(t1), t3
- ldil L%copy_on_fault, t2
- ldw P_ADDR(t3), r2
- ldo R%copy_on_fault(t2), t2
- ldw PCB_ONFAULT+U_PCB(r2), r1
- stw t2, PCB_ONFAULT+U_PCB(r2)
-'
- mtsp arg0, sr1
- mtsp arg2, sr2
-
- hppa_copy(spcopy, sr1, arg1, sr2, arg3, ret0, `+')
-
- mtsp r0, sr1
- mtsp r0, sr2
- /* reset fault handler */
- stw r1, PCB_ONFAULT+U_PCB(r2)
- ldw HPPA_FRAME_CRP(sp), rp
- ldo -64(sp), sp
- bv 0(rp)
- copy r0, ret0
-EXIT(spcopy)
-#endif
-')dnl
-
- .end