From 20bb672266e12a9a4f491a4ba3202cb1dfc235a1 Mon Sep 17 00:00:00 2001 From: Peter Bigot Date: Mon, 12 Aug 2019 12:53:19 -0500 Subject: [PATCH] arch/nios2: rearrange for standard use of extern "C" Consistently place C++ use of extern "C" after all include directives, within the negative branch of _ASMLANGUAGE if used. Remove extern "C" support from files that don't declare objects or functions. Background from issue #17997: Declarations that use C linkage should be placed within extern "C" so the language linkage is correct when the header is included by a C++ compiler. Similarly #include directives should be outside the extern "C" to ensure the language-specific default linkage is applied to any declarations provided by the included header. See: https://en.cppreference.com/w/cpp/language/language_linkage Signed-off-by: Peter Bigot --- arch/nios2/include/kernel_arch_data.h | 26 ++++++++++++-------------- include/arch/nios2/arch.h | 13 ++++++------- include/arch/nios2/asm_inline_gcc.h | 8 -------- 3 files changed, 18 insertions(+), 29 deletions(-) diff --git a/arch/nios2/include/kernel_arch_data.h b/arch/nios2/include/kernel_arch_data.h index ae2c7d69433..6643103f37f 100644 --- a/arch/nios2/include/kernel_arch_data.h +++ b/arch/nios2/include/kernel_arch_data.h @@ -21,23 +21,11 @@ #ifndef ZEPHYR_ARCH_NIOS2_INCLUDE_KERNEL_ARCH_DATA_H_ #define ZEPHYR_ARCH_NIOS2_INCLUDE_KERNEL_ARCH_DATA_H_ -#ifdef __cplusplus -extern "C" { -#endif - #include #include #include #include -#ifndef _ASMLANGUAGE -#include -#include -#include -#include -#include -#endif - /* stacks */ #define STACK_ALIGN_SIZE 4 @@ -47,12 +35,22 @@ extern "C" { #ifndef _ASMLANGUAGE -extern K_THREAD_STACK_DEFINE(_interrupt_stack, CONFIG_ISR_STACK_SIZE); +#include +#include +#include +#include +#include -#endif /* _ASMLANGUAGE */ +#ifdef __cplusplus +extern "C" { +#endif + +extern K_THREAD_STACK_DEFINE(_interrupt_stack, CONFIG_ISR_STACK_SIZE); #ifdef __cplusplus } #endif +#endif /* _ASMLANGUAGE */ + #endif /* ZEPHYR_ARCH_NIOS2_INCLUDE_KERNEL_ARCH_DATA_H_ */ diff --git a/include/arch/nios2/arch.h b/include/arch/nios2/arch.h index 82d82c8f37f..b59feba5a25 100644 --- a/include/arch/nios2/arch.h +++ b/include/arch/nios2/arch.h @@ -22,10 +22,6 @@ #include #include -#ifdef __cplusplus -extern "C" { -#endif - #define STACK_ALIGN 4 #ifndef _ASMLANGUAGE @@ -33,6 +29,9 @@ extern "C" { #include #include +#ifdef __cplusplus +extern "C" { +#endif /** * Configure a static interrupt. @@ -210,10 +209,10 @@ static ALWAYS_INLINE void arch_nop(void) __asm__ volatile("nop"); } -#endif /* _ASMLANGUAGE */ - #ifdef __cplusplus } #endif -#endif +#endif /* _ASMLANGUAGE */ + +#endif /* ZEPHYR_INCLUDE_ARCH_NIOS2_ARCH_H_ */ diff --git a/include/arch/nios2/asm_inline_gcc.h b/include/arch/nios2/asm_inline_gcc.h index 8846e981de8..9f4a428f1f3 100644 --- a/include/arch/nios2/asm_inline_gcc.h +++ b/include/arch/nios2/asm_inline_gcc.h @@ -7,10 +7,6 @@ #ifndef ZEPHYR_INCLUDE_ARCH_NIOS2_ASM_INLINE_GCC_H_ #define ZEPHYR_INCLUDE_ARCH_NIOS2_ASM_INLINE_GCC_H_ -#ifdef __cplusplus -extern "C" { -#endif - /* * The file must not be included directly * Include arch/cpu.h instead @@ -21,8 +17,4 @@ extern "C" { #include #endif /* _ASMLANGUAGE */ -#ifdef __cplusplus -} -#endif - #endif /* _ASM_INLINE_GCC_PUBLIC_GCC_H */