On the 68010, don't bother with the by-8-longwords loop, instead
only 16-bit align the region and use loop mode with longwords to do the bulk of the work. On the 68020+, fixed an optimization bug where all regions that start on odd addresses would not be properly longword aligned.
This commit is contained in:
parent
c14e80bd30
commit
129f58b424
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: memset.S,v 1.12 1999/10/25 23:48:15 thorpej Exp $ */
|
/* $NetBSD: memset.S,v 1.13 2001/09/07 12:50:01 fredette Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1997 The NetBSD Foundation, Inc.
|
* Copyright (c) 1997 The NetBSD Foundation, Inc.
|
||||||
@ -79,7 +79,7 @@
|
|||||||
#if 0
|
#if 0
|
||||||
RCSID("from: @(#)bzero.s 5.1 (Berkeley) 5/12/90")
|
RCSID("from: @(#)bzero.s 5.1 (Berkeley) 5/12/90")
|
||||||
#else
|
#else
|
||||||
RCSID("$NetBSD: memset.S,v 1.12 1999/10/25 23:48:15 thorpej Exp $")
|
RCSID("$NetBSD: memset.S,v 1.13 2001/09/07 12:50:01 fredette Exp $")
|
||||||
#endif
|
#endif
|
||||||
#endif /* LIBC_SCCS and not lint */
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
|
||||||
@ -112,7 +112,9 @@ ENTRY(memset)
|
|||||||
jeq Lbzalgndw |
|
jeq Lbzalgndw |
|
||||||
movb %d2,%a0@+ | *(char *)dst++ = X
|
movb %d2,%a0@+ | *(char *)dst++ = X
|
||||||
subql #1,%d1 | len--
|
subql #1,%d1 | len--
|
||||||
|
addql #1,%d0
|
||||||
Lbzalgndw:
|
Lbzalgndw:
|
||||||
|
#ifndef __mc68010__
|
||||||
/* long word align */
|
/* long word align */
|
||||||
btst #1,%d0 | if (dst & 2)
|
btst #1,%d0 | if (dst & 2)
|
||||||
jeq Lbzalgndl |
|
jeq Lbzalgndl |
|
||||||
@ -138,6 +140,7 @@ Lbz32loop:
|
|||||||
clrw %d0
|
clrw %d0
|
||||||
subql #1,%d0
|
subql #1,%d0
|
||||||
jcc Lbz32loop
|
jcc Lbz32loop
|
||||||
|
#endif /* !__mc68010__ */
|
||||||
|
|
||||||
Lbzlong:
|
Lbzlong:
|
||||||
/* set by longwords */
|
/* set by longwords */
|
||||||
@ -148,6 +151,11 @@ Lbzlong:
|
|||||||
Lbzlloop:
|
Lbzlloop:
|
||||||
movl %d2,%a0@+ | clear longwords
|
movl %d2,%a0@+ | clear longwords
|
||||||
dbf %d0,Lbzlloop | till done
|
dbf %d0,Lbzlloop | till done
|
||||||
|
#ifdef __mc68010__
|
||||||
|
clrw %d0
|
||||||
|
subql #1,%d0
|
||||||
|
jcc Lbzlloop
|
||||||
|
#endif /* __mc68010__ */
|
||||||
andl #3,%d1 | len %= 4
|
andl #3,%d1 | len %= 4
|
||||||
jeq Lbzdone
|
jeq Lbzdone
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user