/*
 *  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

