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