File: memmove.S

package info (click to toggle)
syslinux 3:6.03+dfsg-5+deb8u2
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 41,276 kB
  • sloc: ansic: 358,748; asm: 9,608; pascal: 4,809; perl: 3,894; makefile: 2,488; sh: 324; python: 266; xml: 39
file content (36 lines) | stat: -rw-r--r-- 425 bytes parent folder | download | duplicates (8)
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
#
# memmove.S
#
# Simple 16-bit memmove() implementation
#

	.text
	.code16gcc
	.globl memmove
	.type memmove, @function
memmove:
	pushw %di
	pushw %si
	movw %ax,%di
	movw %dx,%si
	cmpw %si,%di
	ja 1f
	# The third argument is already in cx
	cld
	rep ; movsb
2:
	popw %si
	popw %di
	ret

1:	/* si <= di, need reverse copy */
	add %cx,%di
	add %cx,%si
	dec %di
	dec %si
	std
	rep ; movsb
	cld
	jmp 2b

	.size memmove,.-memmove