walnux: moveout
Some checks failed
Build Documentation / build-html (push) Has been cancelled
Docker-Linux / push (push) Has been cancelled

This commit is contained in:
Luchian Mihai 2025-10-30 10:06:57 +02:00
parent a00ac581c5
commit 7335b36eca
5810 changed files with 6470 additions and 77599 deletions

2769
Kconfig

File diff suppressed because it is too large Load diff

1917
Kconfig.debug Normal file

File diff suppressed because it is too large Load diff

72
Kconfig.license Normal file
View file

@ -0,0 +1,72 @@
config ALLOW_BSD_COMPONENTS
bool "Use components that have BSD licenses"
default n
---help---
When this option is enabled the project will allow the use
of components that have BSD licenses.
NOTE: Please check that the license for each enabled
component matches your project license.
NOTE: If this option is not set the following components
are not included in the setup menu:
Crypto
AES cypher support
FS
NFS client file system
SPIFFS File System
Wireless
Bluetooth LE support
config ALLOW_GPL_COMPONENTS
bool "Use components that have GPL/LGPL licenses"
default n
---help---
When this option is enabled the project will allow the use
of components that have GPL/LGPL licenses.
NOTE: Please check that the license for each enabled
component matches your project license.
config ALLOW_MIT_COMPONENTS
bool "Use components that have MIT licenses"
default n
---help---
When this option is enabled the project will allow the use
of components that have MIT licenses.
NOTE: Please check that the license for each enabled
component matches your project license.
config ALLOW_BSDNORDIC_COMPONENTS
bool "Use components that have 5-Clause Nordic licenses"
depends on ARCH_CHIP_NRF52 || ARCH_CHIP_NRF53 || ARCH_CHIP_NRF91
default n
---help---
When this option is enabled the project will allow the use
of components that have 5-Clause Nordic licenses.
NOTE: Please check that the license for each enabled
component matches your project license.
config ALLOW_ECLIPSE_COMPONENTS
bool "Use components that have Eclipse Public Licenses"
default n
---help---
When this option is enabled the project will allow the use
of components that have EPL licenses.
NOTE: Please check that the license for each enabled
component matches your project license.
config ALLOW_ICS_COMPONENTS
bool "Use components that have ICS license"
default n
---help---
When this option is enabled the project will allow the use
of components that have ICS licenses.
NOTE: Please check that the license for each enabled
component matches your project license.

506
Kconfig.setup Normal file
View file

