File: memmove.S

package info (click to toggle)
syslinux 3%3A6.04~git20190206.bf6db5b4%2Bdfsg1-3.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie, trixie-proposed-updates, trixie-updates
  • size: 17,020 kB
  • sloc: ansic: 189,354; asm: 5,148; pascal: 4,825; perl: 1,980; makefile: 1,980; python: 266; sh: 176; xml: 39
file content (36 lines) | stat: -rw-r--r-- 425 bytes parent folder | download | duplicates (9)
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