/* $Id: strlen.S,v 1.2 2001/06/29 14:07:15 gniibe Exp $1*2* "strlen" implementation of SuperH3*4* Copyright (C) 1999 Kaz Kojima5*6*/78/* size_t strlen (const char *s) */910#include <linux/linkage.h>11ENTRY(strlen)12mov r4,r013and #3,r014tst r0,r015bt/s 1f16mov #0,r21718add #-1,r019shll2 r020shll r021braf r022nop2324mov.b @r4+,r125tst r1,r126bt 8f27add #1,r22829mov.b @r4+,r130tst r1,r131bt 8f32add #1,r23334mov.b @r4+,r135tst r1,r136bt 8f37add #1,r238391:40mov #0,r3412:42mov.l @r4+,r143cmp/str r3,r144bf/s 2b45add #4,r24647add #-4,r248#ifndef __LITTLE_ENDIAN__49swap.b r1,r150swap.w r1,r151swap.b r1,r152#endif53extu.b r1,r054tst r0,r055bt/s 8f56shlr8 r157add #1,r258extu.b r1,r059tst r0,r060bt/s 8f61shlr8 r162add #1,r263extu.b r1,r064tst r0,r065bt 8f66add #1,r2678:68rts69mov r2,r0707172