summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/i386/memccpy.S
blob: 0b7dce49ef140677bfb89397e4ae06edf60fa9fe (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
/*
  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.

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

.text
.global memccpy
.type   memccpy,@function
memccpy:
		pushl %esi
		pushl %edi

		movl %esp, %ecx
		movl 0x0c(%ecx), %edi
		movl 0x10(%ecx), %esi
		movb 0x14(%ecx), %dl
		movl 0x18(%ecx), %ecx
		cld
.Lloop:
		lodsb
		stosb
		cmp %al, %dl
		jz .Lout
		decl %ecx
		jnz .Lloop
		xorl %edi, %edi
.Lout:
		movl %edi, %eax
		popl %edi
		popl %esi
		ret
.Lende:
.size    memccpy,.Lende-memccpy