summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/i386/strncpy.S
blob: 837b43c4158898f2a51726cf6fe33d95d10de69c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
  Copyright (C) 2002 Thomas M. Ogrisegg

  This is free software. You can redistribute and
  modify it under the terms of the GNU General Public
  Public License.

  strncpy.S
    i386 assembler implementation of strncpy(3)
*/

#include "dietfeatures.h"

.text
.globl strncpy
.type strncpy,@function

strncpy:
		pushl %esi
		pushl %edi
		movl %esp, %ecx
		movl  0x0c(%ecx), %edi
		movl  0x10(%ecx), %esi
		movl  0x14(%ecx), %ecx

		movl %edi, %edx

.Lloop:
		dec %ecx
		js .Lout
		lodsb
		stosb
		or %al, %al
		jnz .Lloop
#ifdef WANT_FULL_POSIX_COMPAT
		repnz stosb
#endif
.Lout:
		movl %edx, %eax
		popl %edi
		popl %esi
		ret