Module Name: src Committed By: martin Date: Thu Mar 22 17:03:02 UTC 2018
Modified Files: src/sys/arch/i386/include [netbsd-8]: profile.h Log Message: Pull up following revision(s) (requested by christos in ticket #653): sys/arch/i386/include/profile.h: revision 1.36 sys/arch/i386/include/profile.h: revision 1.37 - prevent optimization from omitting the frame pointer (and re-using it); we use it in our inline assembly. - convert to c a little assembly to make the code more understandable. use compiler builtins to compute addresses instead %ebp assembly arithmetic. (from joerg) To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.35.2.1 src/sys/arch/i386/include/profile.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/i386/include/profile.h diff -u src/sys/arch/i386/include/profile.h:1.35 src/sys/arch/i386/include/profile.h:1.35.2.1 --- src/sys/arch/i386/include/profile.h:1.35 Wed May 31 01:50:19 2017 +++ src/sys/arch/i386/include/profile.h Thu Mar 22 17:03:02 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: profile.h,v 1.35 2017/05/31 01:50:19 christos Exp $ */ +/* $NetBSD: profile.h,v 1.35.2.1 2018/03/22 17:03:02 martin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -71,12 +71,11 @@ mcount(void) \ * \ * selfpc = pc pushed by mcount call \ */ \ - __asm volatile("movl 4(%%ebp),%0" : "=r" (selfpc)); \ + selfpc = (int)__builtin_return_address(0); \ /* \ - * frompcindex = pc pushed by call into self. \ + * frompcindex = stack frame of caller, assuming frame pointer \ */ \ - __asm volatile("movl (%%ebp),%0;movl 4(%0),%0" \ - : "=r" (frompcindex)); \ + frompcindex = ((int *)__builtin_frame_address(1))[1]; \ _mcount((u_long)frompcindex, (u_long)selfpc); \ \ __asm volatile("movl %0,%%edx" : : "g" (edx)); \