@ -0,0 +1,506 @@
menu "Build Setup"
config EXPERIMENTAL
bool "Show experimental options"
---help---
Some features and drivers are considered "experimental" or
development/work-in-progress status. By default, these options are
hidden in the Kconfig menus. Enabling "Show experimental options"
makes these options visible and makes it possible to enable them.
config DEFAULT_SMALL
bool "Default to smallest size"
default n
---help---
When options are present, the default value for certain options will
be the one the results in the smallest size (at a loss of features).
The default is a fuller feature set at a larger size.
NOTE: This option does not prevent you from overriding the default
to select another alternative. Nor does it affect the settings that
have already been selected in your configuration file. This applies
only to new settings that require a default value.
choice
prompt "Build Host Platform"
default HOST_LINUX
config HOST_LINUX
bool "Linux"
config HOST_MACOS
bool "macOS"
endchoice # Build Host Platform
choice
prompt "Windows Build Environment"
default WINDOWS_MSYS
depends on HOST_WINDOWS
config WINDOWS_MSYS
bool "MSYS or MSYS2"
select TOOLCHAIN_WINDOWS
---help---
Build natively in a Cygwin environment with POSIX style paths (like
/cygdrive/c/cygwin/home)
endchoice # Windows Build Environment
menu "Build Configuration"
config BASE_DEFCONFIG
string "Base Configuration"
default ""
---help---
This will be automatically be updated by the configuration
script. This is the base configuration file that was used to create the
current configuration. It is useful for getting the current configuration
on runtime.
config MODULES
bool
option modules
---help---
Automatically selected if KERNEL build is selected.
This selection marks the implementation of Kconfig
to enable the module build function, and is used to
enable 'm' in the triate state. Its semantics are
consistent with Kernel. This selection also effects
the behavior of the 'make export' target and currently
has no effect unless you wish to build loadable applications
in a FLAT build.
choice
prompt "Memory organization"
default BUILD_FLAT
config BUILD_FLAT
bool "Flat address space"
---help---
Build NuttX as one large, executable "blob". All of the code
within the blob can interrupt with all of the other code within
the blob. There are no special privileges, protections, or
restraints.
config BUILD_PROTECTED
bool "NuttX protected build"
depends on ARCH_USE_MPU
select LIB_SYSCALL
select BUILD_2PASS
---help---
Builds NuttX and selected applications as two "blobs": A protected,
privileged kernel blob and a separate unprivileged, user blob. This
requires use of the two pass build with each blob being build on
each pass.
NOTE: This build configuration requires that the platform support
a memory protection unit (MPU). Support, however, may not be
implemented on all platforms.
config BUILD_KERNEL
bool "NuttX kernel build"
depends on ARCH_USE_MMU && ARCH_ADDRENV
select LIB_SYSCALL
select MODULES
---help---
Builds NuttX as a separately compiled kernel. No applications are
built. All user applications must reside in a file system where
they can be loaded into memory for execution.
NOTE: This build configuration requires that the platform support
a memory management unit (MMU) and address environments. Support,
however, may not be implemented on all platforms.
endchoice # Build configuration
config BUILD_PIC
bool "NuttX PIC build"
default n
---help---
Builds NuttX with position-independent code (PIC). This will allow
load NuttX into memory at any address and run it.
endmenu # Build Setup
menu "Customize Header Files"
config ARCH_HAVE_STDINT_H
bool
default n
---help---
Selected by architecture specific logic if the architecture provides
a stdint.h header file.
config ARCH_STDINT_H
bool "stdint.h"
default n
depends on ARCH_HAVE_STDINT_H
---help---
The stdint.h header file can be found at nuttx/include/stdint.h.
However, that header includes logic to redirect the inclusion of an
architecture specific header file like:
#ifdef CONFIG_ARCH_STDINT_H
# include <arch/stdint.h>
#else
...
#endif
Recall that that include path, include/arch, is a symbolic link and
will refer to a version of stdint.h at nuttx/arch/<architecture>/include/stdint.h.
config ARCH_HAVE_STDBOOL_H
bool
default n
---help---
Selected by architecture specific logic if the architecture provides
a stdbool.h header file.
config ARCH_STDBOOL_H
bool "stdbool.h"
default n
depends on ARCH_HAVE_STDBOOL_H
---help---
The stdbool.h header file can be found at nuttx/include/stdbool.h.
However, that header includes logic to redirect the inclusion of an
architecture specific header file like:
#ifdef CONFIG_ARCH_STDBOOL_H
# include <arch/stdbool.h>
#else
...
#endif
Recall that that include path, include/arch, is a symbolic link and
will refer to a version of stdbool.h at nuttx/arch/<architecture>/include/stdbool.h.
config ARCH_HAVE_MATH_H
bool
default n
---help---
Selected by architecture specific logic if the architecture provides
a math.h header file.
config ARCH_MATH_H
bool "math.h"
depends on ARCH_HAVE_MATH_H
default n
---help---
There is also a re-directing version of math.h in the source tree.
However, it resides out-of-the-way at include/nuttx/lib/math.h because it
conflicts too often with the system math.h. If ARCH_MATH_H=y is
defined, however, the top-level makefile will copy the redirecting
math.h header file from include/nuttx/lib/math.h to include/math.h. math.h
will then include the architecture-specific version of math.h that you
must provide at nuttx/arch/>architecture</include/math.h.
#ifdef CONFIG_ARCH_MATH_H
# include <arch/math.h>
#endif
So for the architectures that define ARCH_MATH_H=y, include/math.h
will be the redirecting math.h header file; for the architectures
that don't select ARCH_MATH_H, the redirecting math.h header file
will stay out-of-the-way in include/nuttx/.
config ARCH_FLOAT_H
bool "float.h"
default n
---help---
The float.h header file defines the properties of your floating
point implementation. It would always be best to use your
toolchain's float.h header file but if none is available, a default
float.h header file will provided if this option is selected. However
there is no assurance that the settings in this float.h are actually
correct for your platform!
config DISABLE_FLOAT
bool "Disable floating point"
default n
---help---
Disable floating point support in the compiler. This will reduce
code size and increase performance. This option is only available
on some architectures.
config ARCH_HAVE_STDARG_H
bool
default n
---help---
Selected by architecture specific logic if the architecture provides
a math.h header file.
config ARCH_STDARG_H
bool "stdarg.h"
depends on ARCH_HAVE_STDARG_H
default n
---help---
There is a redirecting version of stdarg.h in the source tree. It
resides out-of-the-way at include/nuttx/lib/stdarg.h. This is
because you should normally use your toolchain's stdarg.h file. But
sometimes, your toolchain's stdarg.h file may have other header
file dependencies and so may not be usable in the NuttX build
environment. In those cases, you may have to create a architecture-
specific stdarg.h header file at nuttx/arch/<architecture>/include/stdarg.h
If ARCH_STDARG_H=y is defined, the top-level makefile will copy the
re-directing stdarg.h header file from include/nuttx/lib/stdarg.h to
include/stdarg.h. So for the architectures that cannot use their
toolchain's stdarg.h file, they can use this alternative by defining
ARCH_STDARG_H=y and providing. If ARCH_STDARG_H, is not defined, then
the stdarg.h header file will stay out-of-the-way in include/nuttx/.
config ARCH_HAVE_SETJMP
bool
default n
config ARCH_SETJMP_H
bool "setjmp.h"
default n
depends on ARCH_HAVE_SETJMP
---help---
There is a redirecting version of setjmp.h in the source tree. It
resides out-of-the-way at include/nuttx/lib/setjmp.h. This is
because you should normally use your toolchain's setjmp.h file. But
sometimes, your toolchain's setjmp.h file may have other header
file dependencies and so may not be usable in the NuttX build
environment. In those cases, you may have to create a architecture-
specific setjmp.h header file at nuttx/arch/<architecture>/include/setjmp.h
If ARCH_SETJMP_H=y is defined, the top-level makefile will copy the
re-directing setjmp.h header file from include/nuttx/lib/setjmp.h to
include/setjmp.h. So for the architectures that cannot use their
toolchain's setjmp.h file, they can use this alternative by defining
ARCH_SETJMP_H=y and providing. If ARCH_SETJMP_H, is not defined, then
the setjmp.h header file will stay out-of-the-way in include/nuttx/.
choice
prompt "debug.h selection"
default ARCH_NONE_DEBUG_H
config ARCH_NONE_DEBUG_H
bool "None"
---help---
No debug.h under include/arch/ and include/arch/chip.
config ARCH_DEBUG_H
bool "debug.h"
---help---
The debug.h under include/arch contains architecture dependent debugging primitives
config ARCH_CHIP_DEBUG_H
bool "chip debug.h"
---help---
The debug.h under include/arch/chip contains architecture dependent debugging primitives
config ARCH_BOARD_DEBUG_H
bool "board debug.h"
---help---
The debug.h under include/arch/board contains board dependent debugging primitives
endchoice # debug.h selection
endmenu # Customize Header Files
source "Kconfig.debug"
menuconfig TRACE
bool "Enable tracepoints"
default n
depends on SCHED_INSTRUMENTATION_DUMP
---help---
If this option is enabled, tracepoints at critical code in
the kernel will be enabled.
if TRACE
config TRACE_APP
bool "Enable tracepoints in app"
default n
config TRACE_ARCH
bool "Enable tracepoints in arch"
default n
config TRACE_AUDIO
bool "Enable tracepoints in audio"
default n
config TRACE_BOARDS
bool "Enable tracepoints in boards"
default n
config TRACE_CRYPTO
bool "Enable tracepoints in crypto"
default n
config TRACE_DRIVERS
bool "Enable tracepoints in drivers"
default n
config TRACE_FS
bool "Enable tracepoints in fs"
default n
if TRACE_FS
menu "Trace Fs Support"
config TRACE_LITTLEFS_FS
bool "Enable tracepoints in littlefs"
default n
config TRACE_ROMFS_FS
bool "Enable tracepoints in romfs"
default n
config TRACE_RPMSGFS_FS
bool "Enable tracepoints in rpmsgfs"
default n
endmenu # Trace Fs Support
endif
config TRACE_GRAPHICS
bool "Enable tracepoints in graphics"
default n
config TRACE_INPUT
bool "Enable tracepoints in input"
default n
config TRACE_LIBS
bool "Enable tracepoints in libs"
default n
config TRACE_MM
bool "Enable tracepoints in mm"
default n
config TRACE_NET
bool "Enable tracepoints in net"
default n
config TRACE_SCHED
bool "Enable tracepoints in sched"
default n
config TRACE_VIDEO
bool "Enable tracepoints in video"
default n
config TRACE_WIRELESS
bool "Enable tracepoints in wireless"
default n
endif #TRACE
choice
prompt "Optimization Level"
default DEBUG_NOOPT if DEBUG_SYMBOLS
default DEBUG_FULLOPT if !DEBUG_SYMBOLS
config DEBUG_NOOPT
bool "Suppress Optimization"
---help---
Build without optimization. This is often helpful when debugging code.
config DEBUG_CUSTOMOPT
bool "Custom Optimization"
depends on ARCH_HAVE_CUSTOMOPT
---help---
Select a custom debug level. This is often helpful if you suspect an
optimization level error and want to lower the level of optimization.
config DEBUG_FULLOPT
bool "Normal, Full optimization"
---help---
Build full optimization. This is the normal case for production
firmware.
endchoice # Optimization Level
config DEBUG_OPTLEVEL
string "Custom Optimization Level"
default "/O2" if HOST_WINDOWS
default "-O2"
depends on DEBUG_CUSTOMOPT
---help---
This string represents the custom optimization level that will be
used if DEBUG_CUSTOMOPT.
choice
prompt "Link Time Optimization (LTO)"
default LTO_NONE
---help---
This option enables Link Time Optimization (LTO), which allows the
compiler to optimize binaries globally.
If unsure, select LTO_NONE. Note that LTO is very resource-intensive
so it's disabled by default.
config LTO_NONE
bool "None"
---help---
Build the kernel normally, without Link Time Optimization (LTO).
config LTO_FULL
bool "GNU Full LTO (EXPERIMENTAL)"
depends on ARCH_TOOLCHAIN_GNU
---help---
Link time optimization is implemented as a GCC front end for a bytecode
bytecode representation of GIMPLE that is emitted in special sections
of .o files. Currently, LTO support is enabled in most ELF-based systems,
as well as darwin, cygwin and mingw systems.
config LTO_THIN
bool "Clang ThinLTO (EXPERIMENTAL)"
depends on ARCH_TOOLCHAIN_CLANG
---help---
This option enables Clang's ThinLTO, which allows for parallel
optimization and faster incremental compiles compared to the
CONFIG_LTO_FULL option. More information can be found
from Clang's documentation:
https://clang.llvm.org/docs/ThinLTO.html
If unsure, say Y.
endchoice
config DEBUG_OPT_UNUSED_SECTIONS
bool "Optimization to eliminate the unused input sections"
default y
depends on ARCH_TOOLCHAIN_GNU
---help---
Use these options on systems where the linker can perform optimizations
to improve locality of reference in the instruction space. Most systems
using the ELF object format have linkers with such optimizations.
Enable this option to optimization the unused input sections with the
linker by compiling with " -ffunction-sections -fdata-sections ", and
linking with " --gc-sections ".
config DEBUG_LINK_WHOLE_ARCHIVE
bool "Force every object to be included in the resulting shared library."
default n
depends on DEBUG_OPT_UNUSED_SECTIONS
---help---
Selecting this option will pass "--whole-archive" to ld
when linking NuttX ELF.
config DEBUG_LINK_MAP
bool "Generate link map file"
default y
---help---
Selecting this option will pass "-Map=$(TOPDIR)$(DELIM)nuttx.map" to ld
when linking NuttX ELF. That file can be useful for verifying
and debugging magic section games, and for seeing which
pieces of code get eliminated with DEBUG_OPT_UNUSED_SECTIONS.
config CCACHE
bool "Use ccache"
default n
---help---
If enabled, ccache will be used during the build.
Build artifacts will be cached to a local storage, considerably
reducing build times.
endmenu # Build Setup

