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:
parent
cbf04bd9c1
commit
b39f834413
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user