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
This commit is contained in:
kib 2013-07-13 19:42:52 +00:00
parent cbf04bd9c1
commit b39f834413

View File

@ -181,11 +181,13 @@ END(bcopyb)
* ws@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)