hc
2023-11-06 36f0949ef9854b82a9a3154d970da4e3b8d12a61
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Simplistic strlen() implementation for SHmedia.
 *
 * Copyright (C) 2003  Paul Mundt <lethal@linux-sh.org>
 */
 
   .section .text..SHmedia32,"ax"
   .globl    strlen
   .type    strlen,@function
 
   .balign 16
strlen:
   ptabs    r18, tr4
 
   /*
    * Note: We could easily deal with the NULL case here with a simple
    * sanity check, though it seems that the behavior we want is to fault
    * in the event that r2 == NULL, so we don't bother.
    */
/*    beqi    r2, 0, tr4 */    ! Sanity check
 
   movi    -1, r0
   pta/l    loop, tr0
loop:
   ld.b    r2, 0, r1
   addi    r2, 1, r2
   addi    r0, 1, r0
   bnei/l    r1, 0, tr0
 
   or    r0, r63, r2
   blink    tr4, r63
 
   .size    strlen,.-strlen