PageRenderTime 110ms CodeModel.GetById 105ms app.highlight 3ms RepoModel.GetById 0ms app.codeStats 0ms

/arch/score/lib/string.S

https://bitbucket.org/thekraven/iscream_thunderc-2.6.35
Assembly | 184 lines | 174 code | 10 blank | 0 comment | 1 complexity | 3d66b7e5b904a03a3d0bbc16a2321ace MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  1/*
  2 * arch/score/lib/string.S
  3 *
  4 * Score Processor version.
  5 *
  6 * Copyright (C) 2009 Sunplus Core Technology Co., Ltd.
  7 *  Chen Liqin <liqin.chen@sunplusct.com>
  8 *  Lennox Wu <lennox.wu@sunplusct.com>
  9 *
 10 * This program is free software; you can redistribute it and/or modify
 11 * it under the terms of the GNU General Public License as published by
 12 * the Free Software Foundation; either version 2 of the License, or
 13 * (at your option) any later version.
 14 *
 15 * This program is distributed in the hope that it will be useful,
 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 18 * GNU General Public License for more details.
 19 *
 20 * You should have received a copy of the GNU General Public License
 21 * along with this program; if not, see the file COPYING, or write
 22 * to the Free Software Foundation, Inc.,
 23 * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 24 */
 25
 26#include <linux/linkage.h>
 27#include <asm-generic/errno.h>
 28
 29	.text
 30	.align 2
 31ENTRY(__strncpy_from_user)
 32	cmpi.c	r6, 0
 33	mv	r9, r6
 34	ble	.L2
 350:	lbu	r7, [r5]
 36	ldi	r8, 0
 371:	sb	r7, [r4]
 382:	lb	r6, [r5]
 39	cmp.c	r6, r8
 40	beq	.L2
 41
 42.L5:
 43	addi	r8, 1
 44	cmp.c	r8, r9
 45	beq	.L7
 463:	lbu	r6, [r5, 1]+
 474:	sb	r6, [r4, 1]+
 485:	lb	r7, [r5]
 49	cmpi.c	r7, 0
 50	bne	.L5
 51.L7:
 52	mv	r4, r8
 53	br	r3
 54.L2:
 55	ldi	r8, 0
 56	mv	r4, r8
 57	br	r3
 58	.section .fixup, "ax"
 5999:
 60	ldi	r4, -EFAULT
 61	br	r3
 62	.previous
 63	.section __ex_table, "a"
 64	.align	2
 65	.word	0b ,99b
 66	.word	1b ,99b
 67	.word	2b ,99b
 68	.word	3b ,99b
 69	.word	4b ,99b
 70	.word	5b ,99b
 71	.previous
 72
 73	.align 2
 74ENTRY(__strnlen_user)
 75	cmpi.c	r5, 0
 76	ble	.L11
 770:	lb	r6, [r4]
 78	ldi	r7, 0
 79	cmp.c	r6, r7
 80	beq	.L11
 81.L15:
 82	addi	r7, 1
 83	cmp.c	r7, r5
 84	beq	.L23
 851:	lb	r6, [r4,1]+
 86	cmpi.c	r6, 0
 87	bne	.L15
 88.L23:
 89	addri	r4, r7, 1
 90	br	r3
 91
 92.L11:
 93	ldi	r4, 1
 94	br	r3
 95	.section .fixup, "ax"
 9699:
 97	ldi	r4, 0
 98	br	r3
 99
100	.section __ex_table,"a"
101	.align 2
102	.word	0b, 99b
103	.word	1b, 99b
104	.previous
105
106	.align 2
107ENTRY(__strlen_user)
1080:	lb	r6, [r4]
109	mv	r7, r4
110	extsb	r6, r6
111	cmpi.c	r6, 0
112	mv	r4, r6
113	beq	.L27
114.L28:
1151:	lb	r6, [r7, 1]+
116	addi	r6, 1
117	cmpi.c	r6, 0
118	bne	.L28
119.L27:
120	br	r3
121	.section .fixup, "ax"
122	ldi	r4, 0x0
123	br	r3
12499:
125	ldi	r4, 0
126	br	r3
127	.previous
128	.section __ex_table, "a"
129	.align	2
130	.word	0b ,99b
131	.word	1b ,99b
132	.previous
133
134	.align 2
135ENTRY(__copy_tofrom_user)
136	cmpi.c	r6, 0
137	mv	r10,r6
138	beq	.L32
139	ldi	r9, 0
140.L34:
141	add	r6, r5, r9
1420:	lbu	r8, [r6]
143	add	r7, r4, r9
1441:	sb	r8, [r7]
145	addi	r9, 1
146	cmp.c	r9, r10
147	bne	.L34
148.L32:
149	ldi	r4, 0
150	br	r3
151	.section .fixup, "ax"
15299:
153	sub	r4, r10, r9
154	br	r3
155	.previous
156	.section __ex_table, "a"
157	.align	2
158	.word	0b, 99b
159	.word	1b, 99b
160	.previous
161
162	.align 2
163ENTRY(__clear_user)
164	cmpi.c	r5, 0
165	beq	.L38
166	ldi	r6, 0
167	mv	r7, r6
168.L40:
169	addi	r6, 1
1700:	sb	r7, [r4]+, 1
171	cmp.c	r6, r5
172	bne	.L40
173.L38:
174	ldi	r4, 0
175	br	r3
176
177	.section .fixup, "ax"
178	br	r3
179	.previous
180	.section __ex_table, "a"
181	.align	2
18299:
183	.word	0b, 99b
184	.previous