Move optimized ARM memcpy functions from arch/arm/src/ to libc/machine/. This is necessary for the PROTECTED and KERNEL build modes. Otherwise, memcpy() will be built in to kernel space and not accessible to applications.
This commit is contained in:
parent
3c4684ef5f
commit
be5ba90d4f
@ -59,10 +59,6 @@ CMN_ASRCS += arm_testset.S
|
||||
CMN_ASRCS += cp15_coherent_dcache.S cp15_invalidate_dcache.S
|
||||
CMN_ASRCS += cp15_clean_dcache.S cp15_flush_dcache.S cp15_invalidate_dcache_all.S
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += arm_memcpy.S
|
||||
endif
|
||||
|
||||
# Common C source files
|
||||
|
||||
CMN_CSRCS = up_initialize.c up_idle.c up_interruptcontext.c up_exit.c
|
||||
|
@ -133,10 +133,12 @@ choice
|
||||
|
||||
config ARMV7A_TOOLCHAIN_BUILDROOT
|
||||
bool "Buildroot (Cygwin or Linux)"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on !WINDOWS_NATIVE
|
||||
|
||||
config ARMV7A_TOOLCHAIN_CODESOURCERYL
|
||||
bool "CodeSourcery GNU toolchain under Linux"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on HOST_LINUX
|
||||
---help---
|
||||
For use with the GNU toolchain built with the NuttX buildroot package.
|
||||
@ -145,20 +147,24 @@ config ARMV7A_TOOLCHAIN_CODESOURCERYL
|
||||
|
||||
config ARMV7A_TOOLCHAIN_CODESOURCERYW
|
||||
bool "CodeSourcery GNU toolchain under Windows"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on TOOLCHAIN_WINDOWS
|
||||
|
||||
config ARMV7A_TOOLCHAIN_DEVKITARM
|
||||
bool "devkitARM GNU toolchain"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on TOOLCHAIN_WINDOWS
|
||||
|
||||
config ARMV7A_TOOLCHAIN_GNU_EABIL
|
||||
bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
---help---
|
||||
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
|
||||
configured for arm-none-eabi-.
|
||||
|
||||
config ARMV7A_TOOLCHAIN_GNU_EABIW
|
||||
bool "Generic GNU EABI toolchain under Windows"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on TOOLCHAIN_WINDOWS
|
||||
---help---
|
||||
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
|
||||
@ -166,6 +172,7 @@ config ARMV7A_TOOLCHAIN_GNU_EABIW
|
||||
|
||||
config ARMV7A_TOOLCHAIN_GNU_OABI
|
||||
bool "Generic GNU OABI toolchain"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
---help---
|
||||
This option should work for any GNU toolchain configured for arm-elf-.
|
||||
|
||||
|
@ -149,10 +149,12 @@ choice
|
||||
|
||||
config ARMV7R_TOOLCHAIN_BUILDROOT
|
||||
bool "Buildroot (Cygwin or Linux)"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on !WINDOWS_NATIVE
|
||||
|
||||
config ARMV7R_TOOLCHAIN_CODESOURCERYL
|
||||
bool "CodeSourcery GNU toolchain under Linux"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on HOST_LINUX
|
||||
---help---
|
||||
For use with the GNU toolchain built with the NuttX buildroot package.
|
||||
@ -161,20 +163,24 @@ config ARMV7R_TOOLCHAIN_CODESOURCERYL
|
||||
|
||||
config ARMV7R_TOOLCHAIN_CODESOURCERYW
|
||||
bool "CodeSourcery GNU toolchain under Windows"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on TOOLCHAIN_WINDOWS
|
||||
|
||||
config ARMV7R_TOOLCHAIN_DEVKITARM
|
||||
bool "devkitARM GNU toolchain"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on TOOLCHAIN_WINDOWS
|
||||
|
||||
config ARMV7R_TOOLCHAIN_GNU_EABIL
|
||||
bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
---help---
|
||||
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
|
||||
configured for arm-none-eabi-.
|
||||
|
||||
config ARMV7R_TOOLCHAIN_GNU_EABIW
|
||||
bool "Generic GNU EABI toolchain under Windows"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
depends on TOOLCHAIN_WINDOWS
|
||||
---help---
|
||||
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
|
||||
@ -182,6 +188,7 @@ config ARMV7R_TOOLCHAIN_GNU_EABIW
|
||||
|
||||
config ARMV7R_TOOLCHAIN_GNU_OABI
|
||||
bool "Generic GNU OABI toolchain"
|
||||
select ARM_TOOLCHAIN_GNU
|
||||
---help---
|
||||
This option should work for any GNU toolchain configured for arm-elf-.
|
||||
|
||||
|
@ -63,10 +63,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -62,10 +62,6 @@ CMN_ASRCS += arm_testset.S
|
||||
CMN_ASRCS += cp15_coherent_dcache.S cp15_invalidate_dcache.S
|
||||
CMN_ASRCS += cp15_clean_dcache.S cp15_flush_dcache.S cp15_invalidate_dcache_all.S
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += arm_memcpy.S
|
||||
endif
|
||||
|
||||
# Common C source files
|
||||
|
||||
CMN_CSRCS = up_initialize.c up_idle.c up_interruptcontext.c up_exit.c
|
||||
|
@ -71,10 +71,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -70,10 +70,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -60,10 +60,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -76,10 +76,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -61,10 +61,6 @@ CMN_ASRCS += cp15_clean_dcache.S cp15_flush_dcache.S cp15_invalidate_dcache_all.
|
||||
|
||||
# Configuration dependent assembly language files
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += arm_memcpy.S
|
||||
endif
|
||||
|
||||
# Common C source files
|
||||
|
||||
CMN_CSRCS = up_initialize.c up_idle.c up_interruptcontext.c up_exit.c
|
||||
|
@ -90,10 +90,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARM_MPU),y)
|
||||
CMN_CSRCS += up_mpu.c
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
|
@ -71,10 +71,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -87,10 +87,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -83,10 +83,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
CMN_CSRCS += up_mpu.c up_task_start.c up_pthread_start.c
|
||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
||||
|
@ -51,10 +51,6 @@ ifeq ($(CONFIG_ARCH_RAMVECTORS),y)
|
||||
CMN_CSRCS += up_ramvec_initialize.c up_ramvec_attach.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += up_memcpy.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_STACK_COLORATION),y)
|
||||
CMN_CSRCS += up_checkstack.c
|
||||
endif
|
||||
|
@ -53,10 +53,6 @@ ifeq ($(CONFIG_ARCH_FPU),y)
|
||||
CMN_ASRCS += arm_fpuconfig.S
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBC_ARCH_MEMCPY),y)
|
||||
CMN_ASRCS += arm_memcpy.S
|
||||
endif
|
||||
|
||||
# Common C source files
|
||||
|
||||
CMN_CSRCS = up_allocateheap.c up_initialize.c up_idle.c up_interruptcontext.c
|
||||
|
@ -113,6 +113,18 @@ config LIBM_ARCH_TRUNCF
|
||||
|
||||
# One or more the of above may be selected by architecture specific logic
|
||||
|
||||
if ARCH_CORTEXA5 || ARCH_CORTEXA8 || ARCH_CORTEXA9
|
||||
source libc/machine/armv7-a/Kconfig
|
||||
endif
|
||||
|
||||
if ARCH_CORTEXR4 || ARCH_CORTEXR4F || ARCH_CORTEXR5 || ARCH_CORTEXR5F || ARCH_CORTEXR7 || ARCH_CORTEXR7F
|
||||
source libc/machine/armv7-r/Kconfig
|
||||
endif
|
||||
|
||||
if ARCH_CORTEXM3 || ARCH_CORTEXM4 || ARCH_CORTEXM7
|
||||
source libc/machine/armv7-m/Kconfig
|
||||
endif
|
||||
|
||||
if ARCH_CORTEXM33
|
||||
source libc/machine/armv8/Kconfig
|
||||
endif
|
||||
|
@ -33,6 +33,30 @@
|
||||
#
|
||||
############################################################################
|
||||
|
||||
ifeq ($(CONFIG_ARCH_CORTEXM33),y)
|
||||
ifeq ($(CONFIG_ARCH_CORTEXA5),y) # Cortex-A5 is ARMv7-A
|
||||
include ${TOPDIR}/libc/machine/armv7-a/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXA8),y) # Cortex-A8 is ARMv7-A
|
||||
include ${TOPDIR}/libc/machine/armv7-a/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXA9),y) # Cortex-A9 is ARMv7-A
|
||||
include ${TOPDIR}/libc/machine/armv7-a/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXR4),y) # Cortex-R4 is ARMv7-R
|
||||
include ${TOPDIR}/libc/machine/armv7-r/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXR4F),y) # Cortex-R4F is ARMv7-R
|
||||
include ${TOPDIR}/libc/machine/armv7-r/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXR5),y) # Cortex-R5 is ARMv7-R
|
||||
include ${TOPDIR}/libc/machine/armv7-r/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXR5F),y) # Cortex-R5F is ARMv7-R
|
||||
include ${TOPDIR}/libc/machine/armv7-r/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXR7),y) # Cortex-R7 is ARMv7-R
|
||||
include ${TOPDIR}/libc/machine/armv7-r/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXR7F),y) # Cortex-R7F is ARMv7-R
|
||||
include ${TOPDIR}/libc/machine/armv7-r/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXM3),y) # Cortex-M3 is ARMv7-M
|
||||
include ${TOPDIR}/libc/machine/armv7-m/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXM33),y) # Cortex-M33 is ARMv8-M
|
||||
include ${TOPDIR}/libc/machine/armv8/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXM4),y) # Cortex-M4 is ARMv7E-M
|
||||
include ${TOPDIR}/libc/machine/armv7-m/Make.defs
|
||||
else ifeq ($(CONFIG_ARCH_CORTEXM7),y) # Cortex-M4 is ARMv7E-M
|
||||
include ${TOPDIR}/libc/machine/armv7-m/Make.defs
|
||||
endif
|
||||
|
14
libc/machine/armv7-a/Kconfig
Normal file
14
libc/machine/armv7-a/Kconfig
Normal file
@ -0,0 +1,14 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
config ARMV7A_MEMCPY
|
||||
bool "Enable optimized memcpy() for ARMv7-A"
|
||||
select LIBC_ARCH_MEMCPY
|
||||
depends on ARM_TOOLCHAIN_GNU && EXPERIMENTAL
|
||||
---help---
|
||||
Enable optimized ARMv7-A specific memcpy() library function
|
||||
|
||||
Marked EXPERIMENTAL because it did not build for me the last time I
|
||||
tried.
|
43
libc/machine/armv7-a/Make.defs
Normal file
43
libc/machine/armv7-a/Make.defs
Normal file
@ -0,0 +1,43 @@
|
||||
############################################################################
|
||||
# libc/machine/armv7-a/Make.defs
|
||||
#
|
||||
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# 3. Neither the name NuttX nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
ifeq ($(CONFIG_ARMV7A_MEMCPY),y)
|
||||
|
||||
ASRCS += arch_memcpy.S
|
||||
|
||||
DEPPATH += --dep-path machine/armv7-a/gnu
|
||||
VPATH += :machine/armv7-a/gnu
|
||||
|
||||
endif
|
@ -59,9 +59,16 @@
|
||||
|
||||
.global memcpy
|
||||
|
||||
.syntax unified
|
||||
#if defined(CONFIG_ARCH_CORTEXA5)
|
||||
.cpu cortex-a5
|
||||
#elif defined(CONFIG_ARCH_CORTEXA8)
|
||||
.cpu cortex-a8
|
||||
#elif defined(CONFIG_ARCH_CORTEXA9)
|
||||
.cpu cortex-a9
|
||||
#endif
|
||||
|
||||
.file "arm_memcpy.S"
|
||||
.syntax unified
|
||||
.file "arch_memcpy.S"
|
||||
|
||||
/************************************************************************************
|
||||
* .text
|
11
libc/machine/armv7-m/Kconfig
Normal file
11
libc/machine/armv7-m/Kconfig
Normal file
@ -0,0 +1,11 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
config ARMV7M_MEMCPY
|
||||
bool "Enable optimized memcpy() for ARMv7-M"
|
||||
select LIBC_ARCH_MEMCPY
|
||||
depends on ARM_TOOLCHAIN_GNU
|
||||
---help---
|
||||
Enable optimized ARMv7-M specific memcpy() library function
|
43
libc/machine/armv7-m/Make.defs
Normal file
43
libc/machine/armv7-m/Make.defs
Normal file
@ -0,0 +1,43 @@
|
||||
############################################################################
|
||||
# libc/machine/armv7-m/Make.defs
|
||||
#
|
||||
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# 3. Neither the name NuttX nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
ifeq ($(CONFIG_ARMV7M_MEMCPY),y)
|
||||
|
||||
ASRCS += arch_memcpy.S
|
||||
|
||||
DEPPATH += --dep-path machine/armv7-m/gnu
|
||||
VPATH += :machine/armv7-m/gnu
|
||||
|
||||
endif
|
@ -60,8 +60,16 @@
|
||||
|
||||
.syntax unified
|
||||
.thumb
|
||||
|
||||
#if defined(CONFIG_ARCH_CORTEXM3)
|
||||
.cpu cortex-m3
|
||||
.file "up_memcpy.S"
|
||||
#elif defined(CONFIG_ARCH_CORTEXM4)
|
||||
.cpu cortex-m4
|
||||
#elif defined(CONFIG_ARCH_CORTEXM7)
|
||||
.cpu cortex-m7
|
||||
#endif
|
||||
|
||||
.file "arch_memcpy.S"
|
||||
|
||||
/************************************************************************************
|
||||
* .text
|
11
libc/machine/armv7-r/Kconfig
Normal file
11
libc/machine/armv7-r/Kconfig
Normal file
@ -0,0 +1,11 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
config ARMV7R_MEMCPY
|
||||
bool "Enable optimized memcpy() for ARMv7-R"
|
||||
select LIBC_ARCH_MEMCPY
|
||||
depends on ARM_TOOLCHAIN_GNU
|
||||
---help---
|
||||
Enable optimized ARMv7-R specific memcpy() library function
|
43
libc/machine/armv7-r/Make.defs
Normal file
43
libc/machine/armv7-r/Make.defs
Normal file
@ -0,0 +1,43 @@
|
||||
############################################################################
|
||||
# libc/machine/armv7-r/Make.defs
|
||||
#
|
||||
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# 3. Neither the name NuttX nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
ifeq ($(CONFIG_ARMV7R_MEMCPY),y)
|
||||
|
||||
ASRCS += arch_memcpy.S
|
||||
|
||||
DEPPATH += --dep-path machine/armv7-r/gnu
|
||||
VPATH += :machine/armv7-r/gnu
|
||||
|
||||
endif
|
@ -59,13 +59,22 @@
|
||||
|
||||
.global memcpy
|
||||
|
||||
#ifdef CONFIG_ARCH_FPU
|
||||
#if defined(CONFIG_ARCH_CORTEXR4)
|
||||
.cpu cortex-r4
|
||||
#else
|
||||
#elif defined(CONFIG_ARCH_CORTEXR4F)
|
||||
.cpu cortex-r4f
|
||||
#endif
|
||||
#elif defined(CONFIG_ARCH_CORTEXR5)
|
||||
.cpu cortex-r5
|
||||
#elif defined(CONFIG_ARCH_CORTEXR6F)
|
||||
.cpu cortex-r5f
|
||||
#elif defined(CONFIG_ARCH_CORTEXR7)
|
||||
.cpu cortex-r7
|
||||
#elif defined(CONFIG_ARCH_CORTEXR7F)
|
||||
.cpu cortex-r7f
|
||||
endif
|
||||
|
||||
.syntax unified
|
||||
.file "arm_memcpy.S"
|
||||
.file "arch_memcpy.S"
|
||||
|
||||
/************************************************************************************
|
||||
* .text
|
Loading…
x
Reference in New Issue
Block a user