191
Makefile
View file

@ -20,23 +20,188 @@
# #
############################################################################ ############################################################################
# Check if the system has been configured
ifeq ($(wildcard .config),) ############################################################################
.DEFAULT default: # NXBASE - Mandatory variable. Gets exported to all sub-makes.
@echo "NuttX has not been configured!" #
@echo "To configure the project:" # The NXBASE variable should always point to the top-level NuttX directory.
@echo " tools/configure.sh <config>" # Ideally, it should be exported as an envvar rather than being set as
@echo "For a list of available configurations:" # argument to make.
@echo " tools/configure.sh -L" #
# Example:
# ~/.bashrc: export NXBASE=/path/to/nuttx
# ~/.zshrc: export NXBASE=/path/to/nuttx
############################################################################
ifeq ($(realpath ${NXBASE}),)
$(error Build stopped, NXBASE required)
else else
include .config export NXBASE
endif
# Include the correct Makefile for the selected architecture. ############################################################################
# NXOUT - Mandatory variable. Gets exported to all sub-makes.
#
# The NXOUT variable defines the output directory for the build.
# It is infered to the default ${NXBASE}/build directory. This path
# is reserved by the NuttX build system.
############################################################################
ifeq ($(CONFIG_WINDOWS_NATIVE),y) NXOUT ?= $(realpath ${NXBASE}/build)
include tools/Win.mk export NXOUT
############################################################################
# ARCH - Mandatory variable. Gets exported. Mainly used in Kconfig.
#
# Rather than depending on the Kconfig system to set the architecture,
# which still needs initial manual setup, the architecture can be set
# ahead of time. This still require setting the arch manually, but avoids
# relying on Kconfig to do so. This greatly simplifies Kconfig "tree".
#
# The architecture must be resolved early on in the build system. the
# supported architectures are stored in the ARCHS variable.
############################################################################
ARCHS := arm risc-v sim
ifeq (${ARCH},)
$(error Build stopped, ARCH not set)
endif
ifeq ($(findstring ${ARCH}, ${ARCHS}),)
$(info Currently supported ARCHS: ${ARCHS})
$(error Build stopped, ARCH not supported)
endif
export ARCH
TOOLCHAIN ?= gcc
TOOLCHAIN := ${NXBASE}/tools/${ARCH}/toolchain/${TOOLCHAIN}.defs
ifeq ($(realpath ${TOOLCHAIN}),)
$(error Build stopped, TOOLCHAIN not found)
else else
include tools/Unix.mk export TOOLCHAIN
endif endif
# Force the BCFG to always be passed to build process.
# This new Environment variable defines the board:config to be used.
ifndef BCFG
$(info ERROR: Board configuration not set)
$(error Build stopped, BCFG required.)
endif
# BDIR variable sets the board directory.
# It can be implied if the build starts from the board directory.
BDIR ?= ${CURDIR}
ifeq ($(realpath ${BDIR}/configs/${BCFG}),)
$(error Build stopped, BDIR:BCFG config invalid)
endif
# Control build verbosity
#
# V=0: Exit silent mode
# V=1,2: Enable echo of commands
# V=2: Enable bug/verbose options in tools and scripts
ifeq ($(V),)
MAKE := $(MAKE) -s --no-print-directory
endif
ifeq ($(V),1)
export Q :=
else ifeq ($(V),2)
export Q :=
else
export Q := @
endif
# Kconfiglib the only option
.PHONY: menuconfig savedefconfig oldconfig olddefconfig defconfig genconfig
KCONFIG_CONFIG = ${NXOUT}/.config
KCONFIG_AUTOHEADER = ${NXOUT}/config.h
KCONFIG_ENV := KCONFIG_CONFIG=${KCONFIG_CONFIG}
KCONFIG_ENV += KCONFIG_AUTOHEADER=${KCONFIG_AUTOHEADER}
KCONFIG_ENV += ARCH=${ARCH}
KCONFIG_OLDCONFIG = oldconfig
KCONFIG_OLDDEFCONFIG = olddefconfig
KCONFIG_MENUCONFIG = menuconfig
KCONFIG_SAVEDEFCONFIG = savedefconfig
KCONFIG_GENCONFIG = genconfig
KCONFIG_DEFCONFIG = defconfig
.PHONY: ${KCONFIG_CONFIG}
${KCONFIG_CONFIG}:
$(Q) [ -f ${KCONFIG_CONFIG} ] || \
${KCONFIG_ENV} ${KCONFIG_DEFCONFIG} ${BDIR}/configs/${BCFG}/defconfig
.PHONY: ${KCONFIG_AUTOHEADER}
${KCONFIG_AUTOHEADER}:
$(Q) ${KCONFIG_ENV} ${KCONFIG_GENCONFIG}
menuconfig: ${KCONFIG_CONFIG}
$(Q) ${KCONFIG_ENV} ${KCONFIG_MENUCONFIG}
savedefconfig:
$(Q) ${KCONFIG_ENV} ${KCONFIG_SAVEDEFCONFIG}
oldconfig:
$(Q) ${KCONFIG_ENV} ${KCONFIG_OLDCONFIG}
olddefconfig:
$(Q) ${KCONFIG_ENV} ${KCONFIG_OLDDEFCONFIG}
defconfig:
$(Q) ${KCONFIG_ENV} ${KCONFIG_DEFCONFIG}
genconfig: ${KCONFIG_CONFIG}
$(Q) ${KCONFIG_ENV} ${KCONFIG_GENCONFIG}
############################################################################
# Here starts the rules definition for building NuttX libraries
############################################################################
include ${KCONFIG_CONFIG}
MAKE_INC := -f ${KCONFIG_CONFIG}
MAKE_INC += -f ${NXBASE}/tools/Config.mk
.PHONY: libarch
TARGETS := libarch
libarch: ${KCONFIG_CONFIG} ${KCONFIG_AUTOHEADER}
$(Q) ${MAKE} ${MAKE_INC} -f Makefile -C arch/${ARCH} all
ifeq (${CONFIG_AUDIO},y)
.PHONY: libaudio
TARGETS += libaudio
libaudio: ${KCONFIG_CONFIG} ${KCONFIG_AUTOHEADER}
$(Q) ${MAKE} ${MAKE_INC} -f Makefile -C audio all
endif
ifeq (${CONFIG_CRYPTO},y)
.PHONY: libcrypto
TARGETS += libcrypto
libcrypto: ${KCONFIG_CONFIG} ${KCONFIG_AUTOHEADER}
$(Q) ${MAKE} ${MAKE_INC} -f Makefile -C crypto all
endif
.PHONY: libbinfmt
TARGETS += libbinfmt
libbinfmt: ${KCONFIG_CONFIG} ${KCONFIG_AUTOHEADER}
$(Q) ${MAKE} ${MAKE_INC} -f Makefile -C binfmt all
# Support for ROMFS image creation
ifeq (${CONFIG_FS_ROMFS},y)
ifdef ROMFSIMG
TARGETS += ${ROMFSIMG}
else
$(error ROMFSIMG is not defined by the board Makefile)
endif
endif endif

