svn commit: r253328 - head/sys/i386/i386
Konstantin Belousov
kib at FreeBSD.org
Sat Jul 13 19:42:52 UTC 2013
Author: kib
Date: Sat Jul 13 19:42:52 2013
New Revision: 253328
URL: http://svnweb.freebsd.org/changeset/base/253328
Log:
Create a proper stack frame for i386 version of bcopy(), despite the
function is leaf. The frame allows ddb to not loose the direct caller
of bcopy() in backtrace.
Other functions from support.s would benefit from the same change as
well, but for now bcopy() is the most frequent offender.
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Modified:
head/sys/i386/i386/support.s
Modified: head/sys/i386/i386/support.s
==============================================================================
--- head/sys/i386/i386/support.s Sat Jul 13 19:36:18 2013 (r253327)
+++ head/sys/i386/i386/support.s Sat Jul 13 19:42:52 2013 (r253328)
@@ -181,11 +181,13 @@ END(bcopyb)
* ws at tools.de (Wolfgang Solfrank, TooLs GmbH) +49-228-985800
*/
ENTRY(bcopy)
+ pushl %ebp
+ movl %esp,%ebp
pushl %esi
pushl %edi
- movl 12(%esp),%esi
- movl 16(%esp),%edi
- movl 20(%esp),%ecx
+ movl 8(%ebp),%esi
+ movl 12(%ebp),%edi
+ movl 16(%ebp),%ecx
movl %edi,%eax
subl %esi,%eax
@@ -196,12 +198,13 @@ ENTRY(bcopy)
cld /* nope, copy forwards */
rep
movsl
- movl 20(%esp),%ecx
+ movl 16(%ebp),%ecx
andl $3,%ecx /* any bytes left? */
rep
movsb
popl %edi
popl %esi
+ popl %ebp
ret
ALIGN_TEXT
@@ -214,7 +217,7 @@ ENTRY(bcopy)
std
rep
movsb
- movl 20(%esp),%ecx /* copy remainder by 32-bit words */
+ movl 16(%ebp),%ecx /* copy remainder by 32-bit words */
shrl $2,%ecx
subl $3,%esi
subl $3,%edi
@@ -223,6 +226,7 @@ ENTRY(bcopy)
popl %edi
popl %esi
cld
+ popl %ebp
ret
END(bcopy)
More information about the svn-src-all
mailing list