diff options
author | Arnd Bergmann <arnd@arndb.de> | 2018-03-07 21:21:59 +0100 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2018-03-09 23:19:58 +0100 |
commit | fd8773f9f544955f6f47dc2ac3ab85ad64376b7f (patch) | |
tree | 2eedaf10b5a4b62df0d3b514cec9614a6af6b563 /arch/frv/lib/memset.S | |
parent | 739d875dd6982618020d30f58f8acf10f6076e6d (diff) | |
download | linux-fd8773f9f544955f6f47dc2ac3ab85ad64376b7f.tar.gz linux-fd8773f9f544955f6f47dc2ac3ab85ad64376b7f.tar.bz2 linux-fd8773f9f544955f6f47dc2ac3ab85ad64376b7f.zip |
arch: remove frv port
The Fujitsu FRV kernel port has been around for a long time, but has not
seen regular updates in several years and instead was marked 'Orphaned'
in 2016 by long-time maintainer David Howells.
The SoC product line apparently is apparently still around in the form
of the Socionext Milbeaut image processor, but this one no longer uses
the FRV CPU cores.
This removes all FRV specific files from the kernel.
Link: http://www.socionext.com/en/products/assp/milbeaut/
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/frv/lib/memset.S')
-rw-r--r-- | arch/frv/lib/memset.S | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/arch/frv/lib/memset.S b/arch/frv/lib/memset.S deleted file mode 100644 index 55a35263cbe3..000000000000 --- a/arch/frv/lib/memset.S +++ /dev/null @@ -1,182 +0,0 @@ -/* memset.S: optimised assembly memset - * - * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved. - * Written by David Howells (dhowells@redhat.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - */ - - - .text - .p2align 4 - -############################################################################### -# -# void *memset(void *p, char ch, size_t count) -# -# - NOTE: must not use any stack. exception detection performs function return -# to caller's fixup routine, aborting the remainder of the set -# GR4, GR7, GR8, and GR11 must be managed -# -############################################################################### - .globl memset,__memset_end - .type memset,@function -memset: - orcc.p gr10,gr0,gr5,icc3 ; GR5 = count - andi gr9,#0xff,gr9 - or.p gr8,gr0,gr4 ; GR4 = address - beqlr icc3,#0 - - # conditionally write a byte to 2b-align the address - setlos.p #1,gr6 - andicc gr4,#1,gr0,icc0 - ckne icc0,cc7 - cstb.p gr9,@(gr4,gr0) ,cc7,#1 - csubcc gr5,gr6,gr5 ,cc7,#1 ; also set ICC3 - cadd.p gr4,gr6,gr4 ,cc7,#1 - beqlr icc3,#0 - - # conditionally write a word to 4b-align the address - andicc.p gr4,#2,gr0,icc0 - subicc gr5,#2,gr0,icc1 - setlos.p #2,gr6 - ckne icc0,cc7 - slli.p gr9,#8,gr12 ; need to double up the pattern - cknc icc1,cc5 - or.p gr9,gr12,gr12 - andcr cc7,cc5,cc7 - - csth.p gr12,@(gr4,gr0) ,cc7,#1 - csubcc gr5,gr6,gr5 ,cc7,#1 ; also set ICC3 - cadd.p gr4,gr6,gr4 ,cc7,#1 - beqlr icc3,#0 - - # conditionally write a dword to 8b-align the address - andicc.p gr4,#4,gr0,icc0 - subicc gr5,#4,gr0,icc1 - setlos.p #4,gr6 - ckne icc0,cc7 - slli.p gr12,#16,gr13 ; need to quadruple-up the pattern - cknc icc1,cc5 - or.p gr13,gr12,gr12 - andcr cc7,cc5,cc7 - - cst.p gr12,@(gr4,gr0) ,cc7,#1 - csubcc gr5,gr6,gr5 ,cc7,#1 ; also set ICC3 - cadd.p gr4,gr6,gr4 ,cc7,#1 - beqlr icc3,#0 - - or.p gr12,gr12,gr13 ; need to octuple-up the pattern - - # the address is now 8b-aligned - loop around writing 64b chunks - setlos #8,gr7 - subi.p gr4,#8,gr4 ; store with update index does weird stuff - setlos #64,gr6 - - subicc gr5,#64,gr0,icc0 -0: cknc icc0,cc7 - cstdu gr12,@(gr4,gr7) ,cc7,#1 - cstdu gr12,@(gr4,gr7) ,cc7,#1 - cstdu gr12,@(gr4,gr7) ,cc7,#1 - cstdu gr12,@(gr4,gr7) ,cc7,#1 - cstdu gr12,@(gr4,gr7) ,cc7,#1 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - csubcc gr5,gr6,gr5 ,cc7,#1 ; also set ICC3 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - subicc gr5,#64,gr0,icc0 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - beqlr icc3,#0 - bnc icc0,#2,0b - - # now do 32-byte remnant - subicc.p gr5,#32,gr0,icc0 - setlos #32,gr6 - cknc icc0,cc7 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - csubcc gr5,gr6,gr5 ,cc7,#1 ; also set ICC3 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - setlos #16,gr6 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - subicc gr5,#16,gr0,icc0 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - beqlr icc3,#0 - - # now do 16-byte remnant - cknc icc0,cc7 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - csubcc gr5,gr6,gr5 ,cc7,#1 ; also set ICC3 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - beqlr icc3,#0 - - # now do 8-byte remnant - subicc gr5,#8,gr0,icc1 - cknc icc1,cc7 - cstdu.p gr12,@(gr4,gr7) ,cc7,#1 - csubcc gr5,gr7,gr5 ,cc7,#1 ; also set ICC3 - setlos.p #4,gr7 - beqlr icc3,#0 - - # now do 4-byte remnant - subicc gr5,#4,gr0,icc0 - addi.p gr4,#4,gr4 - cknc icc0,cc7 - cstu.p gr12,@(gr4,gr7) ,cc7,#1 - csubcc gr5,gr7,gr5 ,cc7,#1 ; also set ICC3 - subicc.p gr5,#2,gr0,icc1 - beqlr icc3,#0 - - # now do 2-byte remnant - setlos #2,gr7 - addi.p gr4,#2,gr4 - cknc icc1,cc7 - csthu.p gr12,@(gr4,gr7) ,cc7,#1 - csubcc gr5,gr7,gr5 ,cc7,#1 ; also set ICC3 - subicc.p gr5,#1,gr0,icc0 - beqlr icc3,#0 - - # now do 1-byte remnant - setlos #0,gr7 - addi.p gr4,#2,gr4 - cknc icc0,cc7 - cstb.p gr12,@(gr4,gr0) ,cc7,#1 - bralr -__memset_end: - - .size memset, __memset_end-memset - -############################################################################### -# -# clear memory in userspace -# - return the number of bytes that could not be cleared (0 on complete success) -# -# long __memset_user(void *p, size_t count) -# -############################################################################### - .globl __memset_user, __memset_user_error_lr, __memset_user_error_handler - .type __memset_user,@function -__memset_user: - movsg lr,gr11 - - # abuse memset to do the dirty work - or.p gr9,gr9,gr10 - setlos #0,gr9 - call memset -__memset_user_error_lr: - jmpl.p @(gr11,gr0) - setlos #0,gr8 - - # deal any exception generated by memset - # GR4 - memset's address tracking pointer - # GR7 - memset's step value (index register for store insns) - # GR8 - memset's original start address - # GR10 - memset's original count -__memset_user_error_handler: - add.p gr4,gr7,gr4 - add gr8,gr10,gr8 - jmpl.p @(gr11,gr0) - sub gr8,gr4,gr8 ; we return the amount left uncleared - - .size __memset_user, .-__memset_user |