diff options
Diffstat (limited to 'core/cleanup.inc')
-rw-r--r-- | core/cleanup.inc | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/core/cleanup.inc b/core/cleanup.inc new file mode 100644 index 00000000..dca6491a --- /dev/null +++ b/core/cleanup.inc @@ -0,0 +1,54 @@ +;; ----------------------------------------------------------------------- +;; +;; Copyright 2007-2008 H. Peter Anvin - All Rights Reserved +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, Inc., 53 Temple Place Ste 330, +;; Boston MA 02111-1307, USA; either version 2 of the License, or +;; (at your option) any later version; incorporated herein by reference. +;; +;; ----------------------------------------------------------------------- + +;; +;; cleanup.inc +;; +;; Some final tidying before jumping to a kernel or bootsector +;; + + section .text +; +; cleanup_hardware: +; +; Shut down anything transient. *No segment assumptions*. +; Can trash any registers. +; +cleanup_hardware: + pushad +; +; Linux wants the floppy motor shut off before starting the kernel, +; at least bootsect.S seems to imply so. If we don't load the floppy +; driver, this is *definitely* so! +; + xor ax,ax + xor dx,dx + int 13h + +%if 0 ; This bug report has not been substantiated! +; Vmware crashes if we scroll in the decompressor! Try to detect vmware +; and if it is Vmware, clear the screen... + mov eax,'VMXh' + xor ebx, ebx + mov ecx, 10 ; Get version + mov dx, 'VX' + in eax, dx + cmp ebx, 'VMXh' + jne .no_vmware + + mov ax,0x0003 ; Set mode (clear screen/home cursor) + int 10h +.no_vmware: +%endif + + popad + ret |