VirtualBox

source: vbox/trunk/src/VBox/Devices/BiosCommonCode/biosorg_check.sed@ 60433

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

PCBIOS: 286 fixes, improved the BIOSORG checking as overflows in this area are hard to figure out.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1# $Id: biosorg_check.sed 60433 2016-04-11 17:14:35Z vboxsync $
2## @file
3# For converting biosorg_check_<addr> lines in a wlink mapfile
4# to kmk_expr checks.
5#
6
7#
8# Copyright (C) 2012-2016 Oracle Corporation
9#
10# This file is part of VirtualBox Open Source Edition (OSE), as
11# available from http://www.virtualbox.org. This file is free software;
12# you can redistribute it and/or modify it under the terms of the GNU
13# General Public License (GPL) as published by the Free Software
14# Foundation, in version 2 as it comes in the "COPYING" file of the
15# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17#
18
19
20/biosorg_check_at_/b check_at
21/biosorg_check_before_or_at_/b check_before_or_at
22b end
23
24:check_at
25#p # --debug
26s/\(.*\)/\L\1/g
27s/....:\(....\). *biosorg_check_at_0\(\1\)h *//
28/^$/b end
29q 1
30b end
31
32# after or equal.
33:check_before_or_at
34#p # --debug
35s/\(.*\)/\L\1/g
36
37h
38s/^....:\(....\). *biosorg_check_before_or_at_0\(....\)h */\2/
39x
40s/^....:\(....\)/\1 /
41
42
43# Loop for comparing the two addresses. The one in the pattern buffer (left) must be
44# smaller or equal to the one in in the pattern buffer (BIOSORG address).
45:compare_loop
46/^f/b match_f_or_greater
47/^e/b match_e_or_greater
48/^d/b match_d_or_greater
49/^c/b match_c_or_greater
50/^b/b match_b_or_greater
51/^a/b match_a_or_greater
52/^9/b match_9_or_greater
53/^8/b match_8_or_greater
54/^7/b match_7_or_greater
55/^6/b match_6_or_greater
56/^5/b match_5_or_greater
57/^4/b match_4_or_greater
58/^3/b match_3_or_greater
59/^2/b match_2_or_greater
60/^1/b match_1_or_greater
61/^0/b match_0_or_greater
62:bad
63p
64x
65p
66q 1
67b end
68
69:bad_other
70x
71b bad
72
73
74:match_f_or_greater
75x
76/^f/b next_compare
77b bad_other
78
79:match_e_or_greater
80x
81/^f/b end
82/^e/b next_compare
83b bad_other
84
85:match_d_or_greater
86x
87/^[e-f]/b end
88/^d/b next_compare
89b bad_other
90
91:match_c_or_greater
92x
93/^[d-f]/b end
94/^c/b next_compare
95b bad_other
96
97:match_b_or_greater
98x
99/^[c-f]/b end
100/^b/b next_compare
101b bad_other
102
103:match_a_or_greater
104x
105/^[b-f]/b end
106/^a/b next_compare
107b bad_other
108
109:match_9_or_greater
110x
111/^[a-f]/b end
112/^9/b next_compare
113b bad_other
114
115:match_8_or_greater
116x
117/^[9a-f]/b end
118/^8/b next_compare
119b bad_other
120
121:match_7_or_greater
122x
123/^[8-9a-f]/b end
124/^7/b next_compare
125b bad_other
126
127:match_6_or_greater
128x
129/^[7-9a-f]/b end
130/^6/b next_compare
131b bad_other
132
133:match_5_or_greater
134x
135/^[6-9a-f]/b end
136/^5/b next_compare
137b bad_other
138
139:match_4_or_greater
140x
141/^[5-9a-f]/b end
142/^4/b next_compare
143b bad_other
144
145:match_3_or_greater
146x
147/^[4-9a-f]/b end
148/^3/b next_compare
149b bad_other
150
151:match_2_or_greater
152x
153/^[3-9a-f]/b end
154/^2/b next_compare
155b bad_other
156
157:match_1_or_greater
158x
159/^[2-9a-f]/b end
160/^1/b next_compare
161b bad_other
162
163:match_0_or_greater
164x
165/^[1-9a-f]/b end
166/^0/b next_compare
167b bad_other
168
169
170# Next round of the loop.
171# 1. Drop the leading digit of the max address (BIOSORG).
172# 2. Check if we've reached end of the address. If so, check that we've reached the space in the actual address.
173# 3. Switch buffers so the actual address in the pattern space.
174# 4. Drop the leading digit of the actual address.
175# 5. Repeat.
176:next_compare
177s/^.//
178/^$/b end_of_compare
179x
180s/^.//
181b compare_loop
182
183:end_of_compare
184x
185/^. /b end
186b bad
187
188:end
189
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