Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1882 clevermous 1
/* Copyright (C) 1999 DJ Delorie, see COPYING.DJ for details */
2
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
3
# This routine moves %ecx bytes from %ds:%esi to %es:%edi.  It clobbers
4
# %eax, %ecx, %esi, %edi, and eflags.  The memory ranges must not overlap,
5
# unless %esi >= %edi.
6
#include 
7
#include
8
 
9
	.file "djmd.s"
10
	.text
11
.balign 16,,7
12
 
13
MK_C_SYM(__dj_movedata)
14
	cmpl	$15,%ecx
15
	jle	small_move
16
	jmp	mod_4_check
17
 
18
	# Transfer bytes until either %esi or %edi is aligned % 4
19
align_mod_4:
20
	movsb
21
	decl	%ecx
22
mod_4_check:
23
	testl	$3,%esi
24
	jz big_move
25
	testl	$3,%edi
26
	jnz	align_mod_4
27
 
28
big_move:
29
	movb	%cl,%al	 # We will store leftover count in %al
30
	shrl	$2,%ecx
31
	andb	$3,%al
32
	rep
33
	movsl
34
 
35
	# %ecx known to be zero here, so insert the leftover count in %al
36
	movb	%al,%cl
37
small_move:
38
	rep
39
	movsb
40
	ret