1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* $Id: strlen.S,v 1.2 2001/06/29 14:07:15 gni 3 * 4 * "strlen" implementation of SuperH 5 * 6 * Copyright (C) 1999 Kaz Kojima 7 * 8 */ 9 10 /* size_t strlen (const char *s) */ 11 12 #include <linux/linkage.h> 13 ENTRY(strlen) 14 mov r4,r0 15 and #3,r0 16 tst r0,r0 17 bt/s 1f 18 mov #0,r2 19 20 add #-1,r0 21 shll2 r0 22 shll r0 23 braf r0 24 nop 25 26 mov.b @r4+,r1 27 tst r1,r1 28 bt 8f 29 add #1,r2 30 31 mov.b @r4+,r1 32 tst r1,r1 33 bt 8f 34 add #1,r2 35 36 mov.b @r4+,r1 37 tst r1,r1 38 bt 8f 39 add #1,r2 40 41 1: 42 mov #0,r3 43 2: 44 mov.l @r4+,r1 45 cmp/str r3,r1 46 bf/s 2b 47 add #4,r2 48 49 add #-4,r2 50 #ifndef __LITTLE_ENDIAN__ 51 swap.b r1,r1 52 swap.w r1,r1 53 swap.b r1,r1 54 #endif 55 extu.b r1,r0 56 tst r0,r0 57 bt/s 8f 58 shlr8 r1 59 add #1,r2 60 extu.b r1,r0 61 tst r0,r0 62 bt/s 8f 63 shlr8 r1 64 add #1,r2 65 extu.b r1,r0 66 tst r0,r0 67 bt 8f 68 add #1,r2 69 8: 70 rts 71 mov r2,r0
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.