VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-first-common.mac@ 60539

Last change on this file since 60539 was 60539, checked in by vboxsync, 9 years ago

bs3kit: Updates.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.1 KB
Line 
1; $Id: bs3-first-common.mac 60539 2016-04-18 14:09:39Z vboxsync $
2;; @file
3; BS3Kit - First Object, common stuff.
4;
5
6;
7; Copyright (C) 2007-2015 Oracle Corporation
8;
9; This file is part of VirtualBox Open Source Edition (OSE), as
10; available from http://www.virtualbox.org. This file is free software;
11; you can redistribute it and/or modify it under the terms of the GNU
12; General Public License (GPL) as published by the Free Software
13; Foundation, in version 2 as it comes in the "COPYING" file of the
14; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16;
17; The contents of this file may alternatively be used under the terms
18; of the Common Development and Distribution License Version 1.0
19; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20; VirtualBox OSE distribution, in which case the provisions of the
21; CDDL are applicable instead of those of the GPL.
22;
23; You may elect to license modified versions of this file under the
24; terms and conditions of either the GPL or the CDDL or both.
25;
26
27
28%define BS3_BEGIN_TEXT16_WITHOUT_GROUP
29%define BS3_BEGIN_DATA16_WITHOUT_GROUP
30%define BS3_BEGIN_RMTEXT16_WITHOUT_GROUP
31%define BS3_BEGIN_X0TEXT16_WITHOUT_GROUP
32%define BS3_BEGIN_X1TEXT16_WITHOUT_GROUP
33
34%include "bs3kit.mac"
35
36
37;
38;
39; Define all the segments and their grouping, just to get that right once at
40; the start of everything.
41;
42;
43
44;
45; 16-bit text
46;
47%ifndef BS3_IS_DOS_EXE
48BS3_BEGIN_TEXT16
49%else
50section BEGTEXT align=2 CLASS=BS3CLASS16CODE PUBLIC USE16
51BS3_BEGIN_TEXT16
52section BEGTEXT
53%endif
54BS3_GLOBAL_DATA Bs3Text16_StartOfSegment, 0
55
56; Entry point with eye-catcher.
57GLOBALNAME start
58global __ImageBase ; for MS compiler - must be first!
59__ImageBase:
60global ___begtext ; for DOS EXEs (causes harmless duplicate symbol warning)
61___begtext:
62%ifndef BS3_IS_DOS_EXE
63 jmp .after_eye_catcher
64%else
65 int3
66 jmp __ImageBase
67%endif
68 db 10,13,'eye-catcher: BS3TEXT16',10,13
69BS3_BEGIN_TEXT16
70.after_eye_catcher:
71
72section _TEXT align=2 CLASS=BS3CLASS16CODE PUBLIC USE16
73section BS3TEXT16_NEARSTUBS align=1 CLASS=BS3CLASS16CODE PUBLIC USE16
74section BS3TEXT16_FARSTUBS align=1 CLASS=BS3CLASS16CODE PUBLIC USE16
75section BS3TEXT16_END align=1 CLASS=BS3CLASS16CODE PUBLIC USE16
76
77BS3_GLOBAL_DATA Bs3Text16_EndOfSegment, 0
78
79%ifndef BS3_IS_DOS_EXE
80GROUP CGROUP16 BS3TEXT16 _TEXT BS3TEXT16_NEARSTUBS BS3TEXT16_FARSTUBS BS3TEXT16_END
81%else
82GROUP CGROUP16 BEGTEXT BS3TEXT16 _TEXT BS3TEXT16_NEARSTUBS BS3TEXT16_FARSTUBS BS3TEXT16_END
83%endif
84
85
86;
87; 16-bit data
88;
89BS3_BEGIN_DATA16
90BS3_GLOBAL_DATA Bs3Data16_StartOfSegment, 0
91 db 10,13,'eye-catcher: BS3DATA16',10,13
92
93ALIGNDATA(16)
94BS3_GLOBAL_DATA Bs3Data16_Size, 4
95 dd BS3_DATA_NM(Bs3Data16_EndOfSegment) wrt BS3KIT_GRPNM_DATA16
96BS3_GLOBAL_DATA Bs3Data16Thru64Text32And64_TotalSize, 4
97 dd BS3_DATA_NM(Bs3Data64_EndOfSegment) wrt BS3KIT_GRPNM_DATA16
98BS3_GLOBAL_DATA Bs3TotalImageSize, 4
99 dd BS3_DATA_NM(Bs3Data64_EndOfSegment) wrt CGROUP16
100BS3_GLOBAL_DATA Bs3Text16_Size, 2
101 dw BS3_DATA_NM(Bs3Text16_EndOfSegment) wrt CGROUP16
102BS3_GLOBAL_DATA Bs3X0Text16_Size, 2
103 dw BS3_DATA_NM(Bs3X0Text16_EndOfSegment) wrt BS3GROUPX0TEXT16
104BS3_GLOBAL_DATA Bs3X1Text16_Size, 2
105 dw BS3_DATA_NM(Bs3X1Text16_EndOfSegment) wrt BS3GROUPX1TEXT16
106BS3_GLOBAL_DATA Bs3X0Text16_FlatAddr, 4
107 dd BS3_DATA_NM(Bs3X0Text16_StartOfSegment) wrt BS3FLAT
108BS3_GLOBAL_DATA Bs3X1Text16_FlatAddr, 4
109 dd BS3_DATA_NM(Bs3X1Text16_StartOfSegment) wrt BS3FLAT
110
111section BS3DATA16CONST align=2 CLASS=BS3KIT_CLASS_DATA16 PUBLIC USE16
112section BS3DATA16CONST2 align=2 CLASS=BS3KIT_CLASS_DATA16 PUBLIC USE16
113section BS3DATA16_DATA align=2 CLASS=BS3KIT_CLASS_DATA16 PUBLIC USE16
114%ifdef BS3_IS_DOS_EXE
115section _NULL align=16 CLASS=BEGDATA PUBLIC USE16
116section _AFTERNULL align=2 CLASS=BEGDATA PUBLIC USE16
117%endif
118section CONST align=2 CLASS=DATA PUBLIC USE16
119section CONST2 align=2 CLASS=DATA PUBLIC USE16
120section _DATA align=2 CLASS=DATA PUBLIC USE16
121%ifdef BS3_IS_DOS_EXE
122section XIB align=1 CLASS=DATA PUBLIC USE16
123section XI align=1 CLASS=DATA PUBLIC USE16
124section XIE align=1 CLASS=DATA PUBLIC USE16
125section YIB align=1 CLASS=DATA PUBLIC USE16
126section YI align=1 CLASS=DATA PUBLIC USE16
127section YIE align=1 CLASS=DATA PUBLIC USE16
128%endif
129section STRINGS align=2 CLASS=DATA PUBLIC USE16
130section DATA align=2 CLASS=DATA PUBLIC USE16
131section _BSS align=2 CLASS=BS3KIT_CLASS_BSS16 PUBLIC USE16
132section BSS align=2 CLASS=BS3KIT_CLASS_BSS16 PUBLIC USE16
133%ifdef BS3_IS_DOS_EXE
134section STACK align=16 CLASS=STACK STACK USE16
135%endif
136section BS3DATA16_END align=2 CLASS=BS3KIT_CLASS_BSS16 PUBLIC USE16
137
138BS3_GLOBAL_DATA Bs3Data16_EndOfSegment, 0
139
140%ifndef BS3_IS_DOS_EXE
141GROUP BS3KIT_GRPNM_DATA16 BS3DATA16 BS3DATA16_DATA _DATA DATA BS3DATA16CONST CONST BS3DATA16CONST2 CONST2 STRINGS _BSS BSS BS3DATA16_END
142%else
143GROUP BS3KIT_GRPNM_DATA16 \
144 _NULL _AFTERNULL \
145 CONST BS3DATA16CONST CONST2 BS3DATA16CONST2 _DATA XIB XI XIE YIB YI YIE STRINGS DATA BS3DATA16 BS3DATA16_DATA \
146 _BSS BSS BS3DATA16_END \
147 STACK
148%endif
149
150;
151; 16-bit real-mode text
152;
153section BS3RMTEXT16_START align=16 CLASS=BS3CLASS16RMCODE PUBLIC USE16
154BS3_GLOBAL_DATA Bs3RmText16_StartOfSegment, 0
155 db 10,13,'eye-catcher: BS3RMTEXT16',10,13
156BS3_BEGIN_RMTEXT16
157section BS3RMTEXT16_END align=1 CLASS=BS3CLASS16RMCODE PUBLIC USE16
158BS3_GLOBAL_DATA Bs3RmText16_EndOfSegment, 0
159
160
161;
162; 16-bit extra text segment #0.
163;
164section BS3X0TEXT16_START align=16 CLASS=BS3CLASS16X0CODE PUBLIC USE16
165BS3_GLOBAL_DATA Bs3X0Text16_StartOfSegment, 0
166 db 10,13,'eye-catcher: BS3X0TEXT16',10,13
167BS3_BEGIN_X0TEXT16 4
168section BS3X0TEXT16_END align=16 CLASS=BS3CLASS16X0CODE PUBLIC USE16
169BS3_GLOBAL_DATA Bs3X0Text16_EndOfSegment, 0
170GROUP BS3GROUPX0TEXT16 BS3X0TEXT16_START BS3X0TEXT16 BS3X0TEXT16_END
171
172
173;
174; 16-bit extra text segment #1.
175;
176section BS3X1TEXT16_START align=16 CLASS=BS3CLASS16X1CODE PUBLIC USE16
177BS3_GLOBAL_DATA Bs3X1Text16_StartOfSegment, 0
178 db 10,13,'eye-catcher: BS3X1TEXT16',10,13
179BS3_BEGIN_X1TEXT16 4
180section BS3X1TEXT16_END align=16 CLASS=BS3CLASS16X1CODE PUBLIC USE16
181BS3_GLOBAL_DATA Bs3X1Text16_EndOfSegment, 0
182GROUP BS3GROUPX1TEXT16 BS3X1TEXT16_START BS3X1TEXT16 BS3X1TEXT16_END
183
184
185;
186; 32-bit text
187;
188BS3_BEGIN_TEXT32
189BS3_GLOBAL_DATA Bs3Text32_StartOfSegment, 0
190 db 10,13,'eye-catcher: BS3TEXT32',10,13
191section BS3TEXT32_END align=1 CLASS=BS3CLASS32CODE PUBLIC USE32 FLAT
192BS3_GLOBAL_DATA Bs3Text32_EndOfSegment, 0
193
194
195;
196; 64-bit text
197;
198BS3_BEGIN_TEXT64
199BS3_GLOBAL_DATA Bs3Text64_StartOfSegment, 0
200 db 10,13,'eye-catcher: BS3TEXT64',10,13
201section BS3TEXT64_END align=1 CLASS=BS3CLASS64CODE PUBLIC USE32 FLAT
202BS3_GLOBAL_DATA Bs3Text64_EndOfSegment, 0
203
204
205;
206; FAR_DATA segment in DOS EXEs should be near the other FAR_DATA class segments.
207;
208%ifdef BS3_IS_DOS_EXE
209section FAR_DATA align=1 CLASS=FAR_DATA PUBLIC USE16
210%endif
211
212;
213; 32-bit data
214;
215BS3_BEGIN_DATA32
216BS3_GLOBAL_DATA Bs3Data32_StartOfSegment, 0
217 db 10,13,'eye-catcher: BS3DATA32',10,13
218section BS3DATA32CONST align=16 CLASS=FAR_DATA PUBLIC USE32
219section BS3DATA32CONST2 align=16 CLASS=FAR_DATA PUBLIC USE32
220section BS3DATA32_DATA align=16 CLASS=FAR_DATA PUBLIC USE32
221section BS3DATA32_BSS align=16 CLASS=FAR_DATA PUBLIC USE32
222section BS3DATA32_END align=16 CLASS=FAR_DATA PUBLIC USE32
223BS3_GLOBAL_DATA Bs3Data32_EndOfSegment, 0
224GROUP BS3DATA32_GROUP BS3DATA32 BS3DATA32_DATA BS3DATA32CONST BS3DATA32CONST2 BS3DATA32_BSS BS3DATA32_END
225
226;
227; 64-bit data
228;
229BS3_BEGIN_DATA64
230BS3_GLOBAL_DATA Bs3Data64_StartOfSegment, 0
231 db 10,13,'eye-catcher: BS3DATA64',10,13
232section BS3DATA64CONST align=16 CLASS=FAR_DATA PUBLIC USE32
233section BS3DATA64_BSS align=16 CLASS=FAR_DATA PUBLIC USE32
234section BS3DATA64_END align=16 CLASS=FAR_DATA PUBLIC USE32
235BS3_GLOBAL_DATA Bs3Data64_EndOfSegment, 0
236GROUP BS3DATA64_GROUP BS3DATA64 BS3DATA64CONST BS3DATA64_BSS BS3DATA64_END
237
238
239;
240; 16-bit accessible system data.
241; No need to do anything here.
242;
243BS3_BEGIN_SYSTEM16
244
245
246;
247; Switch back to the 16-bit code segment.
248;
249BS3_BEGIN_TEXT16
250
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