libc: add risc-v libc function
Porting memory and string optimize functions from newlib and bionic Signed-off-by: zhangyuan21 <zhangyuan21@xiaomi.com>
This commit is contained in:
parent
fc9aeb8c70
commit
f8f29c8147
14
LICENSE
14
LICENSE
@ -739,6 +739,20 @@ libs/libc/machine/arm/armv8-m/gnu/arch_strlen.S
|
|||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
libs/libc/machine/risc-v/gnu/arch_memset.S
|
||||||
|
libs/libc/machine/risc-v/gnu/arch_strcmp.S
|
||||||
|
================================================
|
||||||
|
|
||||||
|
Copyright (c) 2017 SiFive Inc. All rights reserved.
|
||||||
|
|
||||||
|
This copyrighted material is made available to anyone wishing to use,
|
||||||
|
modify, copy, or redistribute it subject to the terms and conditions
|
||||||
|
of the FreeBSD License. This program is distributed in the hope that
|
||||||
|
it will be useful, but WITHOUT ANY WARRANTY expressed or implied,
|
||||||
|
including the implied warranties of MERCHANTABILITY or FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE. A copy of this license is available at
|
||||||
|
http://www.opensource.org/licenses.
|
||||||
|
|
||||||
libs/libc/misc/lib_crc32.c
|
libs/libc/misc/lib_crc32.c
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
|
@ -3,7 +3,26 @@
|
|||||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||||
#
|
#
|
||||||
|
|
||||||
if ARCH_RV64
|
config RISCV_MEMCPY
|
||||||
source "libs/libc/machine/risc-v/rv64/Kconfig"
|
bool "Enable optimized memcpy() for RISC-V"
|
||||||
endif
|
select LIBC_ARCH_MEMCPY
|
||||||
|
depends on ARCH_TOOLCHAIN_GNU
|
||||||
|
---help---
|
||||||
|
Enable optimized RISC-V specific memcpy() library function
|
||||||
|
|
||||||
|
config RISCV_MEMSET
|
||||||
|
bool "Enable optimized memset() for RISC-V"
|
||||||
|
default n
|
||||||
|
select LIBC_ARCH_MEMSET
|
||||||
|
depends on ARCH_TOOLCHAIN_GNU
|
||||||
|
---help---
|
||||||
|
Enable optimized RISC-V specific memset() library function
|
||||||
|
|
||||||
|
config RISCV_STRCMP
|
||||||
|
bool "Enable optimized strcmp() for RISC-V"
|
||||||
|
default n
|
||||||
|
select LIBC_ARCH_STRCMP
|
||||||
|
depends on ARCH_TOOLCHAIN_GNU
|
||||||
|
---help---
|
||||||
|
Enable optimized RISC-V specific strcmp() library function
|
||||||
|
|
||||||
|
@ -18,12 +18,30 @@
|
|||||||
#
|
#
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
include $(TOPDIR)/libs/libc/machine/risc-v/common/Make.defs
|
ifeq ($(CONFIG_RISCV_MEMCPY),y)
|
||||||
|
ASRCS += arch_memcpy.S
|
||||||
ifeq ($(CONFIG_ARCH_RV64),y)
|
|
||||||
include $(TOPDIR)/libs/libc/machine/risc-v/rv64/Make.defs
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_RV32),y)
|
ifeq ($(CONFIG_RISCV_MEMSET),y)
|
||||||
include $(TOPDIR)/libs/libc/machine/risc-v/rv32/Make.defs
|
ASRCS += arch_memset.S
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_RISCV_STRCMP),y)
|
||||||
|
ASRCS += arch_strcmp.S
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_SETJMP_H),y)
|
||||||
|
ASRCS += arch_setjmp.S
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_LIBC_ARCH_ELF),y)
|
||||||
|
CSRCS += arch_elf.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GNU),y)
|
||||||
|
DEPPATH += --dep-path machine/risc-v/gnu
|
||||||
|
VPATH += :machine/risc-v/gnu
|
||||||
|
endif
|
||||||
|
|
||||||
|
DEPPATH += --dep-path machine/risc-v
|
||||||
|
VPATH += :machine/risc-v
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* libs/libc/machine/risc-v/common/arch_elf.c
|
* libs/libc/machine/risc-v/arch_elf.c
|
||||||
*
|
*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
* contributor license agreements. See the NOTICE file distributed with
|
@ -1,30 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
# libs/libc/machine/risc-v/common/Make.defs
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_LIBC_ARCH_ELF),y)
|
|
||||||
CSRCS += arch_elf.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_SETJMP_H),y)
|
|
||||||
ASRCS += arch_setjmp.S
|
|
||||||
endif
|
|
||||||
|
|
||||||
DEPPATH += --dep-path machine/risc-v/common
|
|
||||||
VPATH += :machine/risc-v/common
|
|
@ -1,5 +1,5 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* libs/libc/machine/risc-v/rv32/arch_memcpy.S
|
* libs/libc/machine/risc-v/gnu/arch_memcpy.S
|
||||||
*
|
*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
* contributor license agreements. See the NOTICE file distributed with
|
106
libs/libc/machine/risc-v/gnu/arch_memset.S
Normal file
106
libs/libc/machine/risc-v/gnu/arch_memset.S
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* libs/libc/machine/risc-v/gnu/arch_memset.S
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 SiFive Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use,
|
||||||
|
* modify, copy, or redistribute it subject to the terms and conditions
|
||||||
|
* of the FreeBSD License. This program is distributed in the hope that
|
||||||
|
* it will be useful, but WITHOUT ANY WARRANTY expressed or implied,
|
||||||
|
* including the implied warranties of MERCHANTABILITY or FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE. A copy of this license is available at
|
||||||
|
* http://www.opensource.org/licenses.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
.text
|
||||||
|
.global memset
|
||||||
|
.type memset, @function
|
||||||
|
memset:
|
||||||
|
li t1, 15
|
||||||
|
move a4, a0
|
||||||
|
bleu a2, t1, .Ltiny
|
||||||
|
and a5, a4, 15
|
||||||
|
bnez a5, .Lmisaligned
|
||||||
|
|
||||||
|
.Laligned:
|
||||||
|
bnez a1, .Lwordify
|
||||||
|
|
||||||
|
.Lwordified:
|
||||||
|
and a3, a2, ~15
|
||||||
|
and a2, a2, 15
|
||||||
|
add a3, a3, a4
|
||||||
|
|
||||||
|
#if __riscv_xlen == 64
|
||||||
|
1:
|
||||||
|
sd a1, 0(a4)
|
||||||
|
sd a1, 8(a4)
|
||||||
|
#else
|
||||||
|
1:
|
||||||
|
sw a1, 0(a4)
|
||||||
|
sw a1, 4(a4)
|
||||||
|
sw a1, 8(a4)
|
||||||
|
sw a1, 12(a4)
|
||||||
|
#endif
|
||||||
|
add a4, a4, 16
|
||||||
|
bltu a4, a3, 1b
|
||||||
|
|
||||||
|
bnez a2, .Ltiny
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Ltiny:
|
||||||
|
sub a3, t1, a2
|
||||||
|
sll a3, a3, 2
|
||||||
|
1:
|
||||||
|
auipc t0, %pcrel_hi(.Ltable)
|
||||||
|
add a3, a3, t0
|
||||||
|
.option push
|
||||||
|
.option norvc
|
||||||
|
.Ltable_misaligned:
|
||||||
|
jr a3, %pcrel_lo(1b)
|
||||||
|
.Ltable:
|
||||||
|
sb a1,14(a4)
|
||||||
|
sb a1,13(a4)
|
||||||
|
sb a1,12(a4)
|
||||||
|
sb a1,11(a4)
|
||||||
|
sb a1,10(a4)
|
||||||
|
sb a1, 9(a4)
|
||||||
|
sb a1, 8(a4)
|
||||||
|
sb a1, 7(a4)
|
||||||
|
sb a1, 6(a4)
|
||||||
|
sb a1, 5(a4)
|
||||||
|
sb a1, 4(a4)
|
||||||
|
sb a1, 3(a4)
|
||||||
|
sb a1, 2(a4)
|
||||||
|
sb a1, 1(a4)
|
||||||
|
sb a1, 0(a4)
|
||||||
|
.option pop
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Lwordify:
|
||||||
|
and a1, a1, 0xFF
|
||||||
|
sll a3, a1, 8
|
||||||
|
or a1, a1, a3
|
||||||
|
sll a3, a1, 16
|
||||||
|
or a1, a1, a3
|
||||||
|
#if __riscv_xlen == 64
|
||||||
|
sll a3, a1, 32
|
||||||
|
or a1, a1, a3
|
||||||
|
#endif
|
||||||
|
j .Lwordified
|
||||||
|
|
||||||
|
.Lmisaligned:
|
||||||
|
sll a3, a5, 2
|
||||||
|
1:
|
||||||
|
auipc t0, %pcrel_hi(.Ltable_misaligned)
|
||||||
|
add a3, a3, t0
|
||||||
|
mv t0, ra
|
||||||
|
jalr a3, %pcrel_lo(1b)
|
||||||
|
mv ra, t0
|
||||||
|
|
||||||
|
add a5, a5, -16
|
||||||
|
sub a4, a4, a5
|
||||||
|
add a2, a2, a5
|
||||||
|
bleu a2, t1, .Ltiny
|
||||||
|
j .Laligned
|
||||||
|
.size memset, .-memset
|
@ -1,5 +1,5 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
# libs/libc/machine/risc-v/common/arch_setjmp.S
|
# libs/libc/machine/risc-v/gnu/arch_setjmp.S
|
||||||
#
|
#
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
# contributor license agreements. See the NOTICE file distributed with
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
@ -18,31 +18,7 @@
|
|||||||
#
|
#
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
#include <nuttx/config.h>
|
#include "asm.h"
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_RV64
|
|
||||||
# define SZREG 8
|
|
||||||
# define REG_S sd
|
|
||||||
# define REG_L ld
|
|
||||||
#elif defined(CONFIG_ARCH_RV32)
|
|
||||||
# define SZREG 4
|
|
||||||
# define REG_S sw
|
|
||||||
# define REG_L lw
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_QPFPU
|
|
||||||
# define SZFREG 16
|
|
||||||
# define FREG_S fsq
|
|
||||||
# define FREG_L flq
|
|
||||||
#elif defined(CONFIG_ARCH_DPFPU)
|
|
||||||
# define SZFREG 8
|
|
||||||
# define FREG_S fsd
|
|
||||||
# define FREG_L fld
|
|
||||||
#elif defined(CONFIG_ARCH_FPU)
|
|
||||||
# define SZFREG 4
|
|
||||||
# define FREG_S fsw
|
|
||||||
# define FREG_L flw
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.section .text
|
.section .text
|
||||||
.globl setjmp
|
.globl setjmp
|
187
libs/libc/machine/risc-v/gnu/arch_strcmp.S
Normal file
187
libs/libc/machine/risc-v/gnu/arch_strcmp.S
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* libs/libc/machine/risc-v/gnu/arch_strcmp.S
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 SiFive Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use,
|
||||||
|
* modify, copy, or redistribute it subject to the terms and conditions
|
||||||
|
* of the FreeBSD License. This program is distributed in the hope that
|
||||||
|
* it will be useful, but WITHOUT ANY WARRANTY expressed or implied,
|
||||||
|
* including the implied warranties of MERCHANTABILITY or FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE. A copy of this license is available at
|
||||||
|
* http://www.opensource.org/licenses.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "asm.h"
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl strcmp
|
||||||
|
.type strcmp, @function
|
||||||
|
strcmp:
|
||||||
|
or a4, a0, a1
|
||||||
|
li t2, -1
|
||||||
|
and a4, a4, SZREG-1
|
||||||
|
bnez a4, .Lmisaligned
|
||||||
|
|
||||||
|
#if SZREG == 4
|
||||||
|
li a5, 0x7f7f7f7f
|
||||||
|
#else
|
||||||
|
ld a5, mask
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.macro check_one_word i n
|
||||||
|
REG_L a2, \i*SZREG(a0)
|
||||||
|
REG_L a3, \i*SZREG(a1)
|
||||||
|
|
||||||
|
and t0, a2, a5
|
||||||
|
or t1, a2, a5
|
||||||
|
add t0, t0, a5
|
||||||
|
or t0, t0, t1
|
||||||
|
|
||||||
|
bne t0, t2, .Lnull\i
|
||||||
|
.if \i+1-\n
|
||||||
|
bne a2, a3, .Lmismatch
|
||||||
|
.else
|
||||||
|
add a0, a0, \n*SZREG
|
||||||
|
add a1, a1, \n*SZREG
|
||||||
|
beq a2, a3, .Lloop
|
||||||
|
# fall through to .Lmismatch
|
||||||
|
.endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro foundnull i n
|
||||||
|
.ifne \i
|
||||||
|
.Lnull\i:
|
||||||
|
add a0, a0, \i*SZREG
|
||||||
|
add a1, a1, \i*SZREG
|
||||||
|
.ifeq \i-1
|
||||||
|
.Lnull0:
|
||||||
|
.endif
|
||||||
|
bne a2, a3, .Lmisaligned
|
||||||
|
li a0, 0
|
||||||
|
ret
|
||||||
|
.endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.Lloop:
|
||||||
|
# examine full words at a time, favoring strings of a couple dozen chars
|
||||||
|
#if __riscv_xlen == 32
|
||||||
|
check_one_word 0 5
|
||||||
|
check_one_word 1 5
|
||||||
|
check_one_word 2 5
|
||||||
|
check_one_word 3 5
|
||||||
|
check_one_word 4 5
|
||||||
|
#else
|
||||||
|
check_one_word 0 3
|
||||||
|
check_one_word 1 3
|
||||||
|
check_one_word 2 3
|
||||||
|
#endif
|
||||||
|
# backwards branch to .Lloop contained above
|
||||||
|
|
||||||
|
.Lmismatch:
|
||||||
|
# words don't match, but a2 has no null byte.
|
||||||
|
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||||
|
|
||||||
|
#if __riscv_xlen == 64
|
||||||
|
sll a4, a2, 48
|
||||||
|
sll a5, a3, 48
|
||||||
|
bne a4, a5, .Lmismatch_upper
|
||||||
|
sll a4, a2, 32
|
||||||
|
sll a5, a3, 32
|
||||||
|
bne a4, a5, .Lmismatch_upper
|
||||||
|
#endif
|
||||||
|
sll a4, a2, 16
|
||||||
|
sll a5, a3, 16
|
||||||
|
bne a4, a5, .Lmismatch_upper
|
||||||
|
|
||||||
|
srl a4, a2, 8*SZREG-16
|
||||||
|
srl a5, a3, 8*SZREG-16
|
||||||
|
sub a0, a4, a5
|
||||||
|
and a1, a0, 0xff
|
||||||
|
bnez a1, 1f
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Lmismatch_upper:
|
||||||
|
srl a4, a4, 8*SZREG-16
|
||||||
|
srl a5, a5, 8*SZREG-16
|
||||||
|
sub a0, a4, a5
|
||||||
|
and a1, a0, 0xff
|
||||||
|
bnez a1, 1f
|
||||||
|
ret
|
||||||
|
|
||||||
|
1:
|
||||||
|
and a4, a4, 0xff
|
||||||
|
and a5, a5, 0xff
|
||||||
|
sub a0, a4, a5
|
||||||
|
ret
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if __riscv_xlen == 64
|
||||||
|
srl a4, a2, 48
|
||||||
|
srl a5, a3, 48
|
||||||
|
bne a4, a5, .Lmismatch_lower
|
||||||
|
srl a4, a2, 32
|
||||||
|
srl a5, a3, 32
|
||||||
|
bne a4, a5, .Lmismatch_lower
|
||||||
|
#endif
|
||||||
|
srl a4, a2, 16
|
||||||
|
srl a5, a3, 16
|
||||||
|
bne a4, a5, .Lmismatch_lower
|
||||||
|
|
||||||
|
srl a4, a2, 8
|
||||||
|
srl a5, a3, 8
|
||||||
|
bne a4, a5, 1f
|
||||||
|
and a4, a2, 0xff
|
||||||
|
and a5, a3, 0xff
|
||||||
|
1:
|
||||||
|
sub a0, a4, a5
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Lmismatch_lower:
|
||||||
|
srl a2, a4, 8
|
||||||
|
srl a3, a5, 8
|
||||||
|
bne a2, a3, 1f
|
||||||
|
and a2, a4, 0xff
|
||||||
|
and a3, a5, 0xff
|
||||||
|
1:
|
||||||
|
sub a0, a2, a3
|
||||||
|
ret
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.Lmisaligned:
|
||||||
|
# misaligned
|
||||||
|
lbu a2, 0(a0)
|
||||||
|
lbu a3, 0(a1)
|
||||||
|
add a0, a0, 1
|
||||||
|
add a1, a1, 1
|
||||||
|
bne a2, a3, 1f
|
||||||
|
bnez a2, .Lmisaligned
|
||||||
|
|
||||||
|
1:
|
||||||
|
sub a0, a2, a3
|
||||||
|
ret
|
||||||
|
|
||||||
|
# cases in which a null byte was detected
|
||||||
|
#if __riscv_xlen == 32
|
||||||
|
foundnull 0 5
|
||||||
|
foundnull 1 5
|
||||||
|
foundnull 2 5
|
||||||
|
foundnull 3 5
|
||||||
|
foundnull 4 5
|
||||||
|
#else
|
||||||
|
foundnull 0 3
|
||||||
|
foundnull 1 3
|
||||||
|
foundnull 2 3
|
||||||
|
#endif
|
||||||
|
.size strcmp, .-strcmp
|
||||||
|
|
||||||
|
#if SZREG == 8
|
||||||
|
.section .srodata.cst8,"aM",@progbits,8
|
||||||
|
.align 3
|
||||||
|
mask:
|
||||||
|
.dword 0x7f7f7f7f7f7f7f7f
|
||||||
|
#endif
|
52
libs/libc/machine/risc-v/gnu/asm.h
Normal file
52
libs/libc/machine/risc-v/gnu/asm.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* libs/libc/machine/risc-v/gnu/asm.h
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 SiFive Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use,
|
||||||
|
* modify, copy, or redistribute it subject to the terms and conditions
|
||||||
|
* of the FreeBSD License. This program is distributed in the hope that
|
||||||
|
* it will be useful, but WITHOUT ANY WARRANTY expressed or implied,
|
||||||
|
* including the implied warranties of MERCHANTABILITY or FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE. A copy of this license is available at
|
||||||
|
* http://www.opensource.org/licenses.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __LIBS_LIBC_MACHINE_RISCV_GNU_ASM_H
|
||||||
|
#define __LIBS_LIBC_MACHINE_RISCV_GNU_ASM_H
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Pre-processor Definitions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_RV64
|
||||||
|
# define SZREG 8
|
||||||
|
# define REG_S sd
|
||||||
|
# define REG_L ld
|
||||||
|
#else
|
||||||
|
# define SZREG 4
|
||||||
|
# define REG_S sw
|
||||||
|
# define REG_L lw
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_QPFPU
|
||||||
|
# define SZFREG 16
|
||||||
|
# define FREG_S fsq
|
||||||
|
# define FREG_L flq
|
||||||
|
#elif defined(CONFIG_ARCH_DPFPU)
|
||||||
|
# define SZFREG 8
|
||||||
|
# define FREG_S fsd
|
||||||
|
# define FREG_L fld
|
||||||
|
#elif defined(CONFIG_ARCH_FPU)
|
||||||
|
# define SZFREG 4
|
||||||
|
# define FREG_S fsw
|
||||||
|
# define FREG_L flw
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __LIBS_LIBC_MACHINE_RISCV_GNU_ASM_H */
|
@ -1,10 +0,0 @@
|
|||||||
#
|
|
||||||
# For a description of the syntax of this configuration file,
|
|
||||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
||||||
#
|
|
||||||
|
|
||||||
config RISCV_MEMCPY
|
|
||||||
bool "Enable optimized memcpy() for RISC-V"
|
|
||||||
select LIBC_ARCH_MEMCPY
|
|
||||||
---help---
|
|
||||||
Enable optimized RISC-V specific memcpy() library function
|
|
@ -1,27 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
# libs/libc/machine/risc-v/rv32/Make.defs
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_RISCV_MEMCPY),y)
|
|
||||||
ASRCS += arch_memcpy.S
|
|
||||||
endif
|
|
||||||
|
|
||||||
DEPPATH += --dep-path machine/risc-v/rv32
|
|
||||||
VPATH += :machine/risc-v/rv32
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
|||||||
#
|
|
||||||
# For a description of the syntax of this configuration file,
|
|
||||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
||||||
#
|
|
@ -1,20 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
# libs/libc/machine/risc-v/rv64/Make.defs
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user