// TITLE("strchr") //++ // // Copyright (c) 1994 IBM Corporation // // Module Name: // // strchr.s // // Routine Description: // // Searches a string for a given character, which may be the // null character '\0'. // // Author: // // Jeff Simon (jhs) 02-Aug-1994 // // Environment: // // User or Kernel mode. // // Revision History: // // Includes #include // // *char *strchr( // char *str, // char c) // Arguments: // // SRC1 (r.3) - A pointer to the first block of memory // // SRC2 (r.4) - A search character // // // Return Value: // // returns pointer to the first occurence of c in string // returns NULL if c does not occur in string // // LEAF_ENTRY(strchr) lbz r6,0(r3) # read char cmpi 0x0,0x0,r4,0 # c ?= null beq L..3A # use special loop L..3: cmpi 0x1,0x0,r6,0 # char ?= null cmp 0x0,0x0,r6,r4 # char ?= c beq 0x1,L..5A # b, if char is null beq Fini lbzu r6,1(r3) # read char b L..3 L..3A: cmpi 0x0,0x0,r6,0 # char ?= null beq Fini lbzu r6,1(r3) # read char b L..3A L..5A: addi r3,r0,0 # return null Fini: LEAF_EXIT(strchr)