1*adf54213SFeng Jiang/* SPDX-License-Identifier: GPL-2.0-only */ 2*adf54213SFeng Jiang 3*adf54213SFeng Jiang/* 4*adf54213SFeng Jiang * Copyright (C) 2025 Feng Jiang <jiangfeng@kylinos.cn> 5*adf54213SFeng Jiang */ 6*adf54213SFeng Jiang 7*adf54213SFeng Jiang#include <linux/linkage.h> 8*adf54213SFeng Jiang#include <asm/asm.h> 9*adf54213SFeng Jiang 10*adf54213SFeng Jiang/* char *strchr(const char *s, int c) */ 11*adf54213SFeng JiangSYM_FUNC_START(strchr) 12*adf54213SFeng Jiang /* 13*adf54213SFeng Jiang * Parameters 14*adf54213SFeng Jiang * a0 - The string to be searched 15*adf54213SFeng Jiang * a1 - The character to search for 16*adf54213SFeng Jiang * 17*adf54213SFeng Jiang * Returns 18*adf54213SFeng Jiang * a0 - Address of first occurrence of 'c' or 0 19*adf54213SFeng Jiang * 20*adf54213SFeng Jiang * Clobbers 21*adf54213SFeng Jiang * t0 22*adf54213SFeng Jiang */ 23*adf54213SFeng Jiang andi a1, a1, 0xff 24*adf54213SFeng Jiang1: 25*adf54213SFeng Jiang lbu t0, 0(a0) 26*adf54213SFeng Jiang beq t0, a1, 2f 27*adf54213SFeng Jiang addi a0, a0, 1 28*adf54213SFeng Jiang bnez t0, 1b 29*adf54213SFeng Jiang li a0, 0 30*adf54213SFeng Jiang2: 31*adf54213SFeng Jiang ret 32*adf54213SFeng JiangSYM_FUNC_END(strchr) 33*adf54213SFeng Jiang 34*adf54213SFeng JiangSYM_FUNC_ALIAS_WEAK(__pi_strchr, strchr) 35*adf54213SFeng JiangEXPORT_SYMBOL(strchr) 36