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)
  *  w...@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)
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to