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