fae5aef4fe
Porting memory and string optimize functions from newlib and bionic Signed-off-by: zhangyuan21 <zhangyuan21@xiaomi.com>
213 lines
4.0 KiB
Plaintext
213 lines
4.0 KiB
Plaintext
#
|
|
# For a description of the syntax of this configuration file,
|
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
#
|
|
|
|
# These are library functions that may be overridden by architecture-
|
|
# specific implementations. Not all architectures support implementations
|
|
# for every library function.
|
|
|
|
menu "Architecture-Specific Support"
|
|
|
|
config ARCH_LOWPUTC
|
|
bool "Low-level console output"
|
|
default y
|
|
---help---
|
|
architecture supports low-level, boot time console output
|
|
|
|
config ARCH_ROMGETC
|
|
bool "Support for ROM string access"
|
|
default n
|
|
---help---
|
|
In Harvard architectures, data accesses and instruction accesses
|
|
occur on different buses, perhaps concurrently. All data accesses
|
|
are performed on the data bus unless special machine instructions
|
|
are used to read data from the instruction address space. Also, in
|
|
the typical MCU, the available SRAM data memory is much smaller that
|
|
the non-volatile FLASH instruction memory. So if the application
|
|
requires many constant strings, the only practical solution may be
|
|
to store those constant strings in FLASH memory where they can only
|
|
be accessed using architecture-specific machine instructions.
|
|
|
|
If ARCH_ROMGETC is defined, then the architecture logic must export
|
|
the function up_romgetc(). up_romgetc() will simply read one byte
|
|
of data from the instruction space.
|
|
|
|
If ARCH_ROMGETC is selected, certain C stdio functions are effected: (1)
|
|
All format strings in printf, fprintf, sprintf, etc. are assumed to lie
|
|
in FLASH (string arguments for %s are still assumed to reside in SRAM).
|
|
And (2), the string argument to puts and fputs is assumed to reside
|
|
in FLASH. Clearly, these assumptions may have to modified for the
|
|
particular needs of your environment. There is no "one-size-fits-all"
|
|
solution for this problem.
|
|
|
|
# Default settings for C library functions that may be replaced with
|
|
# architecture-specific versions.
|
|
|
|
config LIBC_ARCH_ATOMIC
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_MEMCHR
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_MEMCPY
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_MEMCMP
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_MEMMOVE
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_MEMSET
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRCHR
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRCHRNUL
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRCMP
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRNCMP
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRCPY
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRLCAT
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRLCPY
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRNCPY
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRLEN
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRNLEN
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_STRRCHR
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_ELF
|
|
bool
|
|
default n
|
|
|
|
config LIBC_ARCH_ELF_64BIT
|
|
bool
|
|
default n
|
|
depends on LIBC_ARCH_ELF
|
|
|
|
config LIBM_ARCH_CEIL
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_FLOOR
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_NEARBYINT
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_RINT
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_ROUND
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_TRUNC
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_CEILF
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_FLOORF
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_NEARBYINTF
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_RINTF
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_ROUNDF
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
config LIBM_ARCH_TRUNCF
|
|
bool
|
|
default n
|
|
depends on LIBM
|
|
|
|
# One or more the of above may be selected by architecture specific logic
|
|
|
|
if ARCH_ARM
|
|
source "libs/libc/machine/arm/Kconfig"
|
|
endif
|
|
if ARCH_ARM64
|
|
source "libs/libc/machine/arm64/Kconfig"
|
|
endif
|
|
if ARCH_RISCV
|
|
source "libs/libc/machine/risc-v/Kconfig"
|
|
endif
|
|
if ARCH_SIM
|
|
source "libs/libc/machine/sim/Kconfig"
|
|
endif
|
|
if ARCH_X86
|
|
source "libs/libc/machine/x86/Kconfig"
|
|
endif
|
|
if ARCH_XTENSA
|
|
source "libs/libc/machine/xtensa/Kconfig"
|
|
endif
|
|
if ARCH_RENESAS
|
|
source "libs/libc/machine/renesas/Kconfig"
|
|
endif
|
|
|
|
if ARCH_SPARC
|
|
source libs/libc/machine/sparc/Kconfig
|
|
endif
|
|
|
|
endmenu # Architecture-Specific Support
|