Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-8]: src/sys/arch/i386/include Pull up following revision(s) (requ...
details: https://anonhg.NetBSD.org/src/rev/94a8972a8359
branches: netbsd-8
changeset: 851511:94a8972a8359
user: martin <martin%NetBSD.org@localhost>
date: Thu Mar 22 17:03:02 2018 +0000
description:
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)
diffstat:
sys/arch/i386/include/profile.h | 9 ++++-----
1 files changed, 4 insertions(+), 5 deletions(-)
diffs (25 lines):
diff -r c40743b98f57 -r 94a8972a8359 sys/arch/i386/include/profile.h
--- a/sys/arch/i386/include/profile.h Thu Mar 22 16:59:03 2018 +0000
+++ b/sys/arch/i386/include/profile.h Thu Mar 22 17:03:02 2018 +0000
@@ -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 @@
* \
* 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)); \
Home |
Main Index |
Thread Index |
Old Index