4
VERSION Normal file
View file

@ -0,0 +1,4 @@
VERSION_MAJOR = 12
VERSION_MINOR = 10
PATCH = 0
EXTRAVERSION =

View file

@ -1,41 +0,0 @@
# ##############################################################################
# arch/CMakeLists.txt
#
# 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.
#
# ##############################################################################
# Declare arch library. In contrast to other user/kernel pairs built in KERNEL
# mode, on arch/ the "user" portion uses a different set of sources than the
# kernel portion. To keep things simple the naming k<lib> is not used. Instead,
# the "user" portion is named "arch_interface".
nuttx_add_kernel_library(arch)
target_include_directories(arch PRIVATE ${CMAKE_SOURCE_DIR}/sched)
if(CONFIG_BUILD_PROTECTED)
nuttx_add_system_library(arch_interface)
file(TOUCH "${CMAKE_CURRENT_BINARY_DIR}/empty.c")
target_sources(arch_interface PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/empty.c")
target_include_directories(arch_interface PRIVATE ${CMAKE_SOURCE_DIR}/sched)
endif()
# TODO: move this higher up ifeq ($(CONFIG_SCHED_INSTRUMENTATION_SYSCALL),y)
# EXTRALINKCMDS += @$(TOPDIR)/syscall/syscall_wraps.ldcmd endif
# include corresponding arch subdirectory
add_subdirectory(${CONFIG_ARCH})

View file

@ -3,281 +3,7 @@
# see the file kconfig-language.txt in the NuttX tools repository. # see the file kconfig-language.txt in the NuttX tools repository.
# #
choice comment "Common Architecture Configuration"
prompt "CPU Architecture"
default ARCH_ARM
config ARCH_ARM
bool "ARM"
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_FORK
select ARCH_HAVE_STACKCHECK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_STDARG_H
select ARCH_HAVE_SETJMP if !ARCH_TOOLCHAIN_IAR
select ARCH_HAVE_SYSCALL_HOOKS
select ARCH_HAVE_RDWR_MEM_CPU_RUN
select ARCH_HAVE_TCBINFO
select ARCH_HAVE_THREAD_LOCAL
---help---
The ARM architectures
config ARCH_ARM64
bool "ARM64"
select ALARM_ARCH
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_FORK if !BUILD_KERNEL
select ARCH_HAVE_STACKCHECK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_STDARG_H
select ARCH_HAVE_SETJMP
select ARCH_HAVE_SYSCALL_HOOKS
select ARCH_HAVE_RDWR_MEM_CPU_RUN
select ARCH_HAVE_TCBINFO
select ARCH_HAVE_THREAD_LOCAL
select ARCH_HAVE_PERF_EVENTS
select ONESHOT
select LIBC_ARCH_ELF_64BIT if LIBC_ARCH_ELF
---help---
The ARM64 architectures
config ARCH_AVR
bool "AVR"
select ARCH_NOINTC
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_CUSTOMOPT
---help---
Atmel 8-bit bit AVR and 32-bit AVR32 architectures
config ARCH_HC
bool "Freescale HC"
select ARCH_NOINTC
select ARCH_HAVE_INTERRUPTSTACK
---help---
Freescale HC architectures (M9S12)
config ARCH_MIPS
bool "MIPS"
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_CUSTOMOPT
---help---
MIPS architectures (PIC32)
config ARCH_MISOC
bool "MISOC"
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_STDARG_H
---help---
MISOC
config ARCH_RENESAS
bool "Renesas"
select ARCH_NOINTC
select ARCH_HAVE_INTERRUPTSTACK
---help---
Renesas architectures (SH and M16C).
config ARCH_RISCV
bool "RISC-V"
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_STACKCHECK
select ARCH_HAVE_FORK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_SETJMP
select ARCH_HAVE_STDARG_H
select ARCH_HAVE_SYSCALL_HOOKS
select ARCH_HAVE_RDWR_MEM_CPU_RUN
select ARCH_HAVE_TCBINFO
select ARCH_HAVE_THREAD_LOCAL
select ARCH_HAVE_POWEROFF
select ARCH_HAVE_LAZYFPU if ARCH_HAVE_FPU
select ARCH_HAVE_CPUID_MAPPING if ARCH_HAVE_MULTICPU
---help---
RISC-V 32 and 64-bit RV32 / RV64 architectures.
config ARCH_SIM
bool "Simulation"
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_MULTICPU if !CONFIG_WINDOWS_NATIVE
select ARCH_HAVE_RTC_SUBSECONDS
select ARCH_HAVE_SERIAL_TERMIOS
select ARCH_HAVE_SYSCALL_HOOKS
select ARCH_HAVE_TICKLESS
select ARCH_HAVE_POWEROFF
select ARCH_HAVE_TESTSET
select ARCH_HAVE_FORK if !HOST_WINDOWS
select ARCH_HAVE_SETJMP
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_TCBINFO
select ARCH_HAVE_TEXT_HEAP
select ARCH_SETJMP_H
select ALARM_ARCH
select ONESHOT
select SERIAL_CONSOLE
select SERIAL_IFLOWCONTROL
select SCHED_HPWORK
select ARCH_HAVE_CPUINFO
---help---
Linux/Cygwin user-mode simulation.
config ARCH_X86
bool "x86"
select ARCH_HAVE_TCBINFO
---help---
Intel x86 architectures.
config ARCH_X86_64
bool "x86_64"
select ARCH_HAVE_TCBINFO
select ARCH_HAVE_FPU
select ARCH_HAVE_DPFPU
select ARCH_HAVE_MULTICPU
select ARCH_HAVE_TESTSET
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_THREAD_LOCAL
select PCI_LATE_DRIVERS_REGISTER if PCI
select LIBC_ARCH_ELF_64BIT if LIBC_ARCH_ELF
select ARCH_TOOLCHAIN_GNU
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_FORK if !BUILD_KERNEL
select ARCH_HAVE_SETJMP
select ARCH_HAVE_PERF_EVENTS
---help---
x86-64 architectures.
config ARCH_XTENSA
bool "Xtensa"
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_STACKCHECK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_THREAD_LOCAL
select ARCH_HAVE_TCBINFO
select ARCH_HAVE_STDARG_H
select ARCH_HAVE_SETJMP if ARCH_TOOLCHAIN_GNU
select ARCH_HAVE_SYSCALL_HOOKS
select ARCH_HAVE_PERF_EVENTS
---help---
Cadence® Tensilica® Xtensa® actictures.
config ARCH_Z16
bool "ZNEO"
select ARCH_HAVE_HEAP2
---help---
ZiLOG ZNEO 16-bit architectures (z16f).
config ARCH_Z80
bool "z80"
select ARCH_HAVE_HEAP2
---help---
ZiLOG 8-bit architectures (z80, ez80, z8).
config ARCH_OR1K
bool "OpenRISC"
---help---
OpenRISC architectures.
config ARCH_SPARC
bool "SPARC"
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_TCBINFO
---help---
SPARC architectures (SPARC V8)
config ARCH_TRICORE
bool "Infineon TriCore"
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_STACKCHECK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_TCBINFO
---help---
Infineon 32-bit AURIX TriCore architectures
endchoice
config ARCH
string
default "arm" if ARCH_ARM
default "arm64" if ARCH_ARM64
default "avr" if ARCH_AVR
default "hc" if ARCH_HC
default "mips" if ARCH_MIPS
default "misoc" if ARCH_MISOC
default "renesas" if ARCH_RENESAS
default "risc-v" if ARCH_RISCV
default "sim" if ARCH_SIM
default "x86" if ARCH_X86
default "x86_64" if ARCH_X86_64
default "xtensa" if ARCH_XTENSA
default "z16" if ARCH_Z16
default "z80" if ARCH_Z80
default "or1k" if ARCH_OR1K
default "sparc" if ARCH_SPARC
default "tricore" if ARCH_TRICORE
source "arch/arm/Kconfig"
source "arch/arm64/Kconfig"
source "arch/avr/Kconfig"
source "arch/hc/Kconfig"
source "arch/mips/Kconfig"
source "arch/misoc/Kconfig"
source "arch/renesas/Kconfig"
source "arch/risc-v/Kconfig"
source "arch/sim/Kconfig"
source "arch/x86/Kconfig"
source "arch/x86_64/Kconfig"
source "arch/xtensa/Kconfig"
source "arch/z16/Kconfig"
source "arch/z80/Kconfig"
source "arch/or1k/Kconfig"
source "arch/sparc/Kconfig"
source "arch/tricore/Kconfig"
config ARCH_CHIP_CUSTOM
bool "Custom Chip Support"
default n
if ARCH_CHIP_CUSTOM
menu "Custom Chip Configuration"
config ARCH_CHIP_CUSTOM_NAME
string "Custom chip name"
default ""
---help---
This is a name for the chip. It is not used except to return the
information via the NSH uname command.
config ARCH_CHIP_CUSTOM_DIR
string "Custom chip directory"
default ""
---help---
If the custom chip configuration is selected, then it is necessary
to also tell the build system where it can find the chip directory
for the custom chip.
In this case, the chip directory is assumed to lie outside the
NuttX directory. The provided path must then be a full, absolute
path to some location outside of the NuttX source tree (like
"~/projects/mychip").
config ARCH_CHIP_CUSTOM_DIR_RELPATH
bool "Relative custom chip directory"
default y
---help---
Specifies that the chip directory is relative to the NuttX directory.
endmenu # Custom Chip Configuration
endif #ARCH_CHIP_CUSTOM
source "$BINDIR/arch/dummy/Kconfig"
config ARCH_TOOLCHAIN_GNU config ARCH_TOOLCHAIN_GNU
bool bool
@ -311,21 +37,6 @@ config ARCH_TOOLCHAIN_TASKING
bool bool
default n default n
config ARCH_GNU_NO_WEAKFUNCTIONS
bool
depends on ARCH_TOOLCHAIN_GNU
default n
---help---
Disable support for weak functions.
config ARCH_SIZET_LONG
bool "size_t is type long"
default n
---help---
size_t may be type long or type int. This matters for some
C++ library routines because the NuttX size_t might not have
the same underlying type as your toolchain's size_t.
config ARCH_INSTRUMENT_ALL config ARCH_INSTRUMENT_ALL
bool "Instrument All" bool "Instrument All"
default n default n

View file

@ -1,23 +0,0 @@
# ##############################################################################
# arch/arm/CMakeLists.txt
#
# 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.
#
# ##############################################################################
nuttx_add_subdirectory()

File diff suppressed because it is too large Load diff

362
arch/arm/Kconfig.arch Normal file
View file

@ -0,0 +1,362 @@
config ARCH_ARM
bool
default y
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_FORK
select ARCH_HAVE_STACKCHECK
select ARCH_HAVE_CUSTOMOPT
select ARCH_HAVE_STDARG_H
select ARCH_HAVE_SETJMP if !ARCH_TOOLCHAIN_IAR
select ARCH_HAVE_SYSCALL_HOOKS
select ARCH_HAVE_RDWR_MEM_CPU_RUN
select ARCH_HAVE_TCBINFO
select ARCH_HAVE_THREAD_LOCAL
---help---
The ARM architectures
config ARCH_ARM7TDMI
bool
default n
select ARCH_DCACHE
select ARCH_ICACHE
---help---
The Arm7TDMI-S is an excellent workhorse processor capable of a wide
array of applications. Traditionally used in mobile handsets, the
processor is now broadly in many non-mobile applications.
config ARCH_ARM920T
bool
default n
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
---help---
The ARM9 processor family is built around the ARM9TDMI processor and
incorporates the 16-bit Thumb instruction set. The ARM9 Thumb family
includes the ARM920T and ARM922T cached processor macrocells:
- Dual 16k caches for applications running Symbian OS, Palm OS,
Linux and Windows CE,
- Dual 8k caches for applications running Symbian OS, Palm OS, Linux
and Windows CE Applications
config ARCH_ARM926EJS
bool
default n
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
---help---
Arm926EJ-S is the entry point processor capable of supporting full
Operating Systems including Linux, WindowsCE, and Symbian.
The ARM9E processor family enables single processor solutions for
microcontroller, DSP and Java applications. The ARM9E family of
products are DSP-enhanced 32-bit RISC processors, for applications
requiring a mix of DSP and microcontroller performance. The family
includes the ARM926EJ-S, ARM946E-S, ARM966E-S, and ARM968E-S
processor macrocells. They include signal processing extensions to
enhance 16-bit fixed point performance using a single-cycle 32 x 16
multiply-accumulate (MAC) unit, and implement the 16-bit Thumb
instruction set. The ARM926EJ-S processor also includes ARM Jazelle
technology which enables the direct execution of Java bytecodes in
hardware.
config ARCH_ARM1136J
bool
default n
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
---help---
Arm1136J(F)-S is very similar to Arm926EJ-S, but includes an
extended pipeline, basic SIMD (Single Instruction Multiple Data)
instructions, and improved frequency and performance.
config ARCH_ARM1156T2
bool
default n
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
---help---
Arm1156T2(F)-S is the highest-performance processor in the real-time
Classic Arm family.
config ARCH_ARM1176JZ
bool
default n
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
---help---
Arm1176JZ(F)-S is the highest-performance single-core processor in
the Classic Arm family. It also introduced TrustZone technology to
enable secure execution outside of the reach of malicious code.
config ARCH_ARMV6M
bool
default n
select ARCH_HAVE_CPUINFO
config ARCH_CORTEXM0
bool
default n
select ARM_THUMB
select ARCH_ARMV6M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_RESET
select ARCH_HAVE_HARDFAULT_DEBUG
config ARCH_ARMV7M
bool
default n
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_DEBUG
select ARCH_HAVE_PERF_EVENTS
config ARCH_CORTEXM3
bool
default n
select ARM_THUMB
select ARCH_ARMV7M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
select ARCH_HAVE_MEMFAULT_DEBUG
select ARCH_HAVE_BUSFAULT_DEBUG
select ARCH_HAVE_USAGEFAULT_DEBUG
config ARCH_CORTEXM4
bool
default n
select ARM_THUMB
select ARCH_ARMV7M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
select ARCH_HAVE_MEMFAULT_DEBUG
select ARCH_HAVE_BUSFAULT_DEBUG
select ARCH_HAVE_USAGEFAULT_DEBUG
config ARCH_CORTEXM7
bool
default n
select ARM_THUMB
select ARCH_ARMV7M
select ARCH_HAVE_FPU
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
select ARCH_HAVE_MEMFAULT_DEBUG
select ARCH_HAVE_BUSFAULT_DEBUG
select ARCH_HAVE_USAGEFAULT_DEBUG
config ARCH_ARMV7A
bool
default n
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_DEBUG
select ARCH_HAVE_PERF_EVENTS
select ARM_HAVE_WFE_SEV
config ARCH_CORTEXA5
bool
default n
select ARCH_ARMV7A
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
select ARCH_HAVE_TESTSET
select ARM_HAVE_MPCORE
config ARCH_CORTEXA7
bool
default n
select ARCH_ARMV7A
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
select ARCH_HAVE_TESTSET
select ARCH_HAVE_FPU
select ARM_HAVE_MPCORE
config ARCH_CORTEXA8
bool
default n
select ARCH_ARMV7A
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
select ARCH_HAVE_TESTSET
config ARCH_CORTEXA9
bool
default n
select ARCH_ARMV7A
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_USE_MMU
select ARCH_HAVE_TESTSET
select ARM_HAVE_MPCORE
config ARCH_ARMV7R
bool
default n
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_PERF_EVENTS
config ARCH_CORTEXR4
bool
default n
select ARCH_ARMV7R
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MPU
select ARCH_HAVE_TESTSET
config ARCH_CORTEXR5
bool
default n
select ARCH_ARMV7R
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MPU
select ARCH_HAVE_TESTSET
config ARCH_CORTEXR7
bool
default n
select ARCH_ARMV7R
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MPU
select ARCH_HAVE_TESTSET
config ARCH_CORTEXR52
bool
default n
select ARCH_ARMV8R
select ARCH_HAVE_MPU
select ARCH_HAVE_TESTSET
config ARCH_ARMV8M
bool
default n
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_DEBUG
select ARCH_HAVE_PERF_EVENTS
config ARCH_CORTEXM23
bool
default n
select ARM_THUMB
select ARCH_ARMV8M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
config ARCH_CORTEXM33
bool
default n
select ARM_THUMB
select ARCH_ARMV8M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
select ARCH_HAVE_MEMFAULT_DEBUG
select ARCH_HAVE_BUSFAULT_DEBUG
select ARCH_HAVE_USAGEFAULT_DEBUG
select ARCH_HAVE_SECUREFAULT_DEBUG if ARCH_TRUSTZONE_SECURE
config ARCH_CORTEXM35P
bool
default n
select ARM_THUMB
select ARCH_ARMV8M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
select ARCH_HAVE_MEMFAULT_DEBUG
select ARCH_HAVE_BUSFAULT_DEBUG
select ARCH_HAVE_USAGEFAULT_DEBUG
select ARCH_HAVE_SECUREFAULT_DEBUG if ARCH_TRUSTZONE_SECURE
config ARCH_CORTEXM55
bool
default n
select ARM_THUMB
select ARCH_ARMV8M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
select ARCH_HAVE_MEMFAULT_DEBUG
select ARCH_HAVE_BUSFAULT_DEBUG
select ARCH_HAVE_USAGEFAULT_DEBUG
select ARCH_HAVE_SECUREFAULT_DEBUG if ARCH_TRUSTZONE_SECURE
config ARCH_CORTEXM85
bool
default n
select ARM_THUMB
select ARCH_ARMV8M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_RAMVECTORS
select ARCH_HAVE_HIPRI_INTERRUPT
select ARCH_HAVE_RESET
select ARCH_HAVE_TESTSET
select ARCH_HAVE_HARDFAULT_DEBUG
select ARCH_HAVE_MEMFAULT_DEBUG
select ARCH_HAVE_BUSFAULT_DEBUG
select ARCH_HAVE_USAGEFAULT_DEBUG
select ARCH_HAVE_SECUREFAULT_DEBUG if ARCH_TRUSTZONE_SECURE
config ARCH_ARMV8R
bool
default n
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_PERF_EVENTS
select ONESHOT
select ALARM_ARCH

88
arch/arm/Makefile Normal file
View file

@ -0,0 +1,88 @@
############################################################################
# arch/arm/src/Makefile
#
# 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.
#
############################################################################
TOOLCHAIN_NAME := $(notdir ${TOOLCHAIN})
TOOLCHAIN_NAME := $(basename ${TOOLCHAIN_NAME})
VPATH += ${ARCH_DIR}/common
include ${ARCH_DIR}/common/Make.defs
VPATH += ${ARCH_DIR}/${ARCH_FAMILY}
include ${ARCH_DIR}/${ARCH_FAMILY}/Make.defs
VPATH += ${ARCH_DIR}/${TOOLCHAIN_NAME}
$(info TOOLCHAIN: ${TOOLCHAIN})
INCLUDES := ${INCDIR_PREFIX}${NXBASE}/include
INCLUDES += ${INCDIR_PREFIX}${NXBASE}/include/chip
INCLUDES += ${INCDIR_PREFIX}${NXBASE}/sched
INCLUDES += ${INCDIR_PREFIX}${ARCH_DIR}/common
DEFINES = -D__KERNEL__
CFLAGS += ${INCLUDES}
CFLAGS += ${DEFINES}
AFLAGS += ${INCLUDES}
CFLAGS += ${DEFINES}
AFLAGS += -D__ASSEMBLY__
BIN = libarch.a
STARTUP_OBJS = $(STARTUP_CSRC:.c=.o)
STARTUP_OBJS := $(addprefix ${NXOUT}/, ${STARTUP_OBJS})
HEAD_OBJS = $(HEAD_ASRC:.S=.o)
HEAD_OBJS := $(addprefix ${NXOUT}/, ${HEAD_OBJS})
COBJS = $(CSRCS:.c=.o)
COBJS := $(addprefix ${NXOUT}/, ${COBJS})
AOBJS = $(ASRCS:.S=.o)
AOBJS := $(addprefix ${NXOUT}/, ${AOBJS})
OBJS = ${STARTUP_OBJS} ${HEAD_OBJ} ${COBJS} ${AOBJS}
${STARTUP_OBJS} ${COBJS}: ${NXOUT}/%.o: %.c
$(call COMPILE, $<, $@, -MMD)
${HEAD_OBJS} ${AOBJS}: ${NXOUT}/%.o: %.S
$(call ASSEMBLE, $<, $@, -MMD)
symlink:
$(call LINK, ${ARCH_DIR}/include, ${NXBASE}/include/arch)
$(call LINK, ${NXBASE}/soc/arm/include/${ARCH_CHIP}, ${NXBASE}/include/chip)
$(call LINK, ${NXOUT}/config.h, ${NXBASE}/include/nuttx/config.h)
unlink:
$(call UNLINK, ${NXBASE}/include/arch)
$(call UNLINK, ${NXBASE}/include/chip)
$(call UNLINK, ${NXBASE}/include/nuttx/config.h)
${BIN}: ${OBJS}
$(call ARCHIVE, ${NXOUT}/$@, $^)
.PHONY: symlink unlink all
.IGNORE: ${BIN}
all: symlink ${BIN} unlink

View file

@ -20,20 +20,16 @@
# #
############################################################################ ############################################################################
# Common ARM files
include common/Make.defs
HEAD_ASRC = arm_head.S HEAD_ASRC = arm_head.S
CMN_CSRCS += arm_dataabort.c arm_doirq.c arm_initialstate.c CSRCS += arm_dataabort.c arm_doirq.c arm_initialstate.c
CMN_CSRCS += arm_prefetchabort.c arm_schedulesigaction.c CSRCS += arm_prefetchabort.c arm_schedulesigaction.c
CMN_CSRCS += arm_sigdeliver.c arm_syscall.c arm_tcbinfo.c CSRCS += arm_sigdeliver.c arm_syscall.c arm_tcbinfo.c
CMN_CSRCS += arm_undefinedinsn.c CSRCS += arm_undefinedinsn.c
CMN_ASRCS += arm_cache.S arm_vectors.S arm_vectortab.S ASRCS += arm_cache.S arm_vectors.S arm_vectortab.S
CMN_ASRCS += arm_saveusercontext.S ASRCS += arm_saveusercontext.S
ifeq ($(CONFIG_LEGACY_PAGING),y) ifeq ($(CONFIG_LEGACY_PAGING),y)
CMN_CSRCS += arm_pginitialize.c arm_checkmapping.c arm_allocpage.c arm_va2pte.c CSRCS += arm_pginitialize.c arm_checkmapping.c arm_allocpage.c arm_va2pte.c
endif endif

View file

@ -32,8 +32,6 @@
#include <assert.h> #include <assert.h>
#include <nuttx/addrenv.h> #include <nuttx/addrenv.h>
#include <nuttx/board.h>
#include <arch/board/board.h>
#include <sched/sched.h> #include <sched/sched.h>
#include "arm_internal.h" #include "arm_internal.h"
@ -62,7 +60,6 @@ uint32_t *arm_doirq(int irq, uint32_t *regs)
{ {
struct tcb_s *tcb = this_task(); struct tcb_s *tcb = this_task();
board_autoled_on(LED_INIRQ);
#ifdef CONFIG_SUPPRESS_INTERRUPTS #ifdef CONFIG_SUPPRESS_INTERRUPTS
PANIC(); PANIC();
#else #else
@ -117,6 +114,5 @@ uint32_t *arm_doirq(int irq, uint32_t *regs)
up_set_interrupt_context(false); up_set_interrupt_context(false);
#endif #endif
board_autoled_off(LED_INIRQ);
return regs; return regs;
} }

View file

@ -20,10 +20,6 @@
# #
############################################################################ ############################################################################
# Common ARM files
include common/Make.defs
CMN_ASRCS += arm_exception.S arm_saveusercontext.S CMN_ASRCS += arm_exception.S arm_saveusercontext.S
CMN_CSRCS += arm_cpuinfo.c arm_doirq.c arm_hardfault.c arm_initialstate.c CMN_CSRCS += arm_cpuinfo.c arm_doirq.c arm_hardfault.c arm_initialstate.c
@ -35,9 +31,17 @@ ifneq ($(CONFIG_ARCH_HAVE_CUSTOM_VECTORS),y)
CMN_CSRCS += arm_vectors.c CMN_CSRCS += arm_vectors.c
endif endif
<<<<<<< HEAD:arch/z80/src/z80/Make.defs
CMN_CSRCS = z80_allocateheap.c z80_createstack.c z80_doirq.c
CMN_CSRCS += z80_exit.c z80_initialize.c z80_interruptcontext.c
CMN_CSRCS += z80_idle.c z80_mdelay.c z80_releasestack.c
CMN_CSRCS += z80_switchcontext.c z80_stackframe.c
CMN_CSRCS += z80_udelay.c z80_usestack.c
=======
ifneq ($(filter y,$(CONFIG_DEBUG_FEATURES)$(CONFIG_ARM_COREDUMP_REGION)),) ifneq ($(filter y,$(CONFIG_DEBUG_FEATURES)$(CONFIG_ARM_COREDUMP_REGION)),)
CMN_CSRCS += arm_dumpnvic.c CMN_CSRCS += arm_dumpnvic.c
endif endif
>>>>>>> 753c7b2dd6 (walnux: moveout):arch/arm/armv6-m/Make.defs
ifeq ($(CONFIG_ARCH_RAMVECTORS),y) ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
CMN_CSRCS += arm_ramvec_initialize.c arm_ramvec_attach.c CMN_CSRCS += arm_ramvec_initialize.c arm_ramvec_attach.c

View file

@ -20,10 +20,6 @@
# #
############################################################################ ############################################################################
# Common ARM files
include common/Make.defs
# The vector table is the "head" object, i.e., the one that must forced into # The vector table is the "head" object, i.e., the one that must forced into
# the link in order to draw in all of the other components # the link in order to draw in all of the other components

Some files were not shown because too many files have changed in this diff Show more