VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/bootsectors/bootsector2-api.mac

Last change on this file was 98103, checked in by vboxsync, 17 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: 5.2 KB
Line 
1; $Id: bootsector2-api.mac 98103 2023-01-17 14:15:46Z vboxsync $
2;; @file
3; Bootsector2 API definition for use by split images (kernel < 1MB < image).
4;
5
6;
7; Copyright (C) 2007-2023 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%ifndef ___bootsector2_api_mac
38%define ___bootsector2_api_mac
39
40;*******************************************************************************
41;* Header Files *
42;*******************************************************************************
43%include "iprt/asmdefs.mac"
44%include "iprt/x86.mac"
45%include "bootsector2-structures.mac"
46
47;;
48; The load address for big images.
49%define BS2_BIG_LOAD_ADDR 0x120000
50
51
52;;
53; API Template for lazy birds.
54;
55%macro BS2_API_TEMPLATE 0,
56
57 BS2_API_TEMPLATE_ACTION(Bs2DisableA20)
58 BS2_API_TEMPLATE_ACTION(Bs2DisableA20ViaKbd)
59 BS2_API_TEMPLATE_ACTION(Bs2DisableA20ViaPortA)
60 BS2_API_TEMPLATE_ACTION(Bs2DisableNX)
61 BS2_API_TEMPLATE_ACTION(Bs2EnableA20)
62 BS2_API_TEMPLATE_ACTION(Bs2EnableA20ViaKbd)
63 BS2_API_TEMPLATE_ACTION(Bs2EnableA20ViaPortA)
64 BS2_API_TEMPLATE_ACTION(Bs2EnableNX)
65 BS2_API_TEMPLATE_ACTION(Bs2IsNXSupported)
66 BS2_API_TEMPLATE_ACTION(Bs2KbdRead)
67 BS2_API_TEMPLATE_ACTION(Bs2KbdWait)
68 BS2_API_TEMPLATE_ACTION(Bs2KbdWrite)
69 BS2_API_TEMPLATE_ACTION(Bs2PanicIfVMMDevTestingIsMissing)
70 BS2_API_TEMPLATE_ACTION(Bs2SetupNX)
71 BS2_API_TEMPLATE_ACTION(CalcBenchmarkIterations)
72 BS2_API_TEMPLATE_ACTION(CalcTestPerSecond)
73 BS2_API_TEMPLATE_ACTION(GetElapsedNanoTS)
74 BS2_API_TEMPLATE_ACTION(GetNanoTS)
75 BS2_API_TEMPLATE_ACTION(PrintChr)
76 BS2_API_TEMPLATE_ACTION(PrintF)
77 BS2_API_TEMPLATE_ACTION(PrintStr)
78 BS2_API_TEMPLATE_ACTION(PrintStrColonSpaces)
79 BS2_API_TEMPLATE_ACTION(PrintStrSpacesColonSpace)
80 BS2_API_TEMPLATE_ACTION(PrintU32)
81 BS2_API_TEMPLATE_ACTION(ReportResult)
82 BS2_API_TEMPLATE_ACTION(Shutdown)
83 BS2_API_TEMPLATE_ACTION(StrFormatF)
84 BS2_API_TEMPLATE_ACTION(StrFormatV)
85 BS2_API_TEMPLATE_ACTION(StrLen)
86 BS2_API_TEMPLATE_ACTION(TestCheckTrap)
87 BS2_API_TEMPLATE_ACTION(TestDumpCurrentRegisters)
88 BS2_API_TEMPLATE_ACTION(TestDumpRegisters)
89 BS2_API_TEMPLATE_ACTION(TestFailed)
90 BS2_API_TEMPLATE_ACTION(TestFailedF)
91 BS2_API_TEMPLATE_ACTION(TestInit)
92 BS2_API_TEMPLATE_ACTION(TestRestoreRegisters)
93 BS2_API_TEMPLATE_ACTION(TestSaveRegisters)
94 BS2_API_TEMPLATE_ACTION(testSendStrCmd)
95 BS2_API_TEMPLATE_ACTION(TestSkipped)
96 BS2_API_TEMPLATE_ACTION(TestSub)
97 BS2_API_TEMPLATE_ACTION(testSubCleanup)
98 BS2_API_TEMPLATE_ACTION(TestSubDone)
99 BS2_API_TEMPLATE_ACTION(TestSubErrorCount)
100 BS2_API_TEMPLATE_ACTION(TestTerm)
101 BS2_API_TEMPLATE_ACTION(TestValueReg)
102 BS2_API_TEMPLATE_ACTION(TestValueU32)
103 BS2_API_TEMPLATE_ACTION(TestInstallTrapRecs)
104
105%endmacro
106
107
108;;
109; This defines the API pointers.
110;
111ABSOLUTE 0x500
112;; Start the structure with a magic number.
113NAME(g_u32Bs2ApiMagic): resd 1
114;; And a version number.
115NAME(g_u32Bs2ApiVersion): resd 1
116
117; The real mode and v8086 mode entry points (far pointers).
118%undef BS2_API_TEMPLATE_ACTION
119%define BS2_API_TEMPLATE_ACTION(a_Name) NAME(g_pfn %+ a_Name %+ _r86): resd 1
120BS2_API_TEMPLATE
121
122; The 16-bit protected mode entry points (far pointers).
123%undef BS2_API_TEMPLATE_ACTION
124%define BS2_API_TEMPLATE_ACTION(a_Name) NAME(g_pfn %+ a_Name %+ _p16): resd 1
125BS2_API_TEMPLATE
126
127; The 32-bit protected mode entry points (flat pointers).
128%undef BS2_API_TEMPLATE_ACTION
129%define BS2_API_TEMPLATE_ACTION(a_Name) NAME(g_pfn %+ a_Name %+ _p32): resd 1
130BS2_API_TEMPLATE
131
132; The 64-bit protected (long) mode entry points.
133%undef BS2_API_TEMPLATE_ACTION
134%define BS2_API_TEMPLATE_ACTION(a_Name) NAME(g_pfn %+ a_Name %+ _p64): resq 1
135BS2_API_TEMPLATE
136
137;; End the structure with a magic so it's integrity can be verified.
138NAME(g_u32Bs2ApiEndMagic) resd 1
139
140;;
141; The current API magic value (Douglas Carl Engelbart).
142%define BS2_API_MAGIC 0x19250130
143
144;;
145; The current API version.
146%define BS2_API_VERSION 0x00010000
147
148BEGINCODE
149
150
151;; @name Service trap vector interface.
152; @{
153%define BS2_SYSCALL_TO_RING0 0
154%define BS2_SYSCALL_TO_RING1 1
155%define BS2_SYSCALL_TO_RING2 2
156%define BS2_SYSCALL_TO_RING3 3
157
158;; The service vector.
159%define BS2_TRAP_SYSCALL 20h
160;; @}
161
162%endif
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use