Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/powerpc/include Make kernel profiling work.



details:   https://anonhg.NetBSD.org/src/rev/0e4dade08d51
branches:  trunk
changeset: 485079:0e4dade08d51
user:      tsubai <tsubai%NetBSD.org@localhost>
date:      Tue Apr 18 17:06:01 2000 +0000

description:
Make kernel profiling work.

diffstat:

 sys/arch/powerpc/include/profile.h |  39 +++++++++++++++++++++++++++++++++++--
 1 files changed, 36 insertions(+), 3 deletions(-)

diffs (51 lines):

diff -r 5680c9f57386 -r 0e4dade08d51 sys/arch/powerpc/include/profile.h
--- a/sys/arch/powerpc/include/profile.h        Tue Apr 18 16:38:12 2000 +0000
+++ b/sys/arch/powerpc/include/profile.h        Tue Apr 18 17:06:01 2000 +0000
@@ -1,4 +1,30 @@
-/*     $NetBSD: profile.h,v 1.4 1999/03/05 07:59:14 tsubai Exp $       */
+/*     $NetBSD: profile.h,v 1.5 2000/04/18 17:06:01 tsubai Exp $       */
+
+/*-
+ * Copyright (c) 2000 Tsubai Masanari.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
 
 #define        _MCOUNT_DECL    void mcount
 
@@ -42,6 +68,13 @@
        bctr;                   ");
 
 #ifdef _KERNEL
-#define        MCOUNT_ENTER
-#define        MCONT_EXIT
+#define MCOUNT_ENTER                                           \
+       __asm volatile("mfmsr %0" : "=r"(s));                   \
+       if ((s & (PSL_IR | PSL_DR)) != (PSL_IR | PSL_DR))       \
+               return;         /* XXX */                       \
+       s &= ~PSL_POW;                                          \
+       __asm volatile("mtmsr %0" :: "r"(s & ~PSL_EE))
+
+#define MCOUNT_EXIT                                            \
+       __asm volatile("mtmsr %0" :: "r"(s))
 #endif



Home | Main Index | Thread Index | Old Index