diff options
Diffstat (limited to 'arch/nds32/lib')
| -rw-r--r-- | arch/nds32/lib/Makefile | 4 | ||||
| -rw-r--r-- | arch/nds32/lib/clear_user.S | 42 | ||||
| -rw-r--r-- | arch/nds32/lib/copy_from_user.S | 45 | ||||
| -rw-r--r-- | arch/nds32/lib/copy_page.S | 40 | ||||
| -rw-r--r-- | arch/nds32/lib/copy_template.S | 69 | ||||
| -rw-r--r-- | arch/nds32/lib/copy_to_user.S | 45 | ||||
| -rw-r--r-- | arch/nds32/lib/memcpy.S | 30 | ||||
| -rw-r--r-- | arch/nds32/lib/memmove.S | 70 | ||||
| -rw-r--r-- | arch/nds32/lib/memset.S | 33 | ||||
| -rw-r--r-- | arch/nds32/lib/memzero.S | 18 | 
10 files changed, 0 insertions, 396 deletions
diff --git a/arch/nds32/lib/Makefile b/arch/nds32/lib/Makefile deleted file mode 100644 index dddbc15d6b37..000000000000 --- a/arch/nds32/lib/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -lib-y		:= copy_page.o memcpy.o memmove.o   \ -		   memset.o memzero.o \ -		   copy_from_user.o copy_to_user.o clear_user.o diff --git a/arch/nds32/lib/clear_user.S b/arch/nds32/lib/clear_user.S deleted file mode 100644 index 805dfcd25bf8..000000000000 --- a/arch/nds32/lib/clear_user.S +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> -#include <asm/assembler.h> -#include <asm/errno.h> - -/* Prototype: int __arch_clear_user(void *addr, size_t sz) - * Purpose  : clear some user memory - * Params   : addr - user memory address to clear - *          : sz   - number of bytes to clear - * Returns  : number of bytes NOT cleared - */ -	.text -	.align	5 -ENTRY(__arch_clear_user) -	add	$r5, $r0, $r1 -	beqz	$r1, clear_exit -	xor	$p1, $p1, $p1		! Use $p1=0 to clear mem -	srli	$p0, $r1, #2		! $p0 = number of word to clear -	andi	$r1, $r1, #3		! Bytes less than a word to copy -	beqz	$p0, byte_clear		! Only less than a word to clear -word_clear: -USER(	smw.bim,$p1, [$r0], $p1)	! Clear the word -	addi	$p0, $p0, #-1		! Decrease word count -	bnez	$p0, word_clear		! Continue looping to clear all words -	beqz	$r1, clear_exit		! No left bytes to copy -byte_clear: -USER(	sbi.bi,	$p1, [$r0], #1)		! Clear the byte -	addi	$r1, $r1, #-1		! Decrease byte count -	bnez	$r1, byte_clear		! Continue looping to clear all left bytes -clear_exit: -	move	$r0, $r1		! Set return value -	ret - -	.section .fixup,"ax" -	.align	0 -9001: -	sub	$r0, $r5, $r0		! Bytes left to copy -	ret -	.previous -ENDPROC(__arch_clear_user) diff --git a/arch/nds32/lib/copy_from_user.S b/arch/nds32/lib/copy_from_user.S deleted file mode 100644 index ad1857b20067..000000000000 --- a/arch/nds32/lib/copy_from_user.S +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> -#include <asm/assembler.h> -#include <asm/errno.h> - -.macro 	lbi1 dst, addr, adj -USER( lbi.bi, \dst, [\addr], \adj) -.endm - -.macro 	sbi1 src, addr, adj -sbi.bi	\src, [\addr], \adj -.endm - -.macro	lmw1 start_reg, addr, end_reg -USER( lmw.bim, \start_reg, [\addr], \end_reg) -.endm - -.macro	smw1 start_reg, addr, end_reg -smw.bim \start_reg, [\addr], \end_reg -.endm - - -/* Prototype: int __arch_copy_from_user(void *to, const char *from, size_t n) - * Purpose  : copy a block from user memory to kernel memory - * Params   : to   - kernel memory - *          : from - user memory - *          : n    - number of bytes to copy - * Returns  : Number of bytes NOT copied. - */ - -.text -ENTRY(__arch_copy_from_user) -	add	$r5, $r0, $r2 -#include "copy_template.S" -	move	$r0, $r2 -	ret -.section .fixup,"ax" -.align  2 -9001: -	sub	$r0, $r5, $r0 -	ret -.previous -ENDPROC(__arch_copy_from_user) diff --git a/arch/nds32/lib/copy_page.S b/arch/nds32/lib/copy_page.S deleted file mode 100644 index f8701ed161a8..000000000000 --- a/arch/nds32/lib/copy_page.S +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> -#include <asm/export.h> -#include <asm/page.h> - -	.text -ENTRY(copy_page) -	pushm	$r2, $r10 -	movi	$r2, PAGE_SIZE >> 5 -.Lcopy_loop: -	lmw.bim	$r3, [$r1], $r10 -	smw.bim	$r3, [$r0], $r10 -	subi45	$r2, #1 -	bnez38	$r2, .Lcopy_loop -	popm	$r2, $r10 -	ret -ENDPROC(copy_page) -EXPORT_SYMBOL(copy_page) - -ENTRY(clear_page) -	pushm	$r1, $r9 -	movi	$r1, PAGE_SIZE >> 5 -	movi55	$r2, #0 -	movi55	$r3, #0 -	movi55	$r4, #0 -	movi55	$r5, #0 -	movi55	$r6, #0 -	movi55	$r7, #0 -	movi55	$r8, #0 -	movi55	$r9, #0 -.Lclear_loop: -	smw.bim	$r2, [$r0], $r9 -	subi45	$r1, #1 -	bnez38	$r1, .Lclear_loop -	popm	$r1, $r9 -        ret -ENDPROC(clear_page) -EXPORT_SYMBOL(clear_page) diff --git a/arch/nds32/lib/copy_template.S b/arch/nds32/lib/copy_template.S deleted file mode 100644 index 3a9a2de468c2..000000000000 --- a/arch/nds32/lib/copy_template.S +++ /dev/null @@ -1,69 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - - -	beq	$r1, $r0, quit_memcpy -	beqz	$r2, quit_memcpy -	srli    $r3, $r2, #5	! check if len < cache-line size 32 -	beqz	$r3, word_copy_entry -	andi	$r4, $r0, #0x3	! check byte-align -	beqz	$r4, unalign_word_copy_entry - -	addi	$r4, $r4,#-4 -	abs	$r4, $r4	! check how many un-align byte to copy -	sub	$r2, $r2, $r4	! update $R2 - -unalign_byte_copy: -	lbi1	$r3, $r1, #1 -	addi	$r4, $r4, #-1 -	sbi1	$r3, $r0, #1 -	bnez	$r4, unalign_byte_copy -	beqz	$r2, quit_memcpy - -unalign_word_copy_entry: -	andi	$r3, $r0, 0x1f	! check cache-line unaligncount -	beqz	$r3, cache_copy - -	addi	$r3, $r3, #-32 -	abs	$r3, $r3 -	sub	$r2, $r2, $r3	! update $R2 - -unalign_word_copy: -	lmw1	$r4, $r1, $r4 -	addi	$r3, $r3, #-4 -	smw1	$r4, $r0, $r4 -	bnez	$r3, unalign_word_copy -	beqz	$r2, quit_memcpy - -	addi	$r3, $r2, #-32	! to check $r2< cache_line , than go to word_copy -	bltz	$r3, word_copy_entry -cache_copy: -	srli	$r3, $r2, #5 -	beqz	$r3, word_copy_entry -3: -	lmw1	$r17, $r1, $r24 -	addi	$r3, $r3, #-1 -	smw1	$r17, $r0, $r24 -	bnez	$r3, 3b - -word_copy_entry: -	andi	$r2, $r2, #31 - -	beqz	$r2, quit_memcpy -5: -	srli	$r3, $r2, #2 -	beqz	$r3, byte_copy -word_copy: -	lmw1	$r4, $r1, $r4 -	addi	$r3, $r3, #-1 -	smw1	$r4, $r0, $r4 -	bnez	$r3, word_copy -	andi	$r2, $r2, #3 -	beqz	$r2, quit_memcpy -byte_copy: -	lbi1	$r3, $r1, #1 -	addi	$r2, $r2, #-1 - -	sbi1	$r3, $r0, #1 -	bnez	$r2, byte_copy -quit_memcpy: diff --git a/arch/nds32/lib/copy_to_user.S b/arch/nds32/lib/copy_to_user.S deleted file mode 100644 index 3230044dcfb8..000000000000 --- a/arch/nds32/lib/copy_to_user.S +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> -#include <asm/assembler.h> -#include <asm/errno.h> - -.macro 	lbi1 dst, addr, adj -lbi.bi	\dst, [\addr], \adj -.endm - -.macro 	sbi1 src, addr, adj -USER( sbi.bi, \src, [\addr], \adj) -.endm - -.macro	lmw1 start_reg, addr, end_reg -lmw.bim \start_reg, [\addr], \end_reg -.endm - -.macro	smw1 start_reg, addr, end_reg -USER( smw.bim, \start_reg, [\addr], \end_reg) -.endm - - -/* Prototype: int __arch_copy_to_user(void *to, const char *from, size_t n) - * Purpose  : copy a block to user memory from kernel memory - * Params   : to   - user memory - *          : from - kernel memory - *          : n    - number of bytes to copy - * Returns  : Number of bytes NOT copied. - */ - -.text -ENTRY(__arch_copy_to_user) -	add	$r5, $r0, $r2 -#include "copy_template.S" -	move	$r0, $r2 -	ret -.section .fixup,"ax" -.align  2 -9001: -	sub	$r0, $r5, $r0 -	ret -.previous -ENDPROC(__arch_copy_to_user) diff --git a/arch/nds32/lib/memcpy.S b/arch/nds32/lib/memcpy.S deleted file mode 100644 index a2345ea721e4..000000000000 --- a/arch/nds32/lib/memcpy.S +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> - - -.macro 	lbi1 dst, addr, adj -lbi.bi	\dst, [\addr], \adj -.endm - -.macro 	sbi1 src, addr, adj -sbi.bi	\src, [\addr], \adj -.endm - -.macro	lmw1 start_reg, addr, end_reg -lmw.bim \start_reg, [\addr], \end_reg -.endm - -.macro	smw1 start_reg, addr, end_reg -smw.bim \start_reg, [\addr], \end_reg -.endm - -.text -ENTRY(memcpy) -	move	$r5, $r0 -#include "copy_template.S" -	move	$r0, $r5 -	ret - -ENDPROC(memcpy) diff --git a/arch/nds32/lib/memmove.S b/arch/nds32/lib/memmove.S deleted file mode 100644 index c823aada2271..000000000000 --- a/arch/nds32/lib/memmove.S +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> - -/* -  void *memmove(void *dst, const void *src, int n); - -  dst: $r0 -  src: $r1 -  n  : $r2 -  ret: $r0 - pointer to the memory area dst. -*/ -	.text - -ENTRY(memmove) -	move	$r5, $r0		! Set return value = det -	beq	$r0, $r1, exit_memcpy	! Exit when det = src -	beqz	$r2, exit_memcpy	! Exit when n = 0 -	pushm	$t0, $t1		! Save reg -	srli	$p1, $r2, #2		! $p1 is how many words to copy - -	! Avoid data lost when memory overlap -	! Copy data reversely when src < dst -	slt	$p0, $r0, $r1		! check if $r0 < $r1 -	beqz	$p0, do_reverse		! branch if dst > src - -	! No reverse, dst < src -	andi	$r2, $r2, #3		! How many bytes are less than a word -	li	$t0, #1			! Determining copy direction in byte_cpy -	beqz	$p1, byte_cpy		! When n is less than a word - -word_cpy: -	lmw.bim	$p0, [$r1], $p0		! Read a word from src -	addi	$p1, $p1, #-1		! How many words left to copy -	smw.bim	$p0, [$r0], $p0		! Copy the word to det -	bnez	$p1, word_cpy		! If remained words > 0 -	beqz	$r2, end_memcpy		! No left bytes to copy -	b	byte_cpy - -do_reverse: -	add	$r0, $r0, $r2		! Start with the end of $r0 -	add	$r1, $r1, $r2		! Start with the end of $r1 -	andi	$r2, $r2, #3		! How many bytes are less than a word -	li	$t0, #-1		! Determining copy direction in byte_cpy -	beqz	$p1, reverse_byte_cpy	! When n is less than a word - -reverse_word_cpy: -	lmw.adm	$p0, [$r1], $p0		! Read a word from src -	addi	$p1, $p1, #-1		! How many words left to copy -	smw.adm	$p0, [$r0], $p0		! Copy the word to det -	bnez	$p1, reverse_word_cpy	! If remained words > 0 -	beqz	$r2, end_memcpy		! No left bytes to copy - -reverse_byte_cpy: -	addi	$r0, $r0, #-1 -	addi	$r1, $r1, #-1 -byte_cpy:				! Less than 4 bytes to copy now -	lb.bi	$p0, [$r1], $t0		! Read a byte from src -	addi	$r2, $r2, #-1		! How many bytes left to copy -	sb.bi	$p0, [$r0], $t0		! copy the byte to det -	bnez	$r2, byte_cpy		! If remained bytes > 0 - -end_memcpy: -	popm	$t0, $t1 -exit_memcpy: -	move	$r0, $r5 -	ret - -ENDPROC(memmove) diff --git a/arch/nds32/lib/memset.S b/arch/nds32/lib/memset.S deleted file mode 100644 index 193cb6ce21a9..000000000000 --- a/arch/nds32/lib/memset.S +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> - -	.text -ENTRY(memset) -	move	$r5, $r0		! Return value -	beqz	$r2, end_memset		! Exit when len = 0 -	srli	$p1, $r2, 2		! $p1 is how many words to copy -	andi	$r2, $r2, 3		! How many bytes are less than a word -	beqz	$p1, byte_set		! When n is less than a word - -	! set $r1 from ??????ab to abababab -	andi	$r1, $r1, #0x00ff	! $r1 = 000000ab -	slli	$p0, $r1, #8		! $p0 = 0000ab00 -	or	$r1, $r1, $p0		! $r1 = 0000abab -	slli	$p0, $r1, #16		! $p0 = abab0000 -	or	$r1, $r1, $p0		! $r1 = abababab -word_set: -	addi	$p1, $p1, #-1		! How many words left to copy -	smw.bim	$r1, [$r0], $r1		! Copy the word to det -	bnez	$p1, word_set		! Still words to set, continue looping -	beqz	$r2, end_memset		! No left byte to set -byte_set:				! Less than 4 bytes left to set -	addi	$r2, $r2, #-1		! Decrease len by 1 -	sbi.bi	$r1, [$r0], #1		! Set data of the next byte to $r1 -	bnez	$r2, byte_set		! Still bytes left to set -end_memset: -	move	$r0, $r5 -	ret - -ENDPROC(memset) diff --git a/arch/nds32/lib/memzero.S b/arch/nds32/lib/memzero.S deleted file mode 100644 index f055972c9343..000000000000 --- a/arch/nds32/lib/memzero.S +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (C) 2005-2017 Andes Technology Corporation - -#include <linux/linkage.h> - -	.text -ENTRY(memzero) -	beqz	$r1, 1f -	push	$lp -	move    $r2, $r1 -	move    $r1, #0 -	push	$r0 -	bal     memset -	pop	$r0 -	pop	$lp -1: -        ret -ENDPROC(memzero)  | 
