diff options
author | Sebastian Schmelzer | 2010-10-25 16:53:54 +0200 |
---|---|---|
committer | Sebastian Schmelzer | 2010-10-25 16:53:54 +0200 |
commit | 3050a9253437f4a4b5ad4bf3b3efdc3c660a5137 (patch) | |
tree | 91ac22153e416aac7ca20916b314b5e2ffa871b1 /contrib/syslinux-4.02/com32/modules/stubs/swapstub.asm | |
download | preboot-3050a9253437f4a4b5ad4bf3b3efdc3c660a5137.tar.gz preboot-3050a9253437f4a4b5ad4bf3b3efdc3c660a5137.tar.xz preboot-3050a9253437f4a4b5ad4bf3b3efdc3c660a5137.zip |
Diffstat (limited to 'contrib/syslinux-4.02/com32/modules/stubs/swapstub.asm')
-rw-r--r-- | contrib/syslinux-4.02/com32/modules/stubs/swapstub.asm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/com32/modules/stubs/swapstub.asm b/contrib/syslinux-4.02/com32/modules/stubs/swapstub.asm new file mode 100644 index 0000000..b670ce4 --- /dev/null +++ b/contrib/syslinux-4.02/com32/modules/stubs/swapstub.asm @@ -0,0 +1,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: |