diff --git a/libmetal/lib/atomic.h b/libmetal/lib/atomic.h index 44d6b9a..90471f3 100644 --- a/libmetal/lib/atomic.h +++ b/libmetal/lib/atomic.h @@ -101,7 +101,11 @@ using std::atomic_signal_fence; #elif defined(__GNUC__) # include #else +#if defined(HAVE_PROCESSOR_ATOMIC_H) # include +#else +# include +#endif /* defined(HAVE_PROCESSOR_ATOMIC_H) */ #endif #endif /* __METAL_ATOMIC__H__ */ diff --git a/libmetal/lib/config.h b/libmetal/lib/config.h index 7661a13..3b64a26 100644 --- a/libmetal/lib/config.h +++ b/libmetal/lib/config.h @@ -42,6 +42,8 @@ extern "C" { #cmakedefine HAVE_STDATOMIC_H #cmakedefine HAVE_FUTEX_H +#cmakedefine HAVE_PROCESSOR_ATOMIC_H +#cmakedefine HAVE_PROCESSOR_CPU_H #ifdef __cplusplus } diff --git a/libmetal/lib/cpu.h b/libmetal/lib/cpu.h index 9deade6..5f9343b 100644 --- a/libmetal/lib/cpu.h +++ b/libmetal/lib/cpu.h @@ -12,6 +12,10 @@ #ifndef __METAL_CPU__H__ #define __METAL_CPU__H__ +#if defined(HAVE_PROCESSOR_CPU_H) # include +#else +# include +#endif #endif /* __METAL_CPU__H__ */ diff --git a/libmetal/lib/processor/CMakeLists.txt b/libmetal/lib/processor/CMakeLists.txt index eea2509..8287645 100644 --- a/libmetal/lib/processor/CMakeLists.txt +++ b/libmetal/lib/processor/CMakeLists.txt @@ -1,3 +1,15 @@ -add_subdirectory (${PROJECT_PROCESSOR}) +if (EXISTS "${PROJECT_PROCESSOR}/cpu.h") + collect (PROJECT_LIB_HEADERS ${PROJECT_PROCESSOR}/cpu.h) + set(HAVE_PROCESSOR_CPU_H 1 INTERNAL CACHE "") +else() + collect (PROJECT_LIB_HEADERS generic/cpu.h) +endif() + +if (EXISTS "${PROJECT_PROCESSOR}/atomic.h") + collect (PROJECT_LIB_HEADERS ${PROJECT_PROCESSOR}/atomic.h) + set(HAVE_PROCESSOR_ATOMIC_H 1 INTERNAL CACHE "") +else() + collect (PROJECT_LIB_HEADERS generic/atomic.h) +endif() # vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/aarch64/CMakeLists.txt b/libmetal/lib/processor/aarch64/CMakeLists.txt deleted file mode 100644 index 9e9c101..0000000 --- a/libmetal/lib/processor/aarch64/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -collect (PROJECT_LIB_HEADERS atomic.h) -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/aarch64/atomic.h b/libmetal/lib/processor/aarch64/atomic.h deleted file mode 100644 index 410346c..0000000 --- a/libmetal/lib/processor/aarch64/atomic.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file gcc/atomic.h - * @brief GCC specific atomic primitives for libmetal. - */ - -#ifndef __METAL_AARCH64_ATOMIC__H__ -#define __METAL_AARCH64_ATOMIC__H__ - -#endif /* __METAL_ARM_ATOMIC__H__ */ diff --git a/libmetal/lib/processor/arm/CMakeLists.txt b/libmetal/lib/processor/arm/CMakeLists.txt deleted file mode 100644 index 9e9c101..0000000 --- a/libmetal/lib/processor/arm/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -collect (PROJECT_LIB_HEADERS atomic.h) -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/arm/atomic.h b/libmetal/lib/processor/arm/atomic.h deleted file mode 100644 index ab5ee40..0000000 --- a/libmetal/lib/processor/arm/atomic.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file arm/atomic.h - * @brief Arm specific atomic primitives for libmetal. - */ - -#ifndef __METAL_ARM_ATOMIC__H__ -#define __METAL_ARM_ATOMIC__H__ - -#endif /* __METAL_ARM_ATOMIC__H__ */ diff --git a/libmetal/lib/processor/arm/cpu.h b/libmetal/lib/processor/arm/cpu.h deleted file mode 100644 index 0ea9610..0000000 --- a/libmetal/lib/processor/arm/cpu.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file cpu.h - * @brief CPU specific primitives - */ - -#ifndef __METAL_ARM_CPU__H__ -#define __METAL_ARM_CPU__H__ - -#define metal_cpu_yield() - -#endif /* __METAL_ARM_CPU__H__ */ diff --git a/libmetal/lib/processor/ceva/CMakeLists.txt b/libmetal/lib/processor/ceva/CMakeLists.txt deleted file mode 100644 index c06e951..0000000 --- a/libmetal/lib/processor/ceva/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/csky/CMakeLists.txt b/libmetal/lib/processor/csky/CMakeLists.txt deleted file mode 100644 index c06e951..0000000 --- a/libmetal/lib/processor/csky/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/csky/cpu.h b/libmetal/lib/processor/csky/cpu.h deleted file mode 100644 index a393848..0000000 --- a/libmetal/lib/processor/csky/cpu.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2018, Pinecone Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file cpu.h - * @brief CPU specific primitives - */ - -#ifndef __METAL_CSKY_CPU__H__ -#define __METAL_CSKY_CPU__H__ - -#define metal_cpu_yield() - -#endif /* __METAL_CSKY_CPU__H__ */ diff --git a/libmetal/lib/processor/generic/atomic.h b/libmetal/lib/processor/generic/atomic.h new file mode 100644 index 0000000..9a2b252 --- /dev/null +++ b/libmetal/lib/processor/generic/atomic.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2023 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * @file generic/atomic.h + * @brief Generic environment atomic primitives for libmetal. + */ + +#ifndef __METAL_GENERIC_ATOMIC__H__ +#define __METAL_GENERIC_ATOMIC__H__ + +#endif /* __METAL_GENERIC_ATOMIC__H__ */ diff --git a/libmetal/lib/processor/generic/cpu.h b/libmetal/lib/processor/generic/cpu.h new file mode 100644 index 0000000..60a7257 --- /dev/null +++ b/libmetal/lib/processor/generic/cpu.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * @file generic/cpu.h + * @brief Generic CPU specific primitives + */ + +#ifndef __METAL_GENERIC_CPU__H__ +#define __METAL_GENERIC_CPU__H__ + +#define metal_cpu_yield() + +#endif /* __METAL_GENERIC_CPU__H__ */ diff --git a/libmetal/lib/processor/hosted/CMakeLists.txt b/libmetal/lib/processor/hosted/CMakeLists.txt deleted file mode 100644 index 13ce023..0000000 --- a/libmetal/lib/processor/hosted/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -collect (PROJECT_LIB_HEADERS atomic.h) -collect (PROJECT_LIB_HEADERS cpu.h) diff --git a/libmetal/lib/processor/hosted/atomic.h b/libmetal/lib/processor/hosted/atomic.h deleted file mode 100644 index ed153c3..0000000 --- a/libmetal/lib/processor/hosted/atomic.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2023 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file hosted/atomic.h - * @brief Hosted environment atomic primitives for libmetal. - */ - -#ifndef __METAL_HOSTED_ATOMIC__H__ -#define __METAL_HOSTED_ATOMIC__H__ - -#endif /* __METAL_HOSTED_ATOMIC__H__ */ diff --git a/libmetal/lib/processor/microblaze/CMakeLists.txt b/libmetal/lib/processor/microblaze/CMakeLists.txt deleted file mode 100644 index 9e9c101..0000000 --- a/libmetal/lib/processor/microblaze/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -collect (PROJECT_LIB_HEADERS atomic.h) -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/microblaze/atomic.h b/libmetal/lib/processor/microblaze/atomic.h deleted file mode 100644 index d576662..0000000 --- a/libmetal/lib/processor/microblaze/atomic.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2017, Xilinx Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file microblaze/atomic.h - * @brief Microblaze specific atomic primitives for libmetal - */ - -#ifndef __METAL_MICROBLAZE_ATOMIC__H__ -#define __METAL_MICROBLAZE_ATOMIC__H__ - -#endif /* __METAL_MICROBLAZE_ATOMIC__H__ */ diff --git a/libmetal/lib/processor/microblaze/cpu.h b/libmetal/lib/processor/microblaze/cpu.h deleted file mode 100644 index 012df46..0000000 --- a/libmetal/lib/processor/microblaze/cpu.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2017, Xilinx Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file cpu.h - * @brief CPU specific primitives on microblaze platform. - */ - -#ifndef __METAL_MICROBLAZE__H__ -#define __METAL_MICROBLAZE__H__ - -#include -#include - -#define metal_cpu_yield() - -#endif /* __METAL_MICROBLAZE__H__ */ diff --git a/libmetal/lib/processor/riscv/CMakeLists.txt b/libmetal/lib/processor/riscv/CMakeLists.txt deleted file mode 100644 index c06e951..0000000 --- a/libmetal/lib/processor/riscv/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/riscv/cpu.h b/libmetal/lib/processor/riscv/cpu.h deleted file mode 100644 index ff02d9f..0000000 --- a/libmetal/lib/processor/riscv/cpu.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2018, Pinecone Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file cpu.h - * @brief CPU specific primitives - */ - -#ifndef __METAL_RISCV_CPU__H__ -#define __METAL_RISCV_CPU__H__ - -#define metal_cpu_yield() - -#endif /* __METAL_RISCV_CPU__H__ */ diff --git a/libmetal/lib/processor/x86/CMakeLists.txt b/libmetal/lib/processor/x86/CMakeLists.txt deleted file mode 100644 index 9e9c101..0000000 --- a/libmetal/lib/processor/x86/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -collect (PROJECT_LIB_HEADERS atomic.h) -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/x86/atomic.h b/libmetal/lib/processor/x86/atomic.h deleted file mode 100644 index bf98a9d..0000000 --- a/libmetal/lib/processor/x86/atomic.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file gcc/atomic.h - * @brief GCC specific atomic primitives for libmetal. - */ - -#ifndef __METAL_X86_ATOMIC__H__ -#define __METAL_X86_ATOMIC__H__ - - -#endif /* __METAL_X86_ATOMIC__H__ */ diff --git a/libmetal/lib/processor/x86_64/CMakeLists.txt b/libmetal/lib/processor/x86_64/CMakeLists.txt deleted file mode 100644 index 9e9c101..0000000 --- a/libmetal/lib/processor/x86_64/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -collect (PROJECT_LIB_HEADERS atomic.h) -collect (PROJECT_LIB_HEADERS cpu.h) - -# vim: expandtab:ts=2:sw=2:smartindent diff --git a/libmetal/lib/processor/x86_64/atomic.h b/libmetal/lib/processor/x86_64/atomic.h deleted file mode 100644 index ee77399..0000000 --- a/libmetal/lib/processor/x86_64/atomic.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file gcc/atomic.h - * @brief GCC specific atomic primitives for libmetal. - */ - -#ifndef __METAL_X86_64_ATOMIC__H__ -#define __METAL_X86_64_ATOMIC__H__ - - -#endif /* __METAL_X86_64_ATOMIC__H__ */ diff --git a/libmetal/lib/processor/xtensa/CMakeLists.txt b/libmetal/lib/processor/xtensa/CMakeLists.txt deleted file mode 100644 index 13ce023..0000000 --- a/libmetal/lib/processor/xtensa/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -collect (PROJECT_LIB_HEADERS atomic.h) -collect (PROJECT_LIB_HEADERS cpu.h) diff --git a/libmetal/lib/processor/xtensa/atomic.h b/libmetal/lib/processor/xtensa/atomic.h deleted file mode 100644 index 6f87ea9..0000000 --- a/libmetal/lib/processor/xtensa/atomic.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2021, Xiaomi Inc. and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * @file xtensa/atomic.h - * @brief Xtensa specific atomic primitives for libmetal. - */ - -#ifndef __METAL_XTENSA_ATOMIC__H__ -#define __METAL_XTENSA_ATOMIC__H__ - -#endif /* __METAL_XTENSA_ATOMIC__H__ */