/* * arch/s390/kernel/strncpy.S * S390 strncpy routine * * S390 version * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), */ /* * R2 = address of destination * R3 = address of source string * R4 = max number of bytes to copy */ .globl strncpy strncpy: LGR 1,2 # don't touch address in R2 LTR 4,4 JZ strncpy_exit # 0 bytes -> nothing to do SGR 0,0 strncpy_loop: ICM 0,1,0(3) # ICM sets the cc, IC does not LA 3,1(3) STC 0,0(1) LA 1,1(1) JZ strncpy_exit # ICM inserted a 0x00 BRCTG 4,strncpy_loop # R4 -= 1, jump to strncpy_loop if > 0 strncpy_exit: BR 14