The point of these extern declarations is to provoke a link error, so an architecture must not provide a symbol for them. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
		
			
				
	
	
		
			184 lines
		
	
	
	
		
			2.8 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
	
		
			2.8 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/*
 | 
						|
 * arch/score/lib/string.S
 | 
						|
 *
 | 
						|
 * Score Processor version.
 | 
						|
 *
 | 
						|
 * Copyright (C) 2009 Sunplus Core Technology Co., Ltd.
 | 
						|
 *  Chen Liqin <liqin.chen@sunplusct.com>
 | 
						|
 *  Lennox Wu <lennox.wu@sunplusct.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.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 * GNU General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU General Public License
 | 
						|
 * along with this program; if not, see the file COPYING, or write
 | 
						|
 * to the Free Software Foundation, Inc.,
 | 
						|
 * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
						|
 */
 | 
						|
 | 
						|
#include <linux/linkage.h>
 | 
						|
#include <asm-generic/errno.h>
 | 
						|
 | 
						|
	.text
 | 
						|
	.align 2
 | 
						|
ENTRY(__strncpy_from_user)
 | 
						|
	cmpi.c	r6, 0
 | 
						|
	mv	r9, r6
 | 
						|
	ble	.L2
 | 
						|
0:	lbu	r7, [r5]
 | 
						|
	ldi	r8, 0
 | 
						|
1:	sb	r7, [r4]
 | 
						|
2:	lb	r6, [r5]
 | 
						|
	cmp.c	r6, r8
 | 
						|
	beq	.L2
 | 
						|
 | 
						|
.L5:
 | 
						|
	addi	r8, 1
 | 
						|
	cmp.c	r8, r9
 | 
						|
	beq	.L7
 | 
						|
3:	lbu	r6, [r5, 1]+
 | 
						|
4:	sb	r6, [r4, 1]+
 | 
						|
5:	lb	r7, [r5]
 | 
						|
	cmpi.c	r7, 0
 | 
						|
	bne	.L5
 | 
						|
.L7:
 | 
						|
	mv	r4, r8
 | 
						|
	br	r3
 | 
						|
.L2:
 | 
						|
	ldi	r8, 0
 | 
						|
	mv	r4, r8
 | 
						|
	br	r3
 | 
						|
	.section .fixup, "ax"
 | 
						|
99:
 | 
						|
	ldi	r4, -EFAULT
 | 
						|
	br	r3
 | 
						|
	.previous
 | 
						|
	.section __ex_table, "a"
 | 
						|
	.align	2
 | 
						|
	.word	0b ,99b
 | 
						|
	.word	1b ,99b
 | 
						|
	.word	2b ,99b
 | 
						|
	.word	3b ,99b
 | 
						|
	.word	4b ,99b
 | 
						|
	.word	5b ,99b
 | 
						|
	.previous
 | 
						|
 | 
						|
	.align 2
 | 
						|
ENTRY(__strnlen_user)
 | 
						|
	cmpi.c	r5, 0
 | 
						|
	ble	.L11
 | 
						|
0:	lb	r6, [r4]
 | 
						|
	ldi	r7, 0
 | 
						|
	cmp.c	r6, r7
 | 
						|
	beq	.L11
 | 
						|
.L15:
 | 
						|
	addi	r7, 1
 | 
						|
	cmp.c	r7, r5
 | 
						|
	beq	.L23
 | 
						|
1:	lb	r6, [r4,1]+
 | 
						|
	cmpi.c	r6, 0
 | 
						|
	bne	.L15
 | 
						|
.L23:
 | 
						|
	addri	r4, r7, 1
 | 
						|
	br	r3
 | 
						|
 | 
						|
.L11:
 | 
						|
	ldi	r4, 1
 | 
						|
	br	r3
 | 
						|
	.section .fixup, "ax"
 | 
						|
99:
 | 
						|
	ldi	r4, 0
 | 
						|
	br	r3
 | 
						|
 | 
						|
	.section __ex_table,"a"
 | 
						|
	.align 2
 | 
						|
	.word	0b, 99b
 | 
						|
	.word	1b, 99b
 | 
						|
	.previous
 | 
						|
 | 
						|
	.align 2
 | 
						|
ENTRY(__strlen_user)
 | 
						|
0:	lb	r6, [r4]
 | 
						|
	mv	r7, r4
 | 
						|
	extsb	r6, r6
 | 
						|
	cmpi.c	r6, 0
 | 
						|
	mv	r4, r6
 | 
						|
	beq	.L27
 | 
						|
.L28:
 | 
						|
1:	lb	r6, [r7, 1]+
 | 
						|
	addi	r6, 1
 | 
						|
	cmpi.c	r6, 0
 | 
						|
	bne	.L28
 | 
						|
.L27:
 | 
						|
	br	r3
 | 
						|
	.section .fixup, "ax"
 | 
						|
	ldi	r4, 0x0
 | 
						|
	br	r3
 | 
						|
99:
 | 
						|
	ldi	r4, 0
 | 
						|
	br	r3
 | 
						|
	.previous
 | 
						|
	.section __ex_table, "a"
 | 
						|
	.align	2
 | 
						|
	.word	0b ,99b
 | 
						|
	.word	1b ,99b
 | 
						|
	.previous
 | 
						|
 | 
						|
	.align 2
 | 
						|
ENTRY(__copy_tofrom_user)
 | 
						|
	cmpi.c	r6, 0
 | 
						|
	mv	r10,r6
 | 
						|
	beq	.L32
 | 
						|
	ldi	r9, 0
 | 
						|
.L34:
 | 
						|
	add	r6, r5, r9
 | 
						|
0:	lbu	r8, [r6]
 | 
						|
	add	r7, r4, r9
 | 
						|
1:	sb	r8, [r7]
 | 
						|
	addi	r9, 1
 | 
						|
	cmp.c	r9, r10
 | 
						|
	bne	.L34
 | 
						|
.L32:
 | 
						|
	ldi	r4, 0
 | 
						|
	br	r3
 | 
						|
	.section .fixup, "ax"
 | 
						|
99:
 | 
						|
	sub	r4, r10, r9
 | 
						|
	br	r3
 | 
						|
	.previous
 | 
						|
	.section __ex_table, "a"
 | 
						|
	.align	2
 | 
						|
	.word	0b, 99b
 | 
						|
	.word	1b, 99b
 | 
						|
	.previous
 | 
						|
 | 
						|
	.align 2
 | 
						|
ENTRY(__clear_user)
 | 
						|
	cmpi.c	r5, 0
 | 
						|
	beq	.L38
 | 
						|
	ldi	r6, 0
 | 
						|
	mv	r7, r6
 | 
						|
.L40:
 | 
						|
	addi	r6, 1
 | 
						|
0:	sb	r7, [r4]+, 1
 | 
						|
	cmp.c	r6, r5
 | 
						|
	bne	.L40
 | 
						|
.L38:
 | 
						|
	ldi	r4, 0
 | 
						|
	br	r3
 | 
						|
 | 
						|
	.section .fixup, "ax"
 | 
						|
	br	r3
 | 
						|
	.previous
 | 
						|
	.section __ex_table, "a"
 | 
						|
	.align	2
 | 
						|
99:
 | 
						|
	.word	0b, 99b
 | 
						|
	.previous
 |