nuttx/libs/libc/machine/Make.defs
zhangyu117 b25f6f8a86 libc/machine: realize atomic based on hwspinlock
Implement atomic_lock/atomic_unlock using hwspinlock when
CONFIG_LIBC_ATOMIC_HWSPINLOCK is selected, and using up_irq_save/
up_irq_restore when CONFIG_LIBC_ATOMIC_IRQ is selected. Rename
arch_atomic_irq.c to arch_atomic.c.

The 64-bit atomic operations use spinlock (spin_lock_irqsave)
regardless of the selected backend, ensuring multi-core safety.

Signed-off-by: zhangyu117 <zhangyu117@xiaomi.com>
2026-08-27 11:13:29 +08:00

68 lines
2.2 KiB
Text

############################################################################
# libs/libc/machine/Make.defs
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
ifneq ($(filter y,$(CONFIG_LIBC_ATOMIC_IRQ)$(CONFIG_LIBC_ATOMIC_HWSPINLOCK)),)
CSRCS += arch_atomic.c
endif
CSRCS += arch_atomic64.c
ifeq ($(CONFIG_MM_KASAN),y)
CSRCS += arch_libc.c
endif
ifeq ($(CONFIG_ARCH_ARM),y)
include $(TOPDIR)/libs/libc/machine/arm/Make.defs
endif
ifeq ($(CONFIG_ARCH_ARM64),y)
include $(TOPDIR)/libs/libc/machine/arm64/Make.defs
endif
ifeq ($(CONFIG_ARCH_MIPS),y)
include $(TOPDIR)/libs/libc/machine/mips/Make.defs
endif
ifeq ($(CONFIG_ARCH_RISCV),y)
include $(TOPDIR)/libs/libc/machine/risc-v/Make.defs
endif
ifeq ($(CONFIG_ARCH_SIM),y)
include $(TOPDIR)/libs/libc/machine/sim/Make.defs
endif
ifeq ($(CONFIG_ARCH_X86),y)
include $(TOPDIR)/libs/libc/machine/x86/Make.defs
endif
ifeq ($(CONFIG_ARCH_X86_64),y)
include $(TOPDIR)/libs/libc/machine/x86_64/Make.defs
endif
ifeq ($(CONFIG_ARCH_XTENSA),y)
include $(TOPDIR)/libs/libc/machine/xtensa/Make.defs
endif
ifeq ($(CONFIG_ARCH_RENESAS),y)
include $(TOPDIR)/libs/libc/machine/renesas/Make.defs
endif
ifeq ($(CONFIG_ARCH_SPARC),y)
include $(TOPDIR)/libs/libc/machine/sparc/Make.defs
endif
ifeq ($(CONFIG_ARCH_TRICORE),y)
include $(TOPDIR)/libs/libc/machine/tricore/Make.defs
endif
DEPPATH += --dep-path machine
VPATH += :machine