VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/bootsectors/bootsector-shutdown.asm@ 107044

Last change on this file since 107044 was 106061, checked in by vboxsync, 2 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
Line 
1; $Id: bootsector-shutdown.asm 106061 2024-09-16 14:03:52Z vboxsync $
2;; @file
3; Bootsector for grub chainloading that shutdowns the VM.
4;
5
6;
7; Copyright (C) 2007-2024 Oracle and/or its affiliates.
8;
9; This file is part of VirtualBox base platform packages, as
10; available from https://www.virtualbox.org.
11;
12; This program is free software; you can redistribute it and/or
13; modify it under the terms of the GNU General Public License
14; as published by the Free Software Foundation, in version 3 of the
15; License.
16;
17; This program is distributed in the hope that it will be useful, but
18; WITHOUT ANY WARRANTY; without even the implied warranty of
19; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20; General Public License for more details.
21;
22; You should have received a copy of the GNU General Public License
23; along with this program; if not, see <https://www.gnu.org/licenses>.
24;
25; The contents of this file may alternatively be used under the terms
26; of the Common Development and Distribution License Version 1.0
27; (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28; in the VirtualBox distribution, in which case the provisions of the
29; CDDL are applicable instead of those of the GPL.
30;
31; You may elect to license modified versions of this file under the
32; terms and conditions of either the GPL or the CDDL or both.
33;
34; SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35;
36
37%include "VBox/bios.mac"
38
39
40BITS 16
41start:
42 ; Start with a jump just to follow the convention.
43 jmp short the_code
44 nop
45times 3ah db 0
46
47the_code:
48 cli
49
50 ;
51 ; VBox/Bochs shutdown request - write "Shutdown" byte by byte to shutdown port.
52 ;
53 mov cx, 64
54 mov dx, VBOX_BIOS_SHUTDOWN_PORT
55 mov bx, VBOX_BIOS_OLD_SHUTDOWN_PORT
56retry:
57 mov al, 'S'
58 out dx, al
59 mov al, 'h'
60 out dx, al
61 mov al, 'u'
62 out dx, al
63 mov al, 't'
64 out dx, al
65 mov al, 'd'
66 out dx, al
67 mov al, 'o'
68 out dx, al
69 mov al, 'w'
70 out dx, al
71 mov al, 'n'
72 out dx, al
73 xchg dx, bx ; alternate between the new (VBox) and old (Bochs) ports.
74 loop retry
75
76 ;
77 ; Shutdown failed!
78 ;
79
80 ;; @todo print some message before halting.
81 hlt
82
83 ;
84 ; Padd the remainder of the sector with zeros and
85 ; end it with the dos signature.
86 ;
87padding:
88times 510 - (padding - start) db 0
89 db 055h, 0aah
90
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette