Module Name: src Committed By: ryo Date: Tue Nov 2 11:26:05 UTC 2021
Modified Files: src/sys/arch/aarch64/include: cpu.h src/sys/arch/alpha/include: alpha_cpu.h src/sys/arch/amd64/include: cpu.h profile.h src/sys/arch/dreamcast/include: intr.h src/sys/arch/evbsh3/include: intr.h src/sys/arch/hpcsh/include: intr.h src/sys/arch/hppa/include: cpu.h src/sys/arch/i386/include: cpu.h profile.h src/sys/arch/landisk/include: intr.h src/sys/arch/mmeye/include: intr.h src/sys/arch/powerpc/include: cpu.h src/sys/arch/sparc/include: psl.h src/sys/arch/sparc64/include: psl.h src/sys/arch/vax/include: intr.h mtpr.h src/sys/sys: spl.h Log Message: In order to prevent _mcount() from being recursively called when built with COPTS=-O0, sprinkle `__always_inline' to make _mcount() be generated as a single function. To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 src/sys/arch/aarch64/include/cpu.h cvs rdiff -u -r1.54 -r1.55 src/sys/arch/alpha/include/alpha_cpu.h cvs rdiff -u -r1.69 -r1.70 src/sys/arch/amd64/include/cpu.h cvs rdiff -u -r1.20 -r1.21 src/sys/arch/amd64/include/profile.h cvs rdiff -u -r1.9 -r1.10 src/sys/arch/dreamcast/include/intr.h cvs rdiff -u -r1.14 -r1.15 src/sys/arch/evbsh3/include/intr.h cvs rdiff -u -r1.13 -r1.14 src/sys/arch/hpcsh/include/intr.h cvs rdiff -u -r1.11 -r1.12 src/sys/arch/hppa/include/cpu.h cvs rdiff -u -r1.182 -r1.183 src/sys/arch/i386/include/cpu.h cvs rdiff -u -r1.37 -r1.38 src/sys/arch/i386/include/profile.h cvs rdiff -u -r1.6 -r1.7 src/sys/arch/landisk/include/intr.h cvs rdiff -u -r1.12 -r1.13 src/sys/arch/mmeye/include/intr.h cvs rdiff -u -r1.119 -r1.120 src/sys/arch/powerpc/include/cpu.h cvs rdiff -u -r1.49 -r1.50 src/sys/arch/sparc/include/psl.h cvs rdiff -u -r1.61 -r1.62 src/sys/arch/sparc64/include/psl.h cvs rdiff -u -r1.29 -r1.30 src/sys/arch/vax/include/intr.h cvs rdiff -u -r1.23 -r1.24 src/sys/arch/vax/include/mtpr.h cvs rdiff -u -r1.9 -r1.10 src/sys/sys/spl.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/aarch64/include/cpu.h diff -u src/sys/arch/aarch64/include/cpu.h:1.44 src/sys/arch/aarch64/include/cpu.h:1.45 --- src/sys/arch/aarch64/include/cpu.h:1.44 Mon Nov 1 08:53:40 2021 +++ src/sys/arch/aarch64/include/cpu.h Tue Nov 2 11:26:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.44 2021/11/01 08:53:40 skrll Exp $ */ +/* $NetBSD: cpu.h,v 1.45 2021/11/02 11:26:03 ryo Exp $ */ /*- * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc. @@ -177,7 +177,7 @@ struct cpu_info { } __aligned(COHERENCY_UNIT); #ifdef _KERNEL -static inline struct lwp * __attribute__ ((const)) +static inline __always_inline struct lwp * __attribute__ ((const)) aarch64_curlwp(void) { struct lwp *l; Index: src/sys/arch/alpha/include/alpha_cpu.h diff -u src/sys/arch/alpha/include/alpha_cpu.h:1.54 src/sys/arch/alpha/include/alpha_cpu.h:1.55 --- src/sys/arch/alpha/include/alpha_cpu.h:1.54 Thu May 27 22:05:24 2021 +++ src/sys/arch/alpha/include/alpha_cpu.h Tue Nov 2 11:26:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: alpha_cpu.h,v 1.54 2021/05/27 22:05:24 thorpej Exp $ */ +/* $NetBSD: alpha_cpu.h,v 1.55 2021/11/02 11:26:03 ryo Exp $ */ /* * Copyright (c) 1996 Carnegie-Mellon University. @@ -453,7 +453,7 @@ alpha_pal_rdusp(void) return (v0); } -static __inline unsigned long +static __inline __always_inline unsigned long alpha_pal_rdval(void) { register unsigned long v0 __asm("$0"); Index: src/sys/arch/amd64/include/cpu.h diff -u src/sys/arch/amd64/include/cpu.h:1.69 src/sys/arch/amd64/include/cpu.h:1.70 --- src/sys/arch/amd64/include/cpu.h:1.69 Sat Apr 17 20:12:55 2021 +++ src/sys/arch/amd64/include/cpu.h Tue Nov 2 11:26:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.69 2021/04/17 20:12:55 rillig Exp $ */ +/* $NetBSD: cpu.h,v 1.70 2021/11/02 11:26:03 ryo Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -48,7 +48,7 @@ static struct cpu_info *x86_curcpu(void); static lwp_t *x86_curlwp(void); -__inline static struct cpu_info * __unused __nomsan +__inline __always_inline static struct cpu_info * __unused __nomsan x86_curcpu(void) { struct cpu_info *ci; Index: src/sys/arch/amd64/include/profile.h diff -u src/sys/arch/amd64/include/profile.h:1.20 src/sys/arch/amd64/include/profile.h:1.21 --- src/sys/arch/amd64/include/profile.h:1.20 Sat Apr 17 20:12:55 2021 +++ src/sys/arch/amd64/include/profile.h Tue Nov 2 11:26:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: profile.h,v 1.20 2021/04/17 20:12:55 rillig Exp $ */ +/* $NetBSD: profile.h,v 1.21 2021/11/02 11:26:03 ryo Exp $ */ /* * Copyright (c) 1992, 1993 @@ -80,7 +80,7 @@ __asm(" .globl __mcount \n" \ #ifdef _KERNEL #ifdef XENPV -static inline void +static inline __always_inline void mcount_disable_intr(void) { /* should be __cli() but this calls x86_lfence() which calls mcount */ @@ -88,13 +88,13 @@ mcount_disable_intr(void) __asm volatile("lfence" ::: "memory"); /* x86_lfence() */ } -static inline u_long +static inline __always_inline u_long mcount_read_psl(void) { return (curcpu()->ci_vcpu->evtchn_upcall_mask); } -static inline void +static inline __always_inline void mcount_write_psl(u_long psl) { curcpu()->ci_vcpu->evtchn_upcall_mask = psl; @@ -104,13 +104,13 @@ mcount_write_psl(u_long psl) } #else /* XENPV */ -static inline void +static inline __always_inline void mcount_disable_intr(void) { __asm volatile("cli"); } -static inline u_long +static inline __always_inline u_long mcount_read_psl(void) { u_long ef; @@ -119,7 +119,7 @@ mcount_read_psl(void) return (ef); } -static inline void +static inline __always_inline void mcount_write_psl(u_long ef) { __asm volatile("pushq %0; popfq" : : "r" (ef)); Index: src/sys/arch/dreamcast/include/intr.h diff -u src/sys/arch/dreamcast/include/intr.h:1.9 src/sys/arch/dreamcast/include/intr.h:1.10 --- src/sys/arch/dreamcast/include/intr.h:1.9 Mon Apr 28 20:23:16 2008 +++ src/sys/arch/dreamcast/include/intr.h Tue Nov 2 11:26:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.9 2008/04/28 20:23:16 martin Exp $ */ +/* $NetBSD: intr.h,v 1.10 2021/11/02 11:26:03 ryo Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -44,14 +44,14 @@ typedef struct { ipl_t _ipl; } ipl_cookie_t; -static inline ipl_cookie_t +static inline __always_inline ipl_cookie_t makeiplcookie(ipl_t ipl) { return (ipl_cookie_t){._ipl = ipl << 4}; } -static inline int +static inline __always_inline int splraiseipl(ipl_cookie_t icookie) { Index: src/sys/arch/evbsh3/include/intr.h diff -u src/sys/arch/evbsh3/include/intr.h:1.14 src/sys/arch/evbsh3/include/intr.h:1.15 --- src/sys/arch/evbsh3/include/intr.h:1.14 Tue Apr 6 15:54:30 2010 +++ src/sys/arch/evbsh3/include/intr.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.14 2010/04/06 15:54:30 nonaka Exp $ */ +/* $NetBSD: intr.h,v 1.15 2021/11/02 11:26:04 ryo Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -44,14 +44,14 @@ typedef struct { ipl_t _ipl; } ipl_cookie_t; -static inline ipl_cookie_t +static inline __always_inline ipl_cookie_t makeiplcookie(ipl_t ipl) { return (ipl_cookie_t){._ipl = ipl << 4}; } -static inline int +static inline __always_inline int splraiseipl(ipl_cookie_t icookie) { Index: src/sys/arch/hpcsh/include/intr.h diff -u src/sys/arch/hpcsh/include/intr.h:1.13 src/sys/arch/hpcsh/include/intr.h:1.14 --- src/sys/arch/hpcsh/include/intr.h:1.13 Mon Apr 28 20:23:23 2008 +++ src/sys/arch/hpcsh/include/intr.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.13 2008/04/28 20:23:23 martin Exp $ */ +/* $NetBSD: intr.h,v 1.14 2021/11/02 11:26:04 ryo Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -51,14 +51,14 @@ typedef struct { ipl_t _ipl; } ipl_cookie_t; -static inline ipl_cookie_t +static inline __always_inline ipl_cookie_t makeiplcookie(ipl_t ipl) { return (ipl_cookie_t){._ipl = ipl << 4}; } -static inline int +static inline __always_inline int splraiseipl(ipl_cookie_t icookie) { Index: src/sys/arch/hppa/include/cpu.h diff -u src/sys/arch/hppa/include/cpu.h:1.11 src/sys/arch/hppa/include/cpu.h:1.12 --- src/sys/arch/hppa/include/cpu.h:1.11 Sat Aug 14 17:51:19 2021 +++ src/sys/arch/hppa/include/cpu.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.11 2021/08/14 17:51:19 ryo Exp $ */ +/* $NetBSD: cpu.h,v 1.12 2021/11/02 11:26:04 ryo Exp $ */ /* $OpenBSD: cpu.h,v 1.55 2008/07/23 17:39:35 kettenis Exp $ */ @@ -342,7 +342,7 @@ extern int hppa_ncpu; void cpu_boot_secondary_processors(void); #if !defined(_MODULE) -static __inline struct cpu_info * +static __inline __always_inline struct cpu_info * _hppa_curcpu(void) { struct cpu_info *ci; Index: src/sys/arch/i386/include/cpu.h diff -u src/sys/arch/i386/include/cpu.h:1.182 src/sys/arch/i386/include/cpu.h:1.183 --- src/sys/arch/i386/include/cpu.h:1.182 Thu Nov 21 19:24:00 2019 +++ src/sys/arch/i386/include/cpu.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.182 2019/11/21 19:24:00 ad Exp $ */ +/* $NetBSD: cpu.h,v 1.183 2021/11/02 11:26:04 ryo Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -45,7 +45,7 @@ static struct cpu_info *x86_curcpu(void); static lwp_t *x86_curlwp(void); -__inline static struct cpu_info * __unused +__inline __always_inline static struct cpu_info * __unused x86_curcpu(void) { struct cpu_info *ci; Index: src/sys/arch/i386/include/profile.h diff -u src/sys/arch/i386/include/profile.h:1.37 src/sys/arch/i386/include/profile.h:1.38 --- src/sys/arch/i386/include/profile.h:1.37 Thu Jun 8 18:25:14 2017 +++ src/sys/arch/i386/include/profile.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: profile.h,v 1.37 2017/06/08 18:25:14 christos Exp $ */ +/* $NetBSD: profile.h,v 1.38 2021/11/02 11:26:04 ryo Exp $ */ /* * Copyright (c) 1992, 1993 @@ -84,13 +84,13 @@ mcount(void) \ } #ifdef _KERNEL -static inline void +static inline __always_inline void mcount_disable_intr(void) { __asm volatile("cli"); } -static inline u_long +static inline __always_inline u_long mcount_read_psl(void) { u_long ef; @@ -99,7 +99,7 @@ mcount_read_psl(void) return (ef); } -static inline void +static inline __always_inline void mcount_write_psl(u_long ef) { __asm volatile("pushl %0; popfl" : : "r" (ef)); Index: src/sys/arch/landisk/include/intr.h diff -u src/sys/arch/landisk/include/intr.h:1.6 src/sys/arch/landisk/include/intr.h:1.7 --- src/sys/arch/landisk/include/intr.h:1.6 Mon Apr 28 20:23:26 2008 +++ src/sys/arch/landisk/include/intr.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.6 2008/04/28 20:23:26 martin Exp $ */ +/* $NetBSD: intr.h,v 1.7 2021/11/02 11:26:04 ryo Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -44,14 +44,14 @@ typedef struct { ipl_t _ipl; } ipl_cookie_t; -static inline ipl_cookie_t +static inline __always_inline ipl_cookie_t makeiplcookie(ipl_t ipl) { return (ipl_cookie_t){._ipl = ipl << 4}; } -static inline int +static inline __always_inline int splraiseipl(ipl_cookie_t icookie) { Index: src/sys/arch/mmeye/include/intr.h diff -u src/sys/arch/mmeye/include/intr.h:1.12 src/sys/arch/mmeye/include/intr.h:1.13 --- src/sys/arch/mmeye/include/intr.h:1.12 Thu Apr 19 21:50:06 2018 +++ src/sys/arch/mmeye/include/intr.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.12 2018/04/19 21:50:06 christos Exp $ */ +/* $NetBSD: intr.h,v 1.13 2021/11/02 11:26:04 ryo Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -49,14 +49,14 @@ typedef struct { ipl_t _ipl; } ipl_cookie_t; -static __inline ipl_cookie_t +static __inline __always_inline ipl_cookie_t makeiplcookie(ipl_t ipl) { return (ipl_cookie_t){._ipl = ipl << 4}; } -static __inline int +static __inline __always_inline int splraiseipl(ipl_cookie_t icookie) { Index: src/sys/arch/powerpc/include/cpu.h diff -u src/sys/arch/powerpc/include/cpu.h:1.119 src/sys/arch/powerpc/include/cpu.h:1.120 --- src/sys/arch/powerpc/include/cpu.h:1.119 Sat Aug 14 17:51:19 2021 +++ src/sys/arch/powerpc/include/cpu.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.119 2021/08/14 17:51:19 ryo Exp $ */ +/* $NetBSD: cpu.h,v 1.120 2021/11/02 11:26:04 ryo Exp $ */ /* * Copyright (C) 1999 Wolfgang Solfrank. @@ -230,7 +230,7 @@ extern struct cpuset_info cpuset_info; extern struct cpu_info cpu_info[]; static __inline struct cpu_info * curcpu(void) __pure; -static __inline struct cpu_info * +static __inline __always_inline struct cpu_info * curcpu(void) { struct cpu_info *ci; Index: src/sys/arch/sparc/include/psl.h diff -u src/sys/arch/sparc/include/psl.h:1.49 src/sys/arch/sparc/include/psl.h:1.50 --- src/sys/arch/sparc/include/psl.h:1.49 Wed May 18 08:16:04 2016 +++ src/sys/arch/sparc/include/psl.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: psl.h,v 1.49 2016/05/18 08:16:04 nakayama Exp $ */ +/* $NetBSD: psl.h,v 1.50 2021/11/02 11:26:04 ryo Exp $ */ /* * Copyright (c) 1992, 1993 @@ -301,7 +301,7 @@ typedef struct { ipl_t _ipl; } ipl_cookie_t; -static inline ipl_cookie_t +static inline __always_inline ipl_cookie_t makeiplcookie(ipl_t ipl) { @@ -309,7 +309,7 @@ makeiplcookie(ipl_t ipl) } /* Raise IPL and return previous value */ -static __inline int +static __inline __always_inline int splraiseipl(ipl_cookie_t icookie) { int newipl = icookie._ipl; Index: src/sys/arch/sparc64/include/psl.h diff -u src/sys/arch/sparc64/include/psl.h:1.61 src/sys/arch/sparc64/include/psl.h:1.62 --- src/sys/arch/sparc64/include/psl.h:1.61 Wed Nov 13 10:06:38 2019 +++ src/sys/arch/sparc64/include/psl.h Tue Nov 2 11:26:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: psl.h,v 1.61 2019/11/13 10:06:38 nakayama Exp $ */ +/* $NetBSD: psl.h,v 1.62 2021/11/02 11:26:04 ryo Exp $ */ /* * Copyright (c) 1992, 1993 @@ -454,7 +454,7 @@ static __inline int name##X(const char* #else #define SPLPRINT(x) #define SPL(name, newpil) \ -static __inline int name(void) \ +static __inline __always_inline int name(void) \ { \ int oldpil; \ __asm volatile("rdpr %%pil,%0" : "=r" (oldpil)); \ @@ -463,7 +463,7 @@ static __inline int name(void) \ } /* A non-priority-decreasing version of SPL */ #define SPLHOLD(name, newpil) \ -static __inline int name(void) \ +static __inline __always_inline int name(void) \ { \ int oldpil; \ __asm volatile("rdpr %%pil,%0" : "=r" (oldpil)); \ @@ -547,7 +547,7 @@ SPLHOLD(splhigh, PIL_HIGH) static __inline void splxX(int newpil, const char *file, int line) #else -static __inline void splx(int newpil) +static __inline __always_inline void splx(int newpil) #endif { #ifdef SPLDEBUG Index: src/sys/arch/vax/include/intr.h diff -u src/sys/arch/vax/include/intr.h:1.29 src/sys/arch/vax/include/intr.h:1.30 --- src/sys/arch/vax/include/intr.h:1.29 Wed May 13 03:38:08 2009 +++ src/sys/arch/vax/include/intr.h Tue Nov 2 11:26:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.29 2009/05/13 03:38:08 mhitch Exp $ */ +/* $NetBSD: intr.h,v 1.30 2021/11/02 11:26:05 ryo Exp $ */ /* * Copyright (c) 1998 Matt Thomas. @@ -69,19 +69,19 @@ #ifdef _KERNEL typedef int ipl_t; -static inline void +static inline __always_inline void _splset(ipl_t ipl) { mtpr(ipl, PR_IPL); } -static inline ipl_t +static inline __always_inline ipl_t _splget(void) { return mfpr(PR_IPL); } -static inline ipl_t +static inline __always_inline ipl_t splx(ipl_t new_ipl) { ipl_t old_ipl = _splget(); @@ -93,13 +93,13 @@ typedef struct { uint8_t _ipl; } ipl_cookie_t; -static inline ipl_cookie_t +static inline __always_inline ipl_cookie_t makeiplcookie(ipl_t ipl) { return (ipl_cookie_t){._ipl = (uint8_t)ipl}; } -static inline int +static inline __always_inline int splraiseipl(ipl_cookie_t icookie) { ipl_t newipl = icookie._ipl; Index: src/sys/arch/vax/include/mtpr.h diff -u src/sys/arch/vax/include/mtpr.h:1.23 src/sys/arch/vax/include/mtpr.h:1.24 --- src/sys/arch/vax/include/mtpr.h:1.23 Mon May 22 17:12:11 2017 +++ src/sys/arch/vax/include/mtpr.h Tue Nov 2 11:26:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mtpr.h,v 1.23 2017/05/22 17:12:11 ragge Exp $ */ +/* $NetBSD: mtpr.h,v 1.24 2021/11/02 11:26:05 ryo Exp $ */ /* * Copyright (c) 1994 Ludd, University of Lule}, Sweden. @@ -161,7 +161,7 @@ #ifndef _LOCORE -static inline void +static inline __always_inline void mtpr(register_t val, int reg) { __asm volatile ( @@ -171,7 +171,7 @@ mtpr(register_t val, int reg) : "memory"); } -static inline register_t +static inline __always_inline register_t mfpr(int reg) { register_t __val; Index: src/sys/sys/spl.h diff -u src/sys/sys/spl.h:1.9 src/sys/sys/spl.h:1.10 --- src/sys/sys/spl.h:1.9 Sat Mar 7 21:59:25 2009 +++ src/sys/sys/spl.h Tue Nov 2 11:26:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: spl.h,v 1.9 2009/03/07 21:59:25 ad Exp $ */ +/* $NetBSD: spl.h,v 1.10 2021/11/02 11:26:05 ryo Exp $ */ /*- * Copyright (c)2005 YAMAMOTO Takashi, @@ -39,7 +39,7 @@ #endif /* !defined(_KERNEL) && !defined(_KMEMUSER) */ #define _SPL_DECL(x, X) \ - static __inline int \ + static __inline __always_inline int \ spl##x(void) \ { return splraiseipl(makeiplcookie(IPL_##X)); }