summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux-4.02/com32/modules/stubs/swapstub.asm
blob: b670ce4e62d21bbd2bb79d618b87b07bfbe930c2 (plain) (blame)
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
	bits 16
swap:
	push bx
	movzx bx,dl
	mov dl,[cs:bx+(table-$$)]
	pop bx
.jmp:	jmp 0:0
	nop
	nop
install:
	;; DS = CS, ES = 0
	mov edi,[es:si+4*0x13]
	mov [swap.jmp+1],edi
	mov di,[es:0x413]
	dec di
	mov [es:0x413],di
	shl edi,16+6
	mov [es:si+4*0x13],edi
	shr edi,16
	mov es,di
	xor di,di
	rep movsd
	mov si,0
	mov di,0
	mov ds,si
	mov es,di
	mov ecx,0
	mov esi,0
	mov edi,0
	jmp 0:0

	align 16
table: