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