linux/arch/arm64/lib/strchr.S
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Based on arch/arm/lib/strchr.S
   4 *
   5 * Copyright (C) 1995-2000 Russell King
   6 * Copyright (C) 2013 ARM Ltd.
   7 */
   8
   9#include <linux/linkage.h>
  10#include <asm/assembler.h>
  11
  12/*
  13 * Find the first occurrence of a character in a string.
  14 *
  15 * Parameters:
  16 *      x0 - str
  17 *      x1 - c
  18 * Returns:
  19 *      x0 - address of first occurrence of 'c' or 0
  20 */
  21SYM_FUNC_START_WEAK(strchr)
  22        and     w1, w1, #0xff
  231:      ldrb    w2, [x0], #1
  24        cmp     w2, w1
  25        ccmp    w2, wzr, #4, ne
  26        b.ne    1b
  27        sub     x0, x0, #1
  28        cmp     w2, w1
  29        csel    x0, x0, xzr, eq
  30        ret
  31SYM_FUNC_END(strchr)
  32EXPORT_SYMBOL_NOKASAN(strchr)
  33