Compare commits
671 Commits
LABEL_2003
...
origin
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd5b2b9941 | ||
|
|
88804d19e2 | ||
|
|
3c71f3e8aa | ||
|
|
bf41886f9d | ||
|
|
342717f72a | ||
|
|
024447b186 | ||
|
|
b2532eff87 | ||
|
|
a87589da74 | ||
|
|
51152c173d | ||
|
|
ba91e26a19 | ||
|
|
2eab48f511 | ||
|
|
16b013e750 | ||
|
|
121fc64022 | ||
|
|
3a574cbe72 | ||
|
|
7680c140af | ||
|
|
c01766307c | ||
|
|
343117bf12 | ||
|
|
9dd41a7b0c | ||
|
|
d44e14b5fc | ||
|
|
ed16fefcba | ||
|
|
931da93e0f | ||
|
|
412babe304 | ||
|
|
60fc6cbbb7 | ||
|
|
07cc099941 | ||
|
|
cf8bc5773c | ||
|
|
a710d4be80 | ||
|
|
90dc67049d | ||
|
|
434cf850a4 | ||
|
|
81b83c9ecc | ||
|
|
dcb2f95a60 | ||
|
|
9f709b6cee | ||
|
|
a63109281a | ||
|
|
7cc1438d43 | ||
|
|
ec0ca73190 | ||
|
|
b2323ea6f9 | ||
|
|
fddae7b811 | ||
|
|
5e5f9ed254 | ||
|
|
4c2a366db3 | ||
|
|
04e93ec979 | ||
|
|
2a8af18738 | ||
|
|
e694e08a8b | ||
|
|
b77fad3b25 | ||
|
|
7ec2550238 | ||
|
|
0a7c5391a0 | ||
|
|
68e0236f7e | ||
|
|
a85f9f21aa | ||
|
|
20787e23b8 | ||
|
|
3c2b3d454d | ||
|
|
b304c96871 | ||
|
|
12b43d515c | ||
|
|
f5c5ef4a1f | ||
|
|
3dd7f0f0ca | ||
|
|
8aa1a2d115 | ||
|
|
986ef4340e | ||
|
|
ba83a30765 | ||
|
|
101e8dfa2a | ||
|
|
50712ba16e | ||
|
|
901787d6e8 | ||
|
|
8b0bfc6804 | ||
|
|
384cc68744 | ||
|
|
c1a11c19ec | ||
|
|
6315349202 | ||
|
|
3ec924a3cb | ||
|
|
756f586a73 | ||
|
|
b1bf6f2c9b | ||
|
|
86c9888207 | ||
|
|
59acc296d9 | ||
|
|
400558b561 | ||
|
|
414eec35e3 | ||
|
|
be6b6e4e2d | ||
|
|
e6ba3c92ce | ||
|
|
f50cc09b61 | ||
|
|
ea287debe1 | ||
|
|
ef2807c667 | ||
|
|
83e40ba75d | ||
|
|
0c1c117cf1 | ||
|
|
8f0b7cbe80 | ||
|
|
256d31c046 | ||
|
|
e632515387 | ||
|
|
4d00eb0290 | ||
|
|
acdcd10c9a | ||
|
|
89c02e2c57 | ||
|
|
6c9e789e9e | ||
|
|
911d08f6ae | ||
|
|
bf7019c570 | ||
|
|
9d46ea4a55 | ||
|
|
c3fafecff1 | ||
|
|
a0bdf49e39 | ||
|
|
e9684a536a | ||
|
|
f4733a0764 | ||
|
|
b05dcb58fe | ||
|
|
47b1e3d77f | ||
|
|
e58cf2a0cf | ||
|
|
1968e615d4 | ||
|
|
151ab83a93 | ||
|
|
b9649854f6 | ||
|
|
e799d3755e | ||
|
|
2f916943c9 | ||
|
|
f8883cb101 | ||
|
|
20a80418f9 | ||
|
|
1a344f298d | ||
|
|
436be29cad | ||
|
|
cd172b7108 | ||
|
|
c3d2b4b48a | ||
|
|
5a95f6fbd2 | ||
|
|
289f932c5f | ||
|
|
082acfd484 | ||
|
|
652a10c096 | ||
|
|
6225c5db6c | ||
|
|
8ed9604613 | ||
|
|
ff36fd8591 | ||
|
|
6310eb9da7 | ||
|
|
a562e1bd9d | ||
|
|
30ce5ab043 | ||
|
|
9dd611b8c1 | ||
|
|
a1191902ca | ||
|
|
15c7a8efd2 | ||
|
|
e2ffd59b4d | ||
|
|
400ab719c6 | ||
|
|
08f272787a | ||
|
|
bff96b0e6b | ||
|
|
ec0aee7b68 | ||
|
|
f7d1572bf5 | ||
|
|
8e6b47a89b | ||
|
|
efe2a4d5cf | ||
|
|
bea8e84b52 | ||
|
|
917b8cc41c | ||
|
|
8cba1907b8 | ||
|
|
7b46664147 | ||
|
|
c419d1d6d0 | ||
|
|
0621f6f9d3 | ||
|
|
cd5396fa12 | ||
|
|
4510a7b736 | ||
|
|
12537cc5a9 | ||
|
|
c2642d14c9 | ||
|
|
25215ee2b0 | ||
|
|
31193c2cca | ||
|
|
ab379df353 | ||
|
|
f2dfe44fd6 | ||
|
|
20aacbf018 | ||
|
|
7acd6c2168 | ||
|
|
c491b442cc | ||
|
|
86cf82e07f | ||
|
|
8d3efe4e9a | ||
|
|
e399e4c670 | ||
|
|
87663b1cbc | ||
|
|
6cfb1f0da6 | ||
|
|
809ac5e7b0 | ||
|
|
8d8f894b51 | ||
|
|
1f54ce6df8 | ||
|
|
771e05be07 | ||
|
|
1bc0f14143 | ||
|
|
aee2fa27d9 | ||
|
|
5e746fce05 | ||
|
|
b39392a98b | ||
|
|
0912e483eb | ||
|
|
8c725b9364 | ||
|
|
a20b27a36b | ||
|
|
44acc8d334 | ||
|
|
4d535b51e1 | ||
|
|
3d936fd992 | ||
|
|
20cc00ddac | ||
|
|
cd42deebd2 | ||
|
|
e2c22d780e | ||
|
|
b7eaad8134 | ||
|
|
946c2185dd | ||
|
|
6bb992ba9d | ||
|
|
a842a6d23c | ||
|
|
4aaf29b2f5 | ||
|
|
fa838874cf | ||
|
|
1cdf5d92cf | ||
|
|
1740618202 | ||
|
|
256e4be814 | ||
|
|
bcd0be5cf1 | ||
|
|
2b9187127f | ||
|
|
138ff60c1e | ||
|
|
45ea3fca4a | ||
|
|
96085e347d | ||
|
|
689aec1b05 | ||
|
|
7e6bf358d8 | ||
|
|
25d6712a81 | ||
|
|
ed54e62125 | ||
|
|
bb310d462b | ||
|
|
9d5028c2f7 | ||
|
|
cacfab588a | ||
|
|
1f6d4258c2 | ||
|
|
983fda8391 | ||
|
|
e3c9b9f928 | ||
|
|
14699a22cf | ||
|
|
e86e5a0748 | ||
|
|
8b74bf31fe | ||
|
|
4cfaf55e5c | ||
|
|
d407bf52b5 | ||
|
|
2ee665339b | ||
|
|
9455b7f39c | ||
|
|
e1599e83d6 | ||
|
|
c15f3120ec | ||
|
|
656658dd15 | ||
|
|
5c952cf024 | ||
|
|
03f5c55021 | ||
|
|
cf33678e51 | ||
|
|
08b6aa6154 | ||
|
|
731215ebde | ||
|
|
b65085130a | ||
|
|
2cbe571a56 | ||
|
|
659883c298 | ||
|
|
f325e18beb | ||
|
|
8655b6f860 | ||
|
|
30d56fae23 | ||
|
|
63cfcbb4e2 | ||
|
|
1d9f410500 | ||
|
|
3e01d75ff2 | ||
|
|
a5bbcc3c53 | ||
|
|
a06752e36b | ||
|
|
da93ed8147 | ||
|
|
a5725fabc0 | ||
|
|
e1a3f6b39b | ||
|
|
c65fdc74aa | ||
|
|
64f70bede3 | ||
|
|
cce625e557 | ||
|
|
66ca92a5ba | ||
|
|
4ec3a7f0fd | ||
|
|
79536a6eb0 | ||
|
|
4734cb78d8 | ||
|
|
a9c37d561d | ||
|
|
c354839349 | ||
|
|
8b1ccd8693 | ||
|
|
e623a1a394 | ||
|
|
1d6f97209e | ||
|
|
eedcd078fe | ||
|
|
7ca202f566 | ||
|
|
31a649234e | ||
|
|
89394047ba | ||
|
|
429168ea88 | ||
|
|
6705d81e90 | ||
|
|
68ceb29e71 | ||
|
|
9aea95307f | ||
|
|
281e00a3be | ||
|
|
cfca5e604d | ||
|
|
45eeb8983c | ||
|
|
de8d5a3600 | ||
|
|
75b1fa7864 | ||
|
|
07cba3514b | ||
|
|
b8c8318160 | ||
|
|
cdc7fea173 | ||
|
|
a1f4a3dd05 | ||
|
|
b9283e2dbe | ||
|
|
810509266f | ||
|
|
6c7a14084a | ||
|
|
bc54f309a1 | ||
|
|
56523f1283 | ||
|
|
857cad37a4 | ||
|
|
fabd46acff | ||
|
|
10a36a98c4 | ||
|
|
466b74108f | ||
|
|
8b07a1103d | ||
|
|
0ac6f8b749 | ||
|
|
262381329b | ||
|
|
ede130229c | ||
|
|
2c96baa2a4 | ||
|
|
18f71f27ae | ||
|
|
78953f2f93 | ||
|
|
e55ca7e262 | ||
|
|
93f6a6771b | ||
|
|
39539887ea | ||
|
|
e94d2cd9d1 | ||
|
|
c3f4d17e05 | ||
|
|
021bfcd3c6 | ||
|
|
49822e23a0 | ||
|
|
46a414dc12 | ||
|
|
f832d8a143 | ||
|
|
b54d32b40d | ||
|
|
681334540d | ||
|
|
99edcfb29e | ||
|
|
2d24a3a787 | ||
|
|
e63c8ee3dc | ||
|
|
36c728774e | ||
|
|
4c0d4c3b78 | ||
|
|
ca0e774894 | ||
|
|
697037fe9b | ||
|
|
3ff02c27d5 | ||
|
|
70f05ac34e | ||
|
|
13a5695b7c | ||
|
|
c3c7f861ae | ||
|
|
f39748ae8e | ||
|
|
aa24509041 | ||
|
|
aa5590b66f | ||
|
|
48abe7bfab | ||
|
|
547b4cb25e | ||
|
|
97d80fc391 | ||
|
|
6bdd1377af | ||
|
|
356a0d9f31 | ||
|
|
1eaeb58e3c | ||
|
|
79fa88f3ed | ||
|
|
cea655a224 | ||
|
|
a56bd92289 | ||
|
|
5ca2679933 | ||
|
|
17ea117743 | ||
|
|
1114257c9d | ||
|
|
d7a04603ae | ||
|
|
979bdbc70e | ||
|
|
6945979126 | ||
|
|
e4cc71aa44 | ||
|
|
10767ccb86 | ||
|
|
02b11f8e09 | ||
|
|
6c1362cf63 | ||
|
|
953e2062c0 | ||
|
|
9d9e283790 | ||
|
|
baac607c13 | ||
|
|
32877d66aa | ||
|
|
62b4ac98a4 | ||
|
|
2729af9d54 | ||
|
|
08f1080c9c | ||
|
|
fc1cfcdb12 | ||
|
|
0b8fa03b6d | ||
|
|
b9711de102 | ||
|
|
e9132ea94c | ||
|
|
5cf91d6bdc | ||
|
|
e35745bb64 | ||
|
|
2471111d35 | ||
|
|
498b8db7f5 | ||
|
|
a8bd82de46 | ||
|
|
7abf0c5886 | ||
|
|
d4326aca18 | ||
|
|
507bbe3e80 | ||
|
|
998eaaecd4 | ||
|
|
6e5923851e | ||
|
|
c26e454dfc | ||
|
|
ea66bc8804 | ||
|
|
db01a2ea99 | ||
|
|
bda6c8aece | ||
|
|
a3d991bd0d | ||
|
|
a6ab4bf978 | ||
|
|
5a8c51cd5e | ||
|
|
04a85b3b36 | ||
|
|
d716b12671 | ||
|
|
56b86bf0cd | ||
|
|
f525c8a147 | ||
|
|
17d704eb95 | ||
|
|
7e780369e4 | ||
|
|
0608e04da9 | ||
|
|
b79a11cc2b | ||
|
|
518e2e1ae3 | ||
|
|
6fb6af6dc9 | ||
|
|
eeb1b77b7d | ||
|
|
27aa818670 | ||
|
|
4b9206ed51 | ||
|
|
109c0e3ad3 | ||
|
|
efa329cb89 | ||
|
|
7d7ce4125f | ||
|
|
d9df1f4e66 | ||
|
|
42dfe7a184 | ||
|
|
855a496fe9 | ||
|
|
4b248f3f71 | ||
|
|
aaf224ab4e | ||
|
|
3d3befa754 | ||
|
|
4d13cbad1c | ||
|
|
c3f9d4939a | ||
|
|
0e6d798cb3 | ||
|
|
c40b295682 | ||
|
|
6629d2f22b | ||
|
|
bdda519d3c | ||
|
|
232c150a25 | ||
|
|
79d696fc55 | ||
|
|
f8d813e34f | ||
|
|
e7c85689bb | ||
|
|
132ba5fdc5 | ||
|
|
11dadd547c | ||
|
|
80885a9d52 | ||
|
|
0c852a2886 | ||
|
|
a084f7da88 | ||
|
|
5cfbab3d82 | ||
|
|
cbd8a35c6d | ||
|
|
074cff0d28 | ||
|
|
028ab6b598 | ||
|
|
63e73c9a8e | ||
|
|
cd0a9de68b | ||
|
|
2d1a537d87 | ||
|
|
3f85ce2785 | ||
|
|
3c74e32a98 | ||
|
|
cf56e11019 | ||
|
|
198ea9e294 | ||
|
|
b2daeb8e0f | ||
|
|
bf9e3b38f7 | ||
|
|
a2d18bb7d3 | ||
|
|
cd37d9e6e5 | ||
|
|
ec4c544bed | ||
|
|
b98fff1d6a | ||
|
|
5653fc335a | ||
|
|
f6e20fc6ca | ||
|
|
f4863a7aec | ||
|
|
ba56f62576 | ||
|
|
a6cccaea5a | ||
|
|
5e4be00fb0 | ||
|
|
75d1ea7f6a | ||
|
|
6876609446 | ||
|
|
c178d3da6f | ||
|
|
ef978730dc | ||
|
|
c837dcb1a3 | ||
|
|
b0aef11c9f | ||
|
|
1c43771ba8 | ||
|
|
c83bf6a2d0 | ||
|
|
b299e41a0d | ||
|
|
b34ff81d9b | ||
|
|
a522fa0e7c | ||
|
|
180d3f74e4 | ||
|
|
dd875c767e | ||
|
|
c935d3bd8b | ||
|
|
3a473b2a65 | ||
|
|
b6e4c4033c | ||
|
|
63f3491242 | ||
|
|
d4ca31c40e | ||
|
|
c18960049f | ||
|
|
a2f34be7dd | ||
|
|
7cb22f97ee | ||
|
|
b2001f273f | ||
|
|
5c745d2613 | ||
|
|
50015ab3e1 | ||
|
|
d4f58f785d | ||
|
|
510ca13b15 | ||
|
|
e075fbe66c | ||
|
|
abcac8725f | ||
|
|
38a951956b | ||
|
|
939403bca9 | ||
|
|
b828dda657 | ||
|
|
4e5ca3eb67 | ||
|
|
9fd5e31fe0 | ||
|
|
3bbc899fc0 | ||
|
|
b028f71513 | ||
|
|
b4676a25e2 | ||
|
|
a2663ea4fc | ||
|
|
ef5a9672c7 | ||
|
|
5779d8d985 | ||
|
|
8bf3b005dd | ||
|
|
a8c7c708a9 | ||
|
|
fa1399ed12 | ||
|
|
b96619a117 | ||
|
|
af6d1dfc7f | ||
|
|
fd3103bb8e | ||
|
|
b4757cee52 | ||
|
|
5bb226e821 | ||
|
|
5cf9da4821 | ||
|
|
b13fb01a62 | ||
|
|
5fa66df63a | ||
|
|
a0f2fe524c | ||
|
|
a57a496f4d | ||
|
|
8cb8143ef7 | ||
|
|
4654af27b8 | ||
|
|
a3ad8e26a4 | ||
|
|
d7281f4109 | ||
|
|
e7df029f1a | ||
|
|
3d1e8a9d4e | ||
|
|
42d1f0394b | ||
|
|
2d5b561e2b | ||
|
|
f72da3406b | ||
|
|
5da627a424 | ||
|
|
15647dc7fd | ||
|
|
a0ff7f2eda | ||
|
|
4a5517094d | ||
|
|
54387ac931 | ||
|
|
fc3e2165ef | ||
|
|
ef1464cc01 | ||
|
|
d9a405aaf6 | ||
|
|
147031aef1 | ||
|
|
887b372f5d | ||
|
|
fbe4b5cbde | ||
|
|
bb65a31267 | ||
|
|
88a1bfa8b8 | ||
|
|
cad07371fc | ||
|
|
ab209d5107 | ||
|
|
87970ebeb5 | ||
|
|
8a42eac744 | ||
|
|
91e940d9bc | ||
|
|
29127b6a23 | ||
|
|
1d70468b03 | ||
|
|
c3d98ed9ca | ||
|
|
80369866a4 | ||
|
|
65bd0e284b | ||
|
|
206c60cbea | ||
|
|
5f535fe170 | ||
|
|
b0639ca332 | ||
|
|
f54ebdfa28 | ||
|
|
34b3049a60 | ||
|
|
ef709e9230 | ||
|
|
a57106fcb3 | ||
|
|
373e6bec13 | ||
|
|
4aeb251f90 | ||
|
|
acf98e7f30 | ||
|
|
b56ddc636d | ||
|
|
78137c3c93 | ||
|
|
35656de729 | ||
|
|
200f8c7a4c | ||
|
|
531716e171 | ||
|
|
b70e7a00c8 | ||
|
|
f5300ab241 | ||
|
|
68ce8957e5 | ||
|
|
72cd5aa703 | ||
|
|
13fdf8a6ba | ||
|
|
2853d29b52 | ||
|
|
428c563938 | ||
|
|
342f551bc9 | ||
|
|
ef9e86854e | ||
|
|
09433a781b | ||
|
|
1b554406cc | ||
|
|
895af12a21 | ||
|
|
9a2dd74032 | ||
|
|
22a40b0a88 | ||
|
|
b318262a71 | ||
|
|
a65cb68237 | ||
|
|
5ce08eea97 | ||
|
|
4f7cb08ee7 | ||
|
|
a43278a43d | ||
|
|
7205e4075d | ||
|
|
149dded2b1 | ||
|
|
7152b1d0b3 | ||
|
|
4d816774f1 | ||
|
|
093ae273da | ||
|
|
12f34241cb | ||
|
|
326428cc8b | ||
|
|
0cb61d7ddd | ||
|
|
6f21347d49 | ||
|
|
c29fdfc1d8 | ||
|
|
ca75added1 | ||
|
|
437ce07b8a | ||
|
|
fe389a82c9 | ||
|
|
d94f92cbd7 | ||
|
|
e0ac62d798 | ||
|
|
ae3af05ec9 | ||
|
|
9374fa287b | ||
|
|
013dc8d9b9 | ||
|
|
d41e5e6994 | ||
|
|
8f713fdfeb | ||
|
|
96e48cf6c1 | ||
|
|
bdccc4fedc | ||
|
|
96dd9af4c7 | ||
|
|
1f4bb37d6b | ||
|
|
7784674852 | ||
|
|
27b207fd0a | ||
|
|
2535d60277 | ||
|
|
945af8d723 | ||
|
|
cb4dbb7bbc | ||
|
|
ad12965db5 | ||
|
|
667122af2d | ||
|
|
2960b65add | ||
|
|
2e5983d2ea | ||
|
|
6dff552972 | ||
|
|
8564acf936 | ||
|
|
5702923e23 | ||
|
|
5b8b652519 | ||
|
|
2e533c373d | ||
|
|
b762b9f4fc | ||
|
|
c5d2290642 | ||
|
|
155cb0104a | ||
|
|
f12e568ca4 | ||
|
|
0d4983930a | ||
|
|
b37c7e5e5c | ||
|
|
b0fce99bfc | ||
|
|
eeacb89cb3 | ||
|
|
3d96ede975 | ||
|
|
9d2b18a0f9 | ||
|
|
d1cbe85b08 | ||
|
|
8bde7f776c | ||
|
|
993cad9364 | ||
|
|
b783edaee8 | ||
|
|
a300d83cb8 | ||
|
|
a6457f7971 | ||
|
|
a0e135b493 | ||
|
|
e118e233a8 | ||
|
|
95aeb34580 | ||
|
|
cceb871fff | ||
|
|
3595ac4979 | ||
|
|
9a0e21a3a8 | ||
|
|
592c5cabe7 | ||
|
|
72755c7137 | ||
|
|
0332990b85 | ||
|
|
0b97ab144f | ||
|
|
6dd652fa4d | ||
|
|
52f52c1494 | ||
|
|
48b42616e9 | ||
|
|
15ef8a5d17 | ||
|
|
2abbe07547 | ||
|
|
71f9511803 | ||
|
|
487778b781 | ||
|
|
8b601449e8 | ||
|
|
e58dc13283 | ||
|
|
a3ed3996cd | ||
|
|
73a8b27c57 | ||
|
|
08eaea9c9f | ||
|
|
53cf9435cc | ||
|
|
c602883592 | ||
|
|
3720878599 | ||
|
|
f3e0de60a6 | ||
|
|
682011ff69 | ||
|
|
7a8e9bed17 | ||
|
|
3b57fe0a70 | ||
|
|
f07771cc28 | ||
|
|
38b99261c1 | ||
|
|
4c3b21a5f9 | ||
|
|
d9ff6e84e4 | ||
|
|
e1e89324ad | ||
|
|
549826eaa0 | ||
|
|
1d49b1f365 | ||
|
|
33149b8812 | ||
|
|
9919f13cc1 | ||
|
|
071d897c96 | ||
|
|
3871842529 | ||
|
|
b6d9e4f5af | ||
|
|
1545ad35c5 | ||
|
|
c231d00f4e | ||
|
|
d4629c8c8d | ||
|
|
46578cc018 | ||
|
|
c93f70962b | ||
|
|
8749cfb44e | ||
|
|
b867d705b6 | ||
|
|
bedc497029 | ||
|
|
5d232d0e7e | ||
|
|
c8c3a8be2d | ||
|
|
82226bf4d2 | ||
|
|
7f70e85309 | ||
|
|
59de2ed6b5 | ||
|
|
86d82762f6 | ||
|
|
66fd3d1ce7 | ||
|
|
45219c4660 | ||
|
|
f7de16ae25 | ||
|
|
d6815435c0 | ||
|
|
e600962991 | ||
|
|
9c62cc58b8 | ||
|
|
7aa7861471 | ||
|
|
4532cb696e | ||
|
|
02c9bed451 | ||
|
|
53cad435bb | ||
|
|
059ae173e9 | ||
|
|
824a1ebffe | ||
|
|
d791b1dc3e | ||
|
|
4a6fd34b26 | ||
|
|
69f8f827d5 | ||
|
|
759a51b4f3 | ||
|
|
d126bfbdbd | ||
|
|
60fbe25424 | ||
|
|
3e38691e8f | ||
|
|
36c05a80ec | ||
|
|
afcc4a7404 | ||
|
|
9e7d5ebea9 | ||
|
|
baa3d528fe | ||
|
|
c1551ea817 | ||
|
|
0587597ca3 | ||
|
|
0db5bca807 | ||
|
|
85ec0bcc1b | ||
|
|
506f044131 | ||
|
|
cdd8a0f151 | ||
|
|
c021880ac5 | ||
|
|
ac6dbb85b7 | ||
|
|
2a46cabd77 | ||
|
|
dc7c9a1a52 | ||
|
|
10f670178c | ||
|
|
4d75a504d0 | ||
|
|
44e5c5c4f1 | ||
|
|
a02ab7d184 | ||
|
|
d69b100e70 | ||
|
|
5d5d44e717 | ||
|
|
6f4474e87b | ||
|
|
97a43d641d | ||
|
|
7e11d8269e | ||
|
|
38daa27d21 | ||
|
|
1957dd29d9 | ||
|
|
06d01dbe00 | ||
|
|
09127c6096 | ||
|
|
3bac351370 | ||
|
|
1cb8e980c4 | ||
|
|
500545cc6b | ||
|
|
47cd00fa70 |
11
COPYING
11
COPYING
@@ -1,3 +1,14 @@
|
||||
NOTE! This copyright does *not* cover the so-called "standalone"
|
||||
applications that use U-Boot services by means of the jump table
|
||||
provided by U-Boot exactly for this purpose - this is merely
|
||||
considered normal use of U-Boot, and does *not* fall under the
|
||||
heading of "derived work". Also note that the GPL below is
|
||||
copyrighted by the Free Software Foundation, but the instance of code
|
||||
that it refers to (the U-Boot source code) is copyrighted by me and
|
||||
others who actually wrote it. -- Wolfgang Denk
|
||||
|
||||
=======================================================================
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
|
||||
192
CREDITS
192
CREDITS
@@ -18,22 +18,40 @@ N: Dr. Bruno Achauer
|
||||
E: bruno@exet-ag.de
|
||||
D: Support for NetBSD (both as host and target system)
|
||||
|
||||
N: Guillaume Alexandre
|
||||
E: guillaume.alexandre@gespac.ch
|
||||
D: Add PCIPPC6 configuration
|
||||
|
||||
N: Swen Anderson
|
||||
E: sand@peppercon.de
|
||||
D: ERIC Support
|
||||
|
||||
N: Guillaume Alexandre
|
||||
E: guillaume.alexandre@gespac.ch
|
||||
D: Add PCIPPC6 configuration
|
||||
N: Pantelis Antoniou
|
||||
E: panto@intracom.gr
|
||||
D: NETVIA & NETPHONE board support, ARTOS support.
|
||||
|
||||
N: Pierre Aubert
|
||||
E: <p.aubert@staubli.com>
|
||||
D: Support for RPXClassic board
|
||||
|
||||
N: Yuli Barcohen
|
||||
E: yuli@arabellasw.com
|
||||
D: Unified support for Motorola MPC826xADS/MPC8272ADS/PQ2FADS boards.
|
||||
D: Support for Zephyr Engineering ZPC.1900 board.
|
||||
D: Support for Interphase iSPAN boards.
|
||||
D: Support for Analogue&Micro Adder boards.
|
||||
D: Support for Analogue&Micro Rattler boards.
|
||||
W: http://www.arabellasw.com
|
||||
|
||||
N: Jerry van Baren
|
||||
E: <vanbaren@cideas.com>
|
||||
D: BedBug port to 603e core (MPC82xx). Code for enhanced memory test.
|
||||
|
||||
N: Pavel Bartusek
|
||||
E: <pba@sysgo.com>
|
||||
D: Reiserfs support
|
||||
W: http://www.elinos.com
|
||||
|
||||
N: Andre Beaudin
|
||||
E: <andre.beaudin@colubris.com>
|
||||
D: PCMCIA, Ethernet, TFTP
|
||||
@@ -46,6 +64,10 @@ N: Raphael Bossek
|
||||
E: raphael.bossek@solutions4linux.de
|
||||
D: 8xxrom-0.3.0
|
||||
|
||||
N: Rick Bronson
|
||||
E: rick@efn.org
|
||||
D: Atmel AT91RM9200DK and NAND support
|
||||
|
||||
N: David Brown
|
||||
E: DBrown03@harris.com
|
||||
D: Extensions to 8xxrom-0.3.0
|
||||
@@ -54,18 +76,36 @@ N: Oliver Brown
|
||||
E: obrown@adventnetworks.com
|
||||
D: Port to the gw8260 board
|
||||
|
||||
N: Curt Brune
|
||||
E: curt@cucy.com
|
||||
D: Added support for Samsung S3C4510B CPU (ARM7tdmi based SoC)
|
||||
D: Added support for ESPD-Inc. EVB4510 Board
|
||||
W: http://www.cucy.com
|
||||
|
||||
N: Jonathan De Bruyne
|
||||
E: jonathan.debruyne@siemens.atea.be
|
||||
D: Port to Siemens IAD210 board
|
||||
|
||||
N: Ken Chou
|
||||
E: kchou@ieee.org
|
||||
D: Support for A3000 SBC board
|
||||
|
||||
N: Conn Clark
|
||||
E: clark@esteem.com
|
||||
D: ESTEEM192E support
|
||||
|
||||
N: Magnus Damm
|
||||
E: eramdam@kieray1.p.y.ki.era.ericsson.se
|
||||
E: damm@opensource.se
|
||||
D: 8xxrom
|
||||
|
||||
N: George G. Davis
|
||||
E: gdavis@mvista.com
|
||||
D: Board ports for ADS GraphicsClient+ and Intel Assabet
|
||||
|
||||
N: Arun Dharankar
|
||||
E: ADharankar@ATTBI.Com
|
||||
D: threads / scheduler example code
|
||||
|
||||
N: K<>ri Dav<61><76>sson
|
||||
E: kd@flaga.is
|
||||
D: FLAGA DM Support
|
||||
@@ -87,6 +127,11 @@ N: Dave Ellis
|
||||
E: DGE@sixnetio.com
|
||||
D: EEPROM Speedup, SXNI855T port
|
||||
|
||||
N: Thomas Elste
|
||||
E: info@elste.org
|
||||
D: Port for the ModNET50 Board, NET+50 CPU Port
|
||||
W: http://www.imms.de
|
||||
|
||||
N: Daniel Engstr<74>m
|
||||
E: daniel@omicron.se
|
||||
D: x86 port, Support for sc520_cdp board
|
||||
@@ -96,6 +141,10 @@ E: wg@denx.de
|
||||
D: Support for Interphase 4539 T1/E1/J1 PMC, PN62, CCM, SCM boards
|
||||
W: www.denx.de
|
||||
|
||||
N: Peter Figuli
|
||||
E: peposh@etc.sk
|
||||
D: Support for WEP EP250 (PXA) board
|
||||
|
||||
N: Thomas Frieden
|
||||
E: ThomasF@hyperion-entertainment.com
|
||||
D: Support for AmigaOne
|
||||
@@ -126,6 +175,10 @@ N: Andreas Heppel
|
||||
E: aheppel@sysgo.de
|
||||
D: CPU Support for MPC 75x; board support for Eltec BAB750 [obsolete!]
|
||||
|
||||
N: August Hoeraendl
|
||||
E: august.hoerandl@gmx.at
|
||||
D: Support for the logodl board (PXA2xx)
|
||||
|
||||
N: Josh Huber
|
||||
E: huber@alum.wpi.edu
|
||||
D: Port to the Galileo Evaluation Board, and the MPC74xx cpu series.
|
||||
@@ -154,17 +207,62 @@ N: Yoo. Jonghoon
|
||||
E: yooth@ipone.co.kr
|
||||
D: Added port to the RPXlite board
|
||||
|
||||
N: Mark Jonas
|
||||
E: mark.jonas@freescale.com
|
||||
D: Support for Freescale Total5200 platform
|
||||
W: http://www.mobilegt.com/
|
||||
|
||||
N: Sam Song
|
||||
E: samsongshu@yahoo.com.cn
|
||||
D: Port to the RPXlite_DW board
|
||||
|
||||
N: Brad Kemp
|
||||
E: Brad.Kemp@seranoa.com
|
||||
D: Port to Windriver ppmc8260 board
|
||||
|
||||
N: Sangmoon Kim
|
||||
E: dogoil@etinsys.com
|
||||
D: Support for debris board
|
||||
|
||||
N: Frederick W. Klatt
|
||||
E: fred.klatt@windriver.com
|
||||
D: Support for Wind River SBC8540/SBC8560 boards
|
||||
|
||||
N: Thomas Koeller
|
||||
E: tkoeller@gmx.net
|
||||
D: Port to Motorola Sandpoint 3 (MPC8240)
|
||||
|
||||
N: Raghu Krishnaprasad
|
||||
E: Raghu.Krishnaprasad@fci.com
|
||||
D: Support for Adder-II MPC852T evaluation board
|
||||
W: http://www.forcecomputers.com
|
||||
|
||||
N: Bernhard Kuhn
|
||||
E: bkuhn@metrowerks.com
|
||||
D Support for Coldfire CPU; Support for Motorola M5272C3 and M5282EVB boards
|
||||
|
||||
N: Prakash Kumar
|
||||
E: prakash@embedx.com
|
||||
D Support for Intrinsyc CERF PXA250 board.
|
||||
|
||||
N: Thomas Lange
|
||||
E: thomas@corelatus.com
|
||||
D: Support for GTH board; lots of PCMCIA fixes
|
||||
E: thomas@corelatus.se
|
||||
D: Support for GTH and dbau1x00 boards; lots of PCMCIA fixes
|
||||
|
||||
N: The LEOX team
|
||||
E: team@leox.org
|
||||
D: Support for LEOX boards, DS164x RTC
|
||||
W: http://www.leox.org
|
||||
|
||||
N: Leif Lindholm
|
||||
E: leif.lindholm@i3micro.com
|
||||
D: Support for AMD dbau1550 board.
|
||||
|
||||
N: Stephan Linz
|
||||
E: linz@li-pro.net
|
||||
D: Support for Nios Stratix Development Kit (DK-1S10)
|
||||
D: Support for SSV ADNP/ESC1 (Nios Cyclone)
|
||||
W: http://www.li-pro.net
|
||||
|
||||
N: Raymond Lo
|
||||
E: lo@routefree.com
|
||||
@@ -174,6 +272,11 @@ N: Dan Malek
|
||||
E: dan@netx4.com
|
||||
D: FADSROM, the grandfather of all of this
|
||||
|
||||
N: Andrea "llandre" Marson
|
||||
E: andrea.marson@dave-tech.it
|
||||
D: Port to PPChameleonEVB board
|
||||
W: www.dave-tech.it
|
||||
|
||||
N: Reinhard Meyer
|
||||
E: r.meyer@emk-elektronik.de
|
||||
D: Port to EMK TOP860 Module
|
||||
@@ -190,18 +293,25 @@ N: David M
|
||||
E: d.mueller@elsoft.ch
|
||||
D: Support for Samsung ARM920T SMDK2410 eval board
|
||||
|
||||
N: Scott McNutt
|
||||
E: smcnutt@psyent.com
|
||||
D: Support for Altera Nios-32 CPU
|
||||
D: Support for Altera Nios-II CPU
|
||||
D: Support for Nios Cyclone Development Kit (DK-1C20)
|
||||
W: http://www.psyent.com
|
||||
|
||||
N: Rolf Offermanns
|
||||
E: rof@sysgo.de
|
||||
D: Initial support for SSV-DNP1110, SMC91111 driver
|
||||
W: www.elinos.com
|
||||
|
||||
N: Keith Outwater
|
||||
E: Keith_Outwater@mvis.com
|
||||
D: Support for GEN860T board
|
||||
N: Tolunay Orkun
|
||||
E: torkun@nextio.com
|
||||
D: Support for Cogent CSB272 & CSB472 boards
|
||||
|
||||
N: Keith Outwater
|
||||
E: keith_outwater@mvis.com
|
||||
D: Support for generic/custom MPC860T board (GEN860T)
|
||||
D: Support for generic/custom MPC860T boards (GEN860T, GEN860T_SC)
|
||||
|
||||
N: Frank Panno
|
||||
E: fpanno@delphintech.com
|
||||
@@ -213,25 +323,60 @@ D: Support for 4xx SCSI, floppy, CDROM, CT69000 video, ...
|
||||
D: Support for PIP405 board
|
||||
D: Support for MIP405 board
|
||||
|
||||
N: Dave Peverley
|
||||
E: dpeverley@mpc-data.co.uk
|
||||
W: http://www.mpc-data.co.uk
|
||||
D: OMAP730 P2 board support
|
||||
|
||||
N: Bill Pitts
|
||||
E: wlp@mindspring.com
|
||||
D: BedBug embedded debugger code
|
||||
|
||||
N: Daniel Poirot
|
||||
E: dan.poirot@windriver.com
|
||||
D: Support for the Wind River sbc405, sbc8240 board
|
||||
W: http://www.windriver.com
|
||||
|
||||
N: Stefan Roese
|
||||
E: stefan.roese@esd-electronics.com
|
||||
D: IBM PPC401/403/405GP Support; Windows environment support
|
||||
|
||||
N: Erwin Rol
|
||||
E: erwin@muffin.org
|
||||
D: boot support for RTEMS
|
||||
|
||||
N: Paul Ruhland
|
||||
E: pruhland@rochester.rr.com
|
||||
D: Port to Logic Zoom LH7A40x SDK board(s)
|
||||
|
||||
N: Neil Russell
|
||||
E: caret@c-side.com
|
||||
D: Author of LiMon-1.4.2, which contributed some ideas
|
||||
|
||||
N: Travis B. Sawyer
|
||||
E: travis.sawyer@sandburst.com
|
||||
D: Support for IBM PPC440GX, XES XPedite1000 440GX PrPMC board. IBM 440gx Ref Platform (Ocotea)
|
||||
|
||||
N: Paolo Scaffardi
|
||||
E: arsenio@tin.it
|
||||
D: FADS823 configuration, MPC823 video support, I2C, wireless keyboard, lots more
|
||||
|
||||
N: Robert Schwebel
|
||||
E: r.schwebel@pengutronix.de
|
||||
D: Support for csb226 and innokom boards (xscale)
|
||||
D: Support for csb226, logodl and innokom boards (PXA2xx)
|
||||
|
||||
N: Yasushi Shoji
|
||||
E: yashi@atmark-techno.com
|
||||
D: Support for Xilinx MicroBlaze, for Atmark Techno SUZAKU FPGA board
|
||||
|
||||
N: Kurt Stremerch
|
||||
E: kurt@exys.be
|
||||
D: Support for Exys XSEngine board
|
||||
|
||||
N: Andrea Scian
|
||||
E: andrea.scian@dave-tech.it
|
||||
D: Port to B2 board
|
||||
W: www.dave-tech.it
|
||||
|
||||
N: Rob Taylor
|
||||
E: robt@flyingpig.com
|
||||
@@ -249,6 +394,10 @@ N: Rune Torgersen
|
||||
E: <runet@innovsys.com>
|
||||
D: Support for Motorola MPC8266ADS board
|
||||
|
||||
N: Greg Ungerer
|
||||
E: greg.ungerer@opengear.com
|
||||
D: Support for ks8695 CPU, and OpenGear cmXXXX boards
|
||||
|
||||
N: David Updegraff
|
||||
E: dave@cray.com
|
||||
D: Port to Cray L1 board; DHCP vendor extensions
|
||||
@@ -257,6 +406,27 @@ N: Christian Vejlbo
|
||||
E: christian.vejlbo@tellabs.com
|
||||
D: FADS860T ethernet support
|
||||
|
||||
N: Robert Whaley
|
||||
E: rwhaley@applieddata.net
|
||||
D: Port to ARM PXA27x adsvix SBC
|
||||
|
||||
N: Martin Winistoerfer
|
||||
E: martinwinistoerfer@gmx.ch
|
||||
D: Port to MPC555/556 microcontrollers and support for cmi board
|
||||
|
||||
N: Ming-Len Wu
|
||||
E: minglen_wu@techware.com.tw
|
||||
D: Motorola MX1ADS board support
|
||||
W: http://www.techware.com.tw/
|
||||
|
||||
N: Xianghua Xiao
|
||||
E: x.xiao@motorola.com
|
||||
D: Support for Motorola 85xx(PowerQUICC III) chip, MPC8540ADS and MPC8560ADS boards.
|
||||
|
||||
N: John Zhan
|
||||
E: zhanz@sinovee.com
|
||||
D: Support for SinoVee Microsystems SC8xx SBC
|
||||
|
||||
N: Alex Zuepke
|
||||
E: azu@sysgo.de
|
||||
D: Overall improvements on StrongARM, ARM720TDMI; Support for Tuxscreen; initial PCMCIA support for ARM
|
||||
|
||||
236
MAINTAINERS
236
MAINTAINERS
@@ -3,10 +3,7 @@
|
||||
# Regular Maintainers for U-Boot board support: #
|
||||
# #
|
||||
# For any board without permanent maintainer, please contact #
|
||||
# for PowerPC systems: #
|
||||
# Wolfgang Denk <wd@denx.de> #
|
||||
# for ARM systems: #
|
||||
# Marius Gr<47>ger <mag@sysgo.de> #
|
||||
# and Cc: the <U-Boot-Users@lists.sourceforge.net> mailing lists. #
|
||||
# #
|
||||
# Note: lists sorted by Maintainer Name #
|
||||
@@ -28,10 +25,26 @@ Pantelis Antoniou <panto@intracom.gr>
|
||||
|
||||
NETVIA MPC8xx
|
||||
|
||||
Jerry Van Baren <vanbaren_gerald@si.com>
|
||||
Reinhard Arlt <reinhard.arlt@esd-electronics.com>
|
||||
|
||||
CPCI750 PPC750FX/GX
|
||||
|
||||
Yuli Barcohen <yuli@arabellasw.com>
|
||||
|
||||
Adder MPC87x/MPC852T
|
||||
ISPAN MPC8260
|
||||
MPC8260ADS MPC826x/MPC827x/MPC8280
|
||||
Rattler MPC8248
|
||||
ZPC1900 MPC8265
|
||||
|
||||
Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
|
||||
|
||||
sacsng MPC8260
|
||||
|
||||
Rick Bronson <rick@efn.org>
|
||||
|
||||
AT91RM9200DK at91rm9200
|
||||
|
||||
Oliver Brown <obrown@adventnetworks.com>
|
||||
|
||||
gw8260 MPC8260
|
||||
@@ -44,8 +57,15 @@ K
|
||||
|
||||
FLAGADM MPC823
|
||||
|
||||
Torsten Demke <torsten.demke@fci.com>
|
||||
|
||||
eXalion MPC824x
|
||||
|
||||
Wolfgang Denk <wd@denx.de>
|
||||
|
||||
IceCube_5100 MGT5100
|
||||
IceCube_5200 MPC5200
|
||||
|
||||
AMX860 MPC860
|
||||
ETX094 MPC850
|
||||
FPS850L MPC850
|
||||
@@ -59,6 +79,10 @@ Wolfgang Denk <wd@denx.de>
|
||||
IVMS8_128 MPC860
|
||||
IVMS8_256 MPC860
|
||||
LANTEC MPC850
|
||||
LWMON MPC823
|
||||
NC650 MPC852
|
||||
R360MPI MPC823
|
||||
RMU MPC850
|
||||
RRvision MPC823
|
||||
SM850 MPC850
|
||||
SPD823TS MPC823
|
||||
@@ -75,15 +99,25 @@ Wolfgang Denk <wd@denx.de>
|
||||
|
||||
CU824 MPC8240
|
||||
Sandpoint8240 MPC8240
|
||||
SL8245 MPC8245
|
||||
|
||||
ATC MPC8250
|
||||
PM825 MPC8250
|
||||
|
||||
TQM8255 MPC8255
|
||||
|
||||
CPU86 MPC8260
|
||||
PM826 MPC8260
|
||||
TQM8260 MPC8260
|
||||
|
||||
P3G4 MPC7410
|
||||
|
||||
PCIPPC2 MPC750
|
||||
PCIPPC6 MPC750
|
||||
|
||||
Jon Diekema <diekema_jon@si.com>
|
||||
EXBITGEN PPC405GP
|
||||
|
||||
Jon Diekema <jon.diekema@smiths-aerospace.com>
|
||||
|
||||
sbc8260 MPC8260
|
||||
|
||||
@@ -114,9 +148,14 @@ Howard Gray <mvsensor@matrix-vision.de>
|
||||
|
||||
MVS1 MPC823
|
||||
|
||||
Bill Hargen <Bill_Hargen@Jabil.com>
|
||||
|
||||
BUBINGA405EP PPC405EP
|
||||
|
||||
Klaus Heydeck <heydeck@kieback-peter.de>
|
||||
|
||||
KUP4K MPC855
|
||||
KUP4X MPC859
|
||||
|
||||
Murray Jensen <Murray.Jensen@cmst.csiro.au>
|
||||
|
||||
@@ -129,51 +168,100 @@ Brad Kemp <Brad.Kemp@seranoa.com>
|
||||
|
||||
ppmc8260 MPC8260
|
||||
|
||||
Sangmoon Kim <dogoil@etinsys.com>
|
||||
|
||||
debris MPC8245
|
||||
|
||||
Nye Liu <nyet@zumanetworks.com>
|
||||
|
||||
ZUMA MPC7xx_74xx
|
||||
|
||||
Thomas Lange <thomas@corelatus.com>
|
||||
Thomas Lange <thomas@corelatus.se>
|
||||
|
||||
GTH MPC860
|
||||
|
||||
The LEOX team <team@leox.org>
|
||||
|
||||
ELPT860 MPC860T
|
||||
|
||||
Eran Man <eran@nbase.co.il>
|
||||
|
||||
EVB64260_750CX MPC750CX
|
||||
|
||||
Andrea "llandre" Marson <andrea.marson@dave-tech.it>
|
||||
|
||||
PPChameleonEVB PPC405EP
|
||||
|
||||
Reinhard Meyer <r.meyer@emk-elektronik.de>
|
||||
|
||||
TOP860 MPC860
|
||||
TOP860 MPC860T
|
||||
TOP5200 MPC5200
|
||||
|
||||
Scott McNutt <smcnutt@artesyncp.com>
|
||||
|
||||
EBONY PPC440GP
|
||||
|
||||
Tolunay Orkun <torkun@nextio.com>
|
||||
csb272 PPC405GP
|
||||
csb472 PPC405GP
|
||||
|
||||
Keith Outwater <Keith_Outwater@mvis.com>
|
||||
|
||||
GEN860T MPC860T
|
||||
GEN860T_SC MPC860T
|
||||
|
||||
Frank Panno <fpanno@delphintech.com>
|
||||
|
||||
ep8260 MPC8260
|
||||
|
||||
Peter Pearse <peter.pearse@arm.com>
|
||||
|
||||
Integrator/AP CM 926EJ-S, CM7x0T, CM9x0T
|
||||
Integrator/CP CM 926EJ-S CM920T, CM940T, CM922T-XA10
|
||||
Versatile/AB ARM926EJ-S
|
||||
Versatile/PB ARM926EJ-S
|
||||
|
||||
Denis Peter <d.peter@mpl.ch>
|
||||
|
||||
MIP405 PPC4xx
|
||||
PIP405 PPC4xx
|
||||
|
||||
Stefan Roese <stefan.roese@esd-electronics.com>
|
||||
Daniel Poirot <dan.poirot@windriver.com>
|
||||
sbc8240 MPC8240
|
||||
sbc405 PPC405GP
|
||||
|
||||
Matthias Fuchs <matthias.fuchs@esd-electronics.com>
|
||||
|
||||
ADCIOP IOP480 (PPC401)
|
||||
APC405 PPC405GP
|
||||
AR405 PPC405GP
|
||||
ASH405 PPC405EP
|
||||
CANBT PPC405CR
|
||||
CPCI405 PPC405GP
|
||||
CPCI4052 PPC405GP
|
||||
CPCI405AB PPC405GP
|
||||
CPCI405DT PPC405GP
|
||||
CPCI440 PPC440GP
|
||||
CPCIISER4 PPC405GP
|
||||
DASA_SIM IOP480 (PPC401)
|
||||
DP405 PPC405EP
|
||||
DU405 PPC405GP
|
||||
G2000 PPC405EP
|
||||
HH405 PPC405EP
|
||||
HUB405 PPC405EP
|
||||
OCRTC PPC405GP
|
||||
ORSG PPC405GP
|
||||
PCI405 PPC405GP
|
||||
PLU405 PPC405EP
|
||||
PMC405 PPC405GP
|
||||
VOH405 PPC405EP
|
||||
VOM405 PPC405EP
|
||||
WUH405 PPC405EP
|
||||
|
||||
Travis Sawyer (travis.sawyer@sandburst.com>
|
||||
|
||||
XPEDITE1K PPC440GX
|
||||
OCOTEA PPC440GX
|
||||
|
||||
Peter De Schrijver <p2@mind.be>
|
||||
|
||||
@@ -193,6 +281,34 @@ Rune Torgersen <runet@innovsys.com>
|
||||
|
||||
MPC8266ADS MPC8266
|
||||
|
||||
Josef Wagner <Wagner@Microsys.de>
|
||||
|
||||
CPC45 MPC8245
|
||||
PM520 MPC5200
|
||||
|
||||
Stephen Williams <steve@icarus.com>
|
||||
|
||||
JSE PPC405GPr
|
||||
|
||||
John Zhan <zhanz@sinovee.com>
|
||||
|
||||
svm_sc8xx MPC8xx
|
||||
|
||||
Jon Loeliger <jdl@freescale.com>
|
||||
|
||||
MPC8540ADS MPC8540
|
||||
MPC8560ADS MPC8560
|
||||
MPC8541CDS MPC8541
|
||||
MPC8555CDS MPC8555
|
||||
|
||||
Dan Malek <dan@embeddededge.com>
|
||||
|
||||
STxGP3 MPC85xx
|
||||
|
||||
Yusdi Santoso <yusdi_santoso@adaptec.com>
|
||||
|
||||
HIDDEN_DRAGON MPC8241/MPC8245
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Unknown / orphaned boards:
|
||||
@@ -215,7 +331,6 @@ Unknown / orphaned boards:
|
||||
|
||||
MOUSSE MPC824x
|
||||
|
||||
MPC8260ADS MPC8260
|
||||
RPXsuper MPC8260
|
||||
rsdproto MPC8260
|
||||
|
||||
@@ -229,6 +344,19 @@ Unknown / orphaned boards:
|
||||
# Board CPU #
|
||||
#########################################################################
|
||||
|
||||
George G. Davis <gdavis@mvista.com>
|
||||
|
||||
assabet SA1100
|
||||
gcplus SA1100
|
||||
|
||||
Thomas Elste <info@elste.org>
|
||||
|
||||
modnet50 ARM720T (NET+50)
|
||||
|
||||
Peter Figuli <peposh@etc.sk>
|
||||
|
||||
wepep250 xscale
|
||||
|
||||
Marius Gr<47>ger <mag@sysgo.de>
|
||||
|
||||
impa7 ARM720T (EP7211)
|
||||
@@ -238,15 +366,41 @@ Kyle Harris <kharris@nexus-tech.net>
|
||||
|
||||
lubbock xscale
|
||||
cradle xscale
|
||||
ixdp425 xscale
|
||||
|
||||
Gary Jennejohn <gj@denx.de>
|
||||
|
||||
smdk2400 ARM920T
|
||||
trab ARM920T
|
||||
|
||||
Prakash Kumar <prakash@embedx.com>
|
||||
|
||||
cerf250 xscale
|
||||
|
||||
Kshitij Gupta <kshitij@ti.com>
|
||||
|
||||
omap1510inn ARM925T
|
||||
omap1610inn ARM926EJS
|
||||
|
||||
Dave Peverley <dpeverley@mpc-data.co.uk>
|
||||
omap730p2 ARM926EJS
|
||||
|
||||
Nishant Kamat <nskamat@ti.com>
|
||||
|
||||
omap1610h2 ARM926EJS
|
||||
|
||||
Rishi Bhattacharya <rishi@ti.com>
|
||||
|
||||
omap5912osk ARM926EJS
|
||||
|
||||
Richard Woodruff <r-woodruff2@ti.com>
|
||||
|
||||
omap2420h4 ARM1136EJS
|
||||
|
||||
David M<>ller <d.mueller@elsoft.ch>
|
||||
|
||||
smdk2410 ARM920T
|
||||
VCMA9 ARM920T
|
||||
|
||||
Rolf Offermanns <rof@sysgo.de>
|
||||
|
||||
@@ -257,6 +411,16 @@ Robert Schwebel <r.schwebel@pengutronix.de>
|
||||
csb226 xscale
|
||||
innokom xscale
|
||||
|
||||
Andrea Scian <andrea.scian@dave-tech.it>
|
||||
|
||||
B2 ARM7TDMI (S3C44B0X)
|
||||
|
||||
Greg Ungerer <greg.ungerer@opengear.com>
|
||||
|
||||
cm4008 ks8695p
|
||||
cm4116 ks8695p
|
||||
cm4148 ks8695p
|
||||
|
||||
Alex Z<>pke <azu@sysgo.de>
|
||||
|
||||
lart SA1100
|
||||
@@ -283,6 +447,60 @@ Daniel Engstr
|
||||
Wolfgang Denk <wd@denx.de>
|
||||
|
||||
incaip MIPS32 4Kc
|
||||
purple MIPS64 5Kc
|
||||
|
||||
Thomas Lange <thomas@corelatus.se>
|
||||
dbau1x00 MIPS32 Au1000
|
||||
|
||||
#########################################################################
|
||||
# Nios-32 Systems: #
|
||||
# #
|
||||
# Maintainer Name, Email Address #
|
||||
# Board CPU #
|
||||
#########################################################################
|
||||
|
||||
Stephan Linz <linz@li-pro.net>
|
||||
|
||||
DK1S10 Nios-32
|
||||
ADNPESC1 Nios-32
|
||||
|
||||
Scott McNutt <smcnutt@psyent.com>
|
||||
|
||||
DK1C20 Nios-32
|
||||
|
||||
#########################################################################
|
||||
# Nios-II Systems: #
|
||||
# #
|
||||
# Maintainer Name, Email Address #
|
||||
# Board CPU #
|
||||
#########################################################################
|
||||
|
||||
Scott McNutt <smcnutt@psyent.com>
|
||||
|
||||
PCI5441 Nios-II
|
||||
PK1C20 Nios-II
|
||||
|
||||
#########################################################################
|
||||
# MicroBlaze Systems: #
|
||||
# #
|
||||
# Maintainer Name, Email Address #
|
||||
# Board CPU #
|
||||
#########################################################################
|
||||
|
||||
Yasushi Shoji <yashi@atmark-techno.com>
|
||||
|
||||
SUZAKU MicroBlaze
|
||||
|
||||
#########################################################################
|
||||
# Coldfire Systems: #
|
||||
# #
|
||||
# Maintainer Name, Email Address #
|
||||
# Board CPU #
|
||||
#########################################################################
|
||||
|
||||
Matthias Fuchs <matthias.fuchs@esd-electronics.com>
|
||||
|
||||
TASREG MCF5249
|
||||
|
||||
#########################################################################
|
||||
# End of MAINTAINERS list #
|
||||
|
||||
203
MAKEALL
203
MAKEALL
@@ -1,5 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
: ${JOBS:=}
|
||||
|
||||
if [ "${CROSS_COMPILE}" ] ; then
|
||||
MAKE="make CROSS_COMPILE=${CROSS_COMPILE}"
|
||||
else
|
||||
@@ -10,24 +12,47 @@ fi
|
||||
|
||||
LIST=""
|
||||
|
||||
#########################################################################
|
||||
## MPC5xx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_5xx=" \
|
||||
cmi_mpc5xx \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## MPC5xxx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_5xxx=" \
|
||||
icecube_5100 icecube_5200 EVAL5200 PM520 \
|
||||
Total5100 Total5200 Total5200_Rev2 TQM5200_auto \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## MPC8xx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_8xx=" \
|
||||
ADS860 AMX860 c2mon CCM \
|
||||
cogent_mpc8xx ESTEEM192E ETX094 FADS823 \
|
||||
FADS850SAR FADS860T FLAGADM FPS850L \
|
||||
GEN860T GENIETV GTH hermes \
|
||||
IAD210 ICU862_100MHz IP860 IVML24 \
|
||||
IVML24_128 IVML24_256 IVMS8 IVMS8_128 \
|
||||
IVMS8_256 KUP4K LANTEC lwmon \
|
||||
MBX MBX860T MHPC MVS1 \
|
||||
NETVIA NX823 pcu_e R360MPI \
|
||||
RPXClassic RPXlite RRvision SM850 \
|
||||
SPD823TS SXNI855T TOP860 TQM823L \
|
||||
TQM823L_LCD TQM850L TQM855L TQM860L \
|
||||
TQM860L_FEC TTTech v37 \
|
||||
Adder87x GENIETV MBX860T R360MPI \
|
||||
AdderII GTH MHPC RBC823 \
|
||||
ADS860 hermes MPC86xADS rmu \
|
||||
AMX860 IAD210 MPC885ADS RPXClassic \
|
||||
c2mon ICU862_100MHz MVS1 RPXlite \
|
||||
CCM IP860 NETPHONE RPXlite_DW \
|
||||
cogent_mpc8xx IVML24 NETTA RRvision \
|
||||
ELPT860 IVML24_128 NETTA2 SM850 \
|
||||
ESTEEM192E IVML24_256 NETTA_ISDN SPD823TS \
|
||||
ETX094 IVMS8 NETVIA svm_sc8xx \
|
||||
FADS823 IVMS8_128 NETVIA_V2 SXNI855T \
|
||||
FADS850SAR IVMS8_256 NX823 TOP860 \
|
||||
FADS860T KUP4K pcu_e TQM823L \
|
||||
FLAGADM KUP4X QS823 TQM823L_LCD \
|
||||
FPS850L LANTEC QS850 TQM850L \
|
||||
GEN860T lwmon QS860T TQM855L \
|
||||
GEN860T_SC MBX quantum TQM860L \
|
||||
uc100 \
|
||||
v37 \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
@@ -35,12 +60,24 @@ LIST_8xx=" \
|
||||
#########################################################################
|
||||
|
||||
LIST_4xx=" \
|
||||
ADCIOP AR405 CANBT CPCI405 \
|
||||
CPCI4052 CPCI440 CPCIISER4 CRAYL1 \
|
||||
DASA_SIM DU405 EBONY ERIC \
|
||||
MIP405 ML2 OCRTC ORSG \
|
||||
PCI405 PIP405 W7OLMC W7OLMG \
|
||||
WALNUT405 \
|
||||
ADCIOP AR405 ASH405 BUBINGA405EP \
|
||||
CANBT CPCI405 CPCI4052 CPCI405AB \
|
||||
CPCI440 CPCIISER4 CRAYL1 csb272 \
|
||||
csb472 DASA_SIM DP405 DU405 \
|
||||
EBONY ERIC EXBITGEN HUB405 \
|
||||
JSE MIP405 MIP405T ML2 \
|
||||
ml300 OCOTEA OCRTC ORSG \
|
||||
PCI405 PIP405 PLU405 PMC405 \
|
||||
PPChameleonEVB VOH405 W7OLMC W7OLMG \
|
||||
WALNUT405 WUH405 XPEDITE1K \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## MPC8220 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_8220=" \
|
||||
Alaska8220 Yukon8220 \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
@@ -48,20 +85,35 @@ LIST_4xx=" \
|
||||
#########################################################################
|
||||
|
||||
LIST_824x=" \
|
||||
BMW CU824 MOUSSE MUSENKI \
|
||||
OXC PN62 Sandpoint8240 Sandpoint8245 \
|
||||
utx8245 \
|
||||
A3000 BMW CPC45 CU824 \
|
||||
debris eXalion HIDDEN_DRAGON MOUSSE \
|
||||
MUSENKI MVBLUE OXC PN62 \
|
||||
Sandpoint8240 Sandpoint8245 SL8245 utx8245 \
|
||||
sbc8240 \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## MPC8260 Systems
|
||||
## MPC8260 Systems (includes 8250, 8255 etc.)
|
||||
#########################################################################
|
||||
|
||||
LIST_8260=" \
|
||||
cogent_mpc8260 CPU86 ep8260 gw8260 \
|
||||
hymod IPHASE4539 MPC8260ADS MPC8266ADS \
|
||||
PM826 ppmc8260 RPXsuper rsdproto \
|
||||
sacsng sbc8260 SCM TQM8260 \
|
||||
atc cogent_mpc8260 CPU86 CPU87 \
|
||||
ep8260 gw8260 hymod IPHASE4539 \
|
||||
ISPAN MPC8260ADS MPC8266ADS MPC8272ADS \
|
||||
PM826 PM828 ppmc8260 Rattler8248 \
|
||||
RPXsuper rsdproto sacsng sbc8260 \
|
||||
SCM TQM8260_AC TQM8260_AD TQM8260_AE \
|
||||
ZPC1900 \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## MPC85xx Systems (includes 8540, 8560 etc.)
|
||||
#########################################################################
|
||||
|
||||
LIST_85xx=" \
|
||||
MPC8540ADS MPC8541CDS MPC8555CDS MPC8560ADS \
|
||||
PM854 sbc8540 sbc8560 stxgp3 \
|
||||
TQM8540 \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
@@ -69,43 +121,113 @@ LIST_8260=" \
|
||||
#########################################################################
|
||||
|
||||
LIST_74xx=" \
|
||||
EVB64260 PCIPPC2 PCIPPC6 ZUMA \
|
||||
DB64360 DB64460 EVB64260 P3G4 \
|
||||
PCIPPC2 PCIPPC6 ZUMA \
|
||||
"
|
||||
|
||||
LIST_7xx=" \
|
||||
BAB7xx ELPPC \
|
||||
BAB7xx CPCI750 ELPPC \
|
||||
"
|
||||
|
||||
LIST_ppc="${LIST_8xx} ${LIST_824x} ${LIST_8260} \
|
||||
${LIST_4xx} ${LIST_74xx} ${LIST_7xx}"
|
||||
LIST_ppc="${LIST_5xx} ${LIST_5xxx} \
|
||||
${LIST_8xx} \
|
||||
${LIST_8220} ${LIST_824x} ${LIST_8260} \
|
||||
${LIST_85xx} \
|
||||
${LIST_4xx} \
|
||||
${LIST_74xx} ${LIST_7xx}"
|
||||
|
||||
#########################################################################
|
||||
## StrongARM Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_SA="lart shannon dnp1110"
|
||||
LIST_SA="assabet dnp1110 gcplus lart shannon"
|
||||
|
||||
#########################################################################
|
||||
## ARM7 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_ARM7="impa7 ep7312"
|
||||
LIST_ARM7="B2 ep7312 evb4510 impa7 modnet50"
|
||||
|
||||
#########################################################################
|
||||
## ARM9 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_ARM9="smdk2400 smdk2410 trab"
|
||||
LIST_ARM9=" \
|
||||
at91rm9200dk cmc_pu2 integratorcp integratorap \
|
||||
lpd7a400 mx1ads mx1fs2 omap1510inn \
|
||||
omap1610h2 omap1610inn omap730p2 scb9328 \
|
||||
smdk2400 smdk2410 trab VCMA9 \
|
||||
versatile voiceblue \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## ARM11 Systems
|
||||
#########################################################################
|
||||
LIST_ARM11="omap2420h4"
|
||||
|
||||
#########################################################################
|
||||
## Xscale Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_xscale="lubbock cradle csb226 innokom"
|
||||
LIST_pxa=" \
|
||||
adsvix cerf250 cradle csb226 \
|
||||
innokom lubbock wepep250 xaeniax \
|
||||
xm250 xsengine \
|
||||
"
|
||||
|
||||
LIST_ixp="ixdp425"
|
||||
|
||||
|
||||
LIST_arm="${LIST_SA} ${LIST_ARM7} ${LIST_ARM9} ${LIST_xscale}"
|
||||
LIST_arm=" \
|
||||
${LIST_SA} \
|
||||
${LIST_ARM7} ${LIST_ARM9} ${LIST_ARM11} \
|
||||
${LIST_pxa} ${LIST_ixp} \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## MIPS Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_mips4kc="incaip"
|
||||
|
||||
LIST_mips5kc="purple"
|
||||
|
||||
LIST_au1xx0="dbau1000 dbau1100 dbau1500 dbau1550 dbau1550_el"
|
||||
|
||||
LIST_mips="${LIST_mips4kc} ${LIST_mips5kc} ${LIST_au1xx0}"
|
||||
|
||||
#########################################################################
|
||||
## i386 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_I486="sc520_cdp sc520_spunk sc520_spunk_rel"
|
||||
|
||||
LIST_x86="${LIST_I486}"
|
||||
|
||||
#########################################################################
|
||||
## NIOS Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_nios=" \
|
||||
ADNPESC1 ADNPESC1_base_32 \
|
||||
ADNPESC1_DNPEVA2_base_32 \
|
||||
DK1C20 DK1C20_standard_32 \
|
||||
DK1S10 DK1S10_standard_32 DK1S10_mtx_ldk_20 \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## Nios-II Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_nios2="PCI5441 PK1C20"
|
||||
|
||||
#########################################################################
|
||||
## MicroBlaze Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_microblaze="suzaku"
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
#----- for now, just run PPC by default -----
|
||||
[ $# = 0 ] && set $LIST_ppc
|
||||
@@ -117,7 +239,7 @@ build_target() {
|
||||
|
||||
${MAKE} distclean >/dev/null
|
||||
${MAKE} ${target}_config
|
||||
${MAKE} all 2>&1 >LOG/$target.MAKELOG | tee LOG/$target.ERR
|
||||
${MAKE} ${JOBS} all 2>&1 >LOG/$target.MAKELOG | tee LOG/$target.ERR
|
||||
${CROSS_COMPILE:-ppc_8xx-}size u-boot | tee -a LOG/$target.MAKELOG
|
||||
}
|
||||
|
||||
@@ -127,7 +249,12 @@ build_target() {
|
||||
for arg in $@
|
||||
do
|
||||
case "$arg" in
|
||||
8xx|824x|8260|4xx|7xx|74xx|SA|ARM7|ARM9|ppc|arm|xscale)
|
||||
ppc|5xx|5xxx|8xx|8220|824x|8260|85xx|4xx|7xx|74xx| \
|
||||
arm|SA|ARM7|ARM9|ARM11|pxa|ixp| \
|
||||
microblaze| \
|
||||
mips| \
|
||||
nios|nios2| \
|
||||
x86|I486)
|
||||
for target in `eval echo '$LIST_'${arg}`
|
||||
do
|
||||
build_target ${target}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# (C) Copyright 2000-2002
|
||||
# (C) Copyright 2003
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
@@ -28,7 +28,7 @@ LIB = lib$(BOARD).a
|
||||
OBJS = $(BOARD).o flash.o
|
||||
|
||||
$(LIB): .depend $(OBJS)
|
||||
$(AR) crv $@ $^
|
||||
$(AR) crv $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
29
board/AtmarkTechno/suzaku/config.mk
Normal file
29
board/AtmarkTechno/suzaku/config.mk
Normal file
@@ -0,0 +1,29 @@
|
||||
#
|
||||
# (C) Copyright 2004 Atmark Techno, Inc.
|
||||
#
|
||||
# Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# 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; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
TEXT_BASE = 0x80F00000
|
||||
|
||||
PLATFORM_CPPFLAGS += -mno-xl-soft-mul
|
||||
PLATFORM_CPPFLAGS += -mno-xl-soft-div
|
||||
PLATFORM_CPPFLAGS += -mxl-barrel-shift
|
||||
46
board/AtmarkTechno/suzaku/flash.c
Normal file
46
board/AtmarkTechno/suzaku/flash.c
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* 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; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
|
||||
flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
|
||||
|
||||
unsigned long flash_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void flash_print_info(flash_info_t *info)
|
||||
{
|
||||
}
|
||||
|
||||
int flash_erase(flash_info_t *info, int s_first, int s_last)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
32
board/AtmarkTechno/suzaku/suzaku.c
Normal file
32
board/AtmarkTechno/suzaku/suzaku.c
Normal file
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* 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; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* This is a board specific file. It's OK to include board specific
|
||||
* header files */
|
||||
#include <asm/suzaku.h>
|
||||
|
||||
void do_reset(void)
|
||||
{
|
||||
*((unsigned long *)(MICROBLAZE_SYSREG_BASE_ADDR)) = MICROBLAZE_SYSREG_RECONFIGURE;
|
||||
}
|
||||
65
board/AtmarkTechno/suzaku/u-boot.lds
Normal file
65
board/AtmarkTechno/suzaku/u-boot.lds
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* 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; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
OUTPUT_ARCH(microblaze)
|
||||
ENTRY(_start)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text ALIGN(0x4):
|
||||
{
|
||||
__text_start = .;
|
||||
cpu/microblaze/start.o (.text)
|
||||
*(.text)
|
||||
__text_end = .;
|
||||
}
|
||||
|
||||
.rodata ALIGN(0x4):
|
||||
{
|
||||
__rodata_start = .;
|
||||
*(.rodata)
|
||||
__rodata_end = .;
|
||||
}
|
||||
|
||||
.data ALIGN(0x4):
|
||||
{
|
||||
__data_start = .;
|
||||
*(.data)
|
||||
__data_end = .;
|
||||
}
|
||||
|
||||
.u_boot_cmd ALIGN(0x4):
|
||||
{
|
||||
__u_boot_cmd_start = .;
|
||||
*(.u_boot_cmd)
|
||||
__u_boot_cmd_end = .;
|
||||
}
|
||||
|
||||
.bss ALIGN(0x4):
|
||||
{
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
__bss_start = .;
|
||||
}
|
||||
}
|
||||
48
board/LEOX/elpt860/Makefile
Normal file
48
board/LEOX/elpt860/Makefile
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
#######################################################################
|
||||
#
|
||||
# Copyright (C) 2000, 2001, 2002, 2003
|
||||
# The LEOX team <team@leox.org>, http://www.leox.org
|
||||
#
|
||||
# LEOX.org is about the development of free hardware and software resources
|
||||
# for system on chip.
|
||||
#
|
||||
# Description: U-Boot port on the LEOX's ELPT860 CPU board
|
||||
# ~~~~~~~~~~~
|
||||
#
|
||||
#######################################################################
|
||||
#
|
||||
# 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; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
include $(TOPDIR)/config.mk
|
||||
|
||||
LIB = lib$(BOARD).a
|
||||
|
||||
OBJS = $(BOARD).o flash.o
|
||||
|
||||
$(LIB): .depend $(OBJS)
|
||||
$(AR) crv $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
|
||||
$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
|
||||
|
||||
sinclude .depend
|
||||
|
||||
#########################################################################
|
||||
424
board/LEOX/elpt860/README.LEOX
Normal file
424
board/LEOX/elpt860/README.LEOX
Normal file
@@ -0,0 +1,424 @@
|
||||
=============================================================================
|
||||
|
||||
U-Boot port on the LEOX's ELPT860 CPU board
|
||||
-------------------------------------------
|
||||
|
||||
LEOX.org is about the development of free hardware and software resources
|
||||
for system on chip.
|
||||
|
||||
For more information, contact The LEOX team <team@leox.org>
|
||||
|
||||
References:
|
||||
~~~~~~~~~~
|
||||
1) Get the last stable release from denx.de:
|
||||
o ftp://ftp.denx.de/pub/u-boot/u-boot-0.2.0.tar.bz2
|
||||
2) Get the current CVS snapshot:
|
||||
o cvs -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot login
|
||||
o cvs -z6 -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot co -P u-boot
|
||||
|
||||
=============================================================================
|
||||
|
||||
The ELPT860 CPU board has the following features:
|
||||
|
||||
Processor: - MPC860T @ 50MHz
|
||||
- PowerPC Core
|
||||
- 65 MIPS
|
||||
- Caches: D->4KB, I->4KB
|
||||
- CPM: 4 SCCs, 2 SMCs
|
||||
- Ethernet 10/100
|
||||
- SPI, I2C, PCMCIA, Parallel
|
||||
|
||||
CPU board: - DRAM: 16 MB
|
||||
- FLASH: 512 KB + (2 * 4 MB)
|
||||
- NVRAM: 128 KB
|
||||
- 1 Serial link
|
||||
- 2 Ethernet 10 BaseT Channels
|
||||
|
||||
On power-up the processor jumps to the address of 0x02000100
|
||||
|
||||
Thus, U-Boot is configured to reside in flash starting at the address of
|
||||
0x02001000. The environment space is located in NVRAM separately from
|
||||
U-Boot, at the address of 0x03000000.
|
||||
|
||||
=============================================================================
|
||||
|
||||
U-Boot test results
|
||||
|
||||
=============================================================================
|
||||
|
||||
|
||||
##################################################
|
||||
# Operation on the serial console (SMC1)
|
||||
##############################
|
||||
|
||||
U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
|
||||
|
||||
CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
|
||||
*** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
|
||||
Board: ### No HW ID - assuming ELPT860
|
||||
DRAM: 16 MB
|
||||
FLASH: 512 kB
|
||||
In: serial
|
||||
Out: serial
|
||||
Err: serial
|
||||
Net: SCC ETHERNET
|
||||
|
||||
Type "run nfsboot" to mount root filesystem over NFS
|
||||
|
||||
Hit any key to stop autoboot: 0
|
||||
LEOX_elpt860: help
|
||||
askenv - get environment variables from stdin
|
||||
autoscr - run script from memory
|
||||
base - print or set address offset
|
||||
bdinfo - print Board Info structure
|
||||
bootm - boot application image from memory
|
||||
bootp - boot image via network using BootP/TFTP protocol
|
||||
bootd - boot default, i.e., run 'bootcmd'
|
||||
cmp - memory compare
|
||||
coninfo - print console devices and informations
|
||||
cp - memory copy
|
||||
crc32 - checksum calculation
|
||||
echo - echo args to console
|
||||
erase - erase FLASH memory
|
||||
flinfo - print FLASH memory information
|
||||
go - start application at address 'addr'
|
||||
help - print online help
|
||||
iminfo - print header information for application image
|
||||
loadb - load binary file over serial line (kermit mode)
|
||||
loads - load S-Record file over serial line
|
||||
loop - infinite loop on address range
|
||||
md - memory display
|
||||
mm - memory modify (auto-incrementing)
|
||||
mtest - simple RAM test
|
||||
mw - memory write (fill)
|
||||
nm - memory modify (constant address)
|
||||
printenv- print environment variables
|
||||
protect - enable or disable FLASH write protection
|
||||
rarpboot- boot image via network using RARP/TFTP protocol
|
||||
reset - Perform RESET of the CPU
|
||||
run - run commands in an environment variable
|
||||
saveenv - save environment variables to persistent storage
|
||||
setenv - set environment variables
|
||||
sleep - delay execution for some time
|
||||
tftpboot- boot image via network using TFTP protocol
|
||||
and env variables ipaddr and serverip
|
||||
version - print monitor version
|
||||
? - alias for 'help'
|
||||
|
||||
##################################################
|
||||
# Environment Variables (CFG_ENV_IS_IN_NVRAM)
|
||||
##############################
|
||||
|
||||
LEOX_elpt860: printenv
|
||||
bootdelay=5
|
||||
loads_echo=1
|
||||
baudrate=9600
|
||||
stdin=serial
|
||||
stdout=serial
|
||||
stderr=serial
|
||||
ethaddr=00:03:ca:00:64:df
|
||||
ipaddr=192.168.0.30
|
||||
netmask=255.255.255.0
|
||||
serverip=192.168.0.1
|
||||
nfsserverip=192.168.0.1
|
||||
preboot=echo;echo Type "run nfsboot" to mount root filesystem over NFS;echo
|
||||
gatewayip=192.168.0.1
|
||||
ramargs=setenv bootargs root=/dev/ram rw
|
||||
rootargs=setenv rootpath /tftp/$(ipaddr)
|
||||
nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=$(nfsserverip):$(rootpath)
|
||||
addip=setenv bootargs $(bootargs) ip=$(ipaddr):$(nfsserverip):$(gatewayip):$(netmask):$(hostname):eth0:
|
||||
ramboot=tftp 400000 /home/leox/pMulti;run ramargs;bootm
|
||||
nfsboot=tftp 400000 /home/leox/uImage;run rootargs;run nfsargs;run addip;bootm
|
||||
bootcmd=run ramboot
|
||||
clocks_in_mhz=1
|
||||
|
||||
Environment size: 730/16380 bytes
|
||||
|
||||
##################################################
|
||||
# Flash Memory Information
|
||||
##############################
|
||||
|
||||
LEOX_elpt860: flinfo
|
||||
|
||||
Bank # 1: AMD AM29F040 (4 Mbits)
|
||||
Size: 512 KB in 8 Sectors
|
||||
Sector Start Addresses:
|
||||
02000000 (RO) 02010000 (RO) 02020000 (RO) 02030000 (RO) 02040000
|
||||
02050000 02060000 02070000
|
||||
|
||||
##################################################
|
||||
# Board Information Structure
|
||||
##############################
|
||||
|
||||
LEOX_elpt860: bdinfo
|
||||
memstart = 0x00000000
|
||||
memsize = 0x01000000
|
||||
flashstart = 0x02000000
|
||||
flashsize = 0x00080000
|
||||
flashoffset = 0x00030000
|
||||
sramstart = 0x00000000
|
||||
sramsize = 0x00000000
|
||||
immr_base = 0xFF000000
|
||||
bootflags = 0x00000001
|
||||
intfreq = 50 MHz
|
||||
busfreq = 50 MHz
|
||||
ethaddr = 00:03:ca:00:64:df
|
||||
IP addr = 192.168.0.30
|
||||
baudrate = 9600 bps
|
||||
|
||||
##################################################
|
||||
# Image Download and run over serial port
|
||||
# hello_world (S-Record image)
|
||||
# ===> 1) Enter "loads" command into U-Boot monitor
|
||||
# ===> 2) From TeraTerm's bar menu, Select 'File/Send file...'
|
||||
# Then select 'hello_world.srec' with the file browser
|
||||
##############################
|
||||
|
||||
U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
|
||||
|
||||
CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
|
||||
*** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
|
||||
Board: ### No HW ID - assuming ELPT860
|
||||
DRAM: 16 MB
|
||||
FLASH: 512 kB
|
||||
In: serial
|
||||
Out: serial
|
||||
Err: serial
|
||||
Net: SCC ETHERNET
|
||||
|
||||
Type "run nfsboot" to mount root filesystem over NFS
|
||||
|
||||
Hit any key to stop autoboot: 0
|
||||
LEOX_elpt860: loads
|
||||
## Ready for S-Record download ...
|
||||
S804040004F3050154000501709905014C000501388D
|
||||
## First Load Addr = 0x00040000
|
||||
## Last Load Addr = 0x0005018B
|
||||
## Total Size = 0x0001018C = 65932 Bytes
|
||||
## Start Addr = 0x00040004
|
||||
LEOX_elpt860: go 40004 This is a test !!!
|
||||
## Starting application at 0x00040004 ...
|
||||
Hello World
|
||||
argc = 6
|
||||
argv[0] = "40004"
|
||||
argv[1] = "This"
|
||||
argv[2] = "is"
|
||||
argv[3] = "a"
|
||||
argv[4] = "test"
|
||||
argv[5] = "!!!"
|
||||
argv[6] = "<NULL>"
|
||||
Hit any key to exit ...
|
||||
|
||||
## Application terminated, rc = 0x0
|
||||
|
||||
##################################################
|
||||
# Image download and run over ethernet interface
|
||||
# Linux-2.4.4 (uImage) + Root filesystem mounted over NFS
|
||||
##############################
|
||||
|
||||
U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
|
||||
|
||||
CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
|
||||
*** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
|
||||
Board: ### No HW ID - assuming ELPT860
|
||||
DRAM: 16 MB
|
||||
FLASH: 512 kB
|
||||
In: serial
|
||||
Out: serial
|
||||
Err: serial
|
||||
Net: SCC ETHERNET
|
||||
|
||||
Type "run nfsboot" to mount root filesystem over NFS
|
||||
|
||||
Hit any key to stop autoboot: 0
|
||||
LEOX_elpt860: run nfsboot
|
||||
ARP broadcast 1
|
||||
TFTP from server 192.168.0.1; our IP address is 192.168.0.30
|
||||
Filename '/home/leox/uImage'.
|
||||
Load address: 0x400000
|
||||
Loading: #################################################################
|
||||
#############################
|
||||
done
|
||||
Bytes transferred = 477294 (7486e hex)
|
||||
## Booting image at 00400000 ...
|
||||
Image Name: Linux-2.4.4
|
||||
Image Type: PowerPC Linux Kernel Image (gzip compressed)
|
||||
Data Size: 477230 Bytes = 466 kB = 0 MB
|
||||
Load Address: 00000000
|
||||
Entry Point: 00000000
|
||||
Verifying Checksum ... OK
|
||||
Uncompressing Kernel Image ... OK
|
||||
Linux version 2.4.4-rthal5 (leox@p5ak6650) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Wed Jul 3 10:23:53 CEST 2002
|
||||
On node 0 totalpages: 4096
|
||||
zone(0): 4096 pages.
|
||||
zone(1): 0 pages.
|
||||
zone(2): 0 pages.
|
||||
Kernel command line: root=/dev/nfs rw nfsroot=192.168.0.1:/tftp/192.168.0.30 ip=192.168.0.30:192.168.0.1:192.168.0.1:255.255.255.0::eth0:
|
||||
rtsched version <20010618.1050.24>
|
||||
Decrementer Frequency: 3125000
|
||||
Warning: real time clock seems stuck!
|
||||
Calibrating delay loop... 49.76 BogoMIPS
|
||||
Memory: 14720k available (928k kernel code, 384k data, 44k init, 0k highmem)
|
||||
Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
|
||||
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
|
||||
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
|
||||
Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
|
||||
POSIX conformance testing by UNIFIX
|
||||
Linux NET4.0 for Linux 2.4
|
||||
Based upon Swansea University Computer Society NET3.039
|
||||
Starting kswapd v1.8
|
||||
CPM UART driver version 0.03
|
||||
ttyS0 on SMC1 at 0x0280, BRG1
|
||||
block: queued sectors max/low 9701kB/3233kB, 64 slots per queue
|
||||
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
|
||||
eth0: CPM ENET Version 0.2 on SCC1, 00:03:ca:00:64:df
|
||||
NET4: Linux TCP/IP 1.0 for NET4.0
|
||||
IP Protocols: ICMP, UDP, TCP
|
||||
IP: routing cache hash table of 512 buckets, 4Kbytes
|
||||
TCP: Hash tables configured (established 1024 bind 1024)
|
||||
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
|
||||
Looking up port of RPC 100003/2 on 192.168.0.1
|
||||
Looking up port of RPC 100005/2 on 192.168.0.1
|
||||
VFS: Mounted root (nfs filesystem).
|
||||
Freeing unused kernel memory: 44k init
|
||||
INIT: version 2.78 booting
|
||||
Welcome to DENX Embedded Linux Environment
|
||||
Press 'I' to enter interactive startup.
|
||||
Mounting proc filesystem: [ OK ]
|
||||
Configuring kernel parameters: [ OK ]
|
||||
Cannot access the Hardware Clock via any known method.
|
||||
Use the --debug option to see the details of our search for an access method.
|
||||
Setting clock : Wed Dec 31 19:00:11 EST 1969 [ OK ]
|
||||
Activating swap partitions: [ OK ]
|
||||
Setting hostname 192.168.0.30: [ OK ]
|
||||
Finding module dependencies:
|
||||
[ OK ]
|
||||
Checking filesystems
|
||||
Checking all file systems.
|
||||
[ OK ]
|
||||
Mounting local filesystems: [ OK ]
|
||||
Enabling swap space: [ OK ]
|
||||
INIT: Entering runlevel: 3
|
||||
Entering non-interactive startup
|
||||
Starting system logger: [ OK ]
|
||||
Starting kernel logger: [ OK ]
|
||||
Starting xinetd: [ OK ]
|
||||
|
||||
192 login: root
|
||||
Last login: Wed Dec 31 19:00:41 on ttyS0
|
||||
bash-2.04#
|
||||
|
||||
##################################################
|
||||
# Image download and run over ethernet interface
|
||||
# Linux-2.4.4 + Root filesystem mounted from RAM (pMulti)
|
||||
##############################
|
||||
|
||||
U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
|
||||
|
||||
CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
|
||||
*** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
|
||||
Board: ### No HW ID - assuming ELPT860
|
||||
DRAM: 16 MB
|
||||
FLASH: 512 kB
|
||||
In: serial
|
||||
Out: serial
|
||||
Err: serial
|
||||
Net: SCC ETHERNET
|
||||
|
||||
Type "run nfsboot" to mount root filesystem over NFS
|
||||
|
||||
Hit any key to stop autoboot: 0
|
||||
LEOX_elpt860: run ramboot
|
||||
ARP broadcast 1
|
||||
TFTP from server 192.168.0.1; our IP address is 192.168.0.30
|
||||
Filename '/home/leox/pMulti'.
|
||||
Load address: 0x400000
|
||||
Loading: #################################################################
|
||||
#################################################################
|
||||
#################################################################
|
||||
#################################################################
|
||||
#################################################################
|
||||
########################################################
|
||||
done
|
||||
Bytes transferred = 1947816 (1db8a8 hex)
|
||||
## Booting image at 00400000 ...
|
||||
Image Name: linux-2.4.4-2002-03-21 Multiboot
|
||||
Image Type: PowerPC Linux Multi-File Image (gzip compressed)
|
||||
Data Size: 1947752 Bytes = 1902 kB = 1 MB
|
||||
Load Address: 00000000
|
||||
Entry Point: 00000000
|
||||
Contents:
|
||||
Image 0: 477230 Bytes = 466 kB = 0 MB
|
||||
Image 1: 1470508 Bytes = 1436 kB = 1 MB
|
||||
Verifying Checksum ... OK
|
||||
Uncompressing Multi-File Image ... OK
|
||||
Loading Ramdisk to 00e44000, end 00fab02c ... OK
|
||||
Linux version 2.4.4-rthal5 (leox@p5ak6650) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Wed Jul 3 10:23:53 CEST 2002
|
||||
On node 0 totalpages: 4096
|
||||
zone(0): 4096 pages.
|
||||
zone(1): 0 pages.
|
||||
zone(2): 0 pages.
|
||||
Kernel command line: root=/dev/ram rw
|
||||
rtsched version <20010618.1050.24>
|
||||
Decrementer Frequency: 3125000
|
||||
Warning: real time clock seems stuck!
|
||||
Calibrating delay loop... 49.76 BogoMIPS
|
||||
Memory: 13280k available (928k kernel code, 384k data, 44k init, 0k highmem)
|
||||
Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
|
||||
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
|
||||
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
|
||||
Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
|
||||
POSIX conformance testing by UNIFIX
|
||||
Linux NET4.0 for Linux 2.4
|
||||
Based upon Swansea University Computer Society NET3.039
|
||||
Starting kswapd v1.8
|
||||
CPM UART driver version 0.03
|
||||
ttyS0 on SMC1 at 0x0280, BRG1
|
||||
block: queued sectors max/low 8741kB/2913kB, 64 slots per queue
|
||||
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
|
||||
eth0: CPM ENET Version 0.2 on SCC1, 00:03:ca:00:64:df
|
||||
RAMDISK: Compressed image found at block 0
|
||||
Freeing initrd memory: 1436k freed
|
||||
NET4: Linux TCP/IP 1.0 for NET4.0
|
||||
IP Protocols: ICMP, UDP, TCP
|
||||
IP: routing cache hash table of 512 buckets, 4Kbytes
|
||||
TCP: Hash tables configured (established 1024 bind 1024)
|
||||
IP-Config: Incomplete network configuration information.
|
||||
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
|
||||
VFS: Mounted root (ext2 filesystem).
|
||||
Freeing unused kernel memory: 44k in<69>
|
||||
init started: BusyBox v0.60.2 (2002.07.01-12:06+0000) multi-call Configuring hostname
|
||||
Configuring lo...
|
||||
Configuring eth0...
|
||||
Configuring Gateway...
|
||||
|
||||
Please press Enter to activate this console.
|
||||
|
||||
ELPT860 login: root
|
||||
Password:
|
||||
Welcome to Linux-2.4.4 for ELPT CPU board (MPC860T @ 50MHz)
|
||||
|
||||
a8888b.
|
||||
d888888b.
|
||||
8P"YP"Y88
|
||||
_ _ 8|o||o|88
|
||||
| | |_| 8' .88
|
||||
| | _ ____ _ _ _ _ 8`._.' Y8.
|
||||
| | | | _ \| | | |\ \/ / d/ `8b.
|
||||
| |___ | | | | | |_| |/ \ .dP . Y8b.
|
||||
|_____||_|_| |_|\____|\_/\_/ d8:' " `::88b.
|
||||
d8" `Y88b
|
||||
:8P ' :888
|
||||
8a. : _a88P
|
||||
._/"Yaa_ : .| 88P|
|
||||
\ YP" `| 8P `.
|
||||
/ \._____.d| .'
|
||||
`--..__)888888P`._.'
|
||||
login[21]: root login on `ttyS0'
|
||||
|
||||
|
||||
|
||||
BusyBox v0.60.3 (2002.07.20-10:39+0000) Built-in shell (ash)
|
||||
Enter 'help' for a list of built-in commands.
|
||||
|
||||
root@ELPT860:~ #
|
||||
36
board/LEOX/elpt860/config.mk
Normal file
36
board/LEOX/elpt860/config.mk
Normal file
@@ -0,0 +1,36 @@
|
||||
#######################################################################
|
||||
#
|
||||
# Copyright (C) 2000, 2001, 2002, 2003
|
||||
# The LEOX team <team@leox.org>, http://www.leox.org
|
||||
#
|
||||
# LEOX.org is about the development of free hardware and software resources
|
||||
# for system on chip.
|
||||
#
|
||||
# Description: U-Boot port on the LEOX's ELPT860 CPU board
|
||||
# ~~~~~~~~~~~
|
||||
#
|
||||
#######################################################################
|
||||
#
|
||||
# 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; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
#
|
||||
# ELPT860 board
|
||||
#
|
||||
|
||||
TEXT_BASE = 0x02000000
|
||||
#TEXT_BASE = 0x00FB0000
|
||||
348
board/LEOX/elpt860/elpt860.c
Normal file
348
board/LEOX/elpt860/elpt860.c
Normal file
@@ -0,0 +1,348 @@
|
||||
/*
|
||||
**=====================================================================
|
||||
**
|
||||
** Copyright (C) 2000, 2001, 2002, 2003
|
||||
** The LEOX team <team@leox.org>, http://www.leox.org
|
||||
**
|
||||
** LEOX.org is about the development of free hardware and software resources
|
||||
** for system on chip.
|
||||
**
|
||||
** Description: U-Boot port on the LEOX's ELPT860 CPU board
|
||||
** ~~~~~~~~~~~
|
||||
**
|
||||
**=====================================================================
|
||||
**
|
||||
** 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; either version 2 of
|
||||
** the License, or (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program; if not, write to the Free Software
|
||||
** Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
** MA 02111-1307 USA
|
||||
**
|
||||
**=====================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
** Note 1: In this file, you have to provide the following functions:
|
||||
** ------
|
||||
** int board_early_init_f(void)
|
||||
** int checkboard(void)
|
||||
** long int initdram(int board_type)
|
||||
** called from 'board_init_f()' into 'common/board.c'
|
||||
**
|
||||
** void reset_phy(void)
|
||||
** called from 'board_init_r()' into 'common/board.c'
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <mpc8xx.h>
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
static long int dram_size (long int, long int *, long int);
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#define _NOT_USED_ 0xFFFFFFFF
|
||||
|
||||
const uint init_sdram_table[] = {
|
||||
/*
|
||||
* Single Read. (Offset 0 in UPMA RAM)
|
||||
*/
|
||||
0x0FFCCC04, 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04,
|
||||
0xFFFFFC04, /* last */
|
||||
/*
|
||||
* SDRAM Initialization (offset 5 in UPMA RAM)
|
||||
*
|
||||
* This is no UPM entry point. The following definition uses
|
||||
* the remaining space to establish an initialization
|
||||
* sequence, which is executed by a RUN command.
|
||||
*
|
||||
*/
|
||||
0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04, /* last */
|
||||
/*
|
||||
* Burst Read. (Offset 8 in UPMA RAM)
|
||||
*/
|
||||
0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
|
||||
0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
|
||||
0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04,
|
||||
0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, /* last */
|
||||
/*
|
||||
* Single Write. (Offset 18 in UPMA RAM)
|
||||
*/
|
||||
0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04,
|
||||
0xFFFFFC04, 0xFFFFFC04, 0x0FFFFC04, 0xFFFFFC04, /* last */
|
||||
/*
|
||||
* Burst Write. (Offset 20 in UPMA RAM)
|
||||
*/
|
||||
0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
|
||||
0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04,
|
||||
0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC34, 0x0FAC0C34,
|
||||
0xFFFFFC05, 0xFFFFFC04, 0x0FFCFC04, 0xFFFFFC05, /* last */
|
||||
};
|
||||
|
||||
const uint sdram_table[] = {
|
||||
/*
|
||||
* Single Read. (Offset 0 in UPMA RAM)
|
||||
*/
|
||||
0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF3C04,
|
||||
0xFF0FFC00, /* last */
|
||||
/*
|
||||
* SDRAM Initialization (offset 5 in UPMA RAM)
|
||||
*
|
||||
* This is no UPM entry point. The following definition uses
|
||||
* the remaining space to establish an initialization
|
||||
* sequence, which is executed by a RUN command.
|
||||
*
|
||||
*/
|
||||
0x0FFCCC04, 0xFFAFFC05, 0xFFAFFC05, /* last */
|
||||
/*
|
||||
* Burst Read. (Offset 8 in UPMA RAM)
|
||||
*/
|
||||
0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF3C04,
|
||||
0xF00FFC00, 0xF00FFC00, 0xF00FFC00, 0xFF0FFC00,
|
||||
0x0FFCCC04, 0xFFAFFC05, 0xFFAFFC04, 0xFFAFFC04,
|
||||
0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
|
||||
/*
|
||||
* Single Write. (Offset 18 in UPMA RAM)
|
||||
*/
|
||||
0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF0C00,
|
||||
0xFF0FFC04, 0x0FFCCC04, 0xFFAFFC05, /* last */
|
||||
_NOT_USED_,
|
||||
/*
|
||||
* Burst Write. (Offset 20 in UPMA RAM)
|
||||
*/
|
||||
0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC00, 0x00AF0C00,
|
||||
0xF00FFC00, 0xF00FFC00, 0xF00FFC04, 0x0FFCCC04,
|
||||
0xFFAFFC04, 0xFFAFFC05, 0xFFAFFC04, 0xFFAFFC04,
|
||||
0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
|
||||
/*
|
||||
* Refresh (Offset 30 in UPMA RAM)
|
||||
*/
|
||||
0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
|
||||
0xFFFFFC05, 0xFFFFFC04, 0xFFFFFC05, _NOT_USED_,
|
||||
0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
|
||||
/*
|
||||
* Exception. (Offset 3c in UPMA RAM)
|
||||
*/
|
||||
0x0FFFFC34, 0x0FAC0C34, 0xFFFFFC05, 0xFFAFFC04, /* last */
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#define CFG_PC4 0x0800
|
||||
|
||||
#define CFG_DS1 CFG_PC4
|
||||
|
||||
/*
|
||||
* Very early board init code (fpga boot, etc.)
|
||||
*/
|
||||
int board_early_init_f (void)
|
||||
{
|
||||
volatile immap_t *immr = (immap_t *) CFG_IMMR;
|
||||
|
||||
/*
|
||||
* Light up the red led on ELPT860 pcb (DS1) (PCDAT)
|
||||
*/
|
||||
immr->im_ioport.iop_pcdat &= ~CFG_DS1; /* PCDAT (DS1 = 0) */
|
||||
immr->im_ioport.iop_pcpar &= ~CFG_DS1; /* PCPAR (0=general purpose I/O) */
|
||||
immr->im_ioport.iop_pcdir |= CFG_DS1; /* PCDIR (I/O: 0=input, 1=output) */
|
||||
|
||||
return (0); /* success */
|
||||
}
|
||||
|
||||
/*
|
||||
* Check Board Identity:
|
||||
*
|
||||
* Test ELPT860 ID string
|
||||
*
|
||||
* Return 1 if no second DRAM bank, otherwise returns 0
|
||||
*/
|
||||
|
||||
int checkboard (void)
|
||||
{
|
||||
unsigned char *s = getenv ("serial#");
|
||||
|
||||
if (!s || strncmp (s, "ELPT860", 7))
|
||||
printf ("### No HW ID - assuming ELPT860\n");
|
||||
|
||||
return (0); /* success */
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
long int initdram (int board_type)
|
||||
{
|
||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||
long int size8, size9;
|
||||
long int size_b0 = 0;
|
||||
|
||||
/*
|
||||
* This sequence initializes SDRAM chips on ELPT860 board
|
||||
*/
|
||||
upmconfig (UPMA, (uint *) init_sdram_table,
|
||||
sizeof (init_sdram_table) / sizeof (uint));
|
||||
|
||||
memctl->memc_mptpr = 0x0200;
|
||||
memctl->memc_mamr = 0x18002111;
|
||||
|
||||
memctl->memc_mar = 0x00000088;
|
||||
memctl->memc_mcr = 0x80002000; /* CS1: SDRAM bank 0 */
|
||||
|
||||
upmconfig (UPMA, (uint *) sdram_table,
|
||||
sizeof (sdram_table) / sizeof (uint));
|
||||
|
||||
/*
|
||||
* Preliminary prescaler for refresh (depends on number of
|
||||
* banks): This value is selected for four cycles every 62.4 us
|
||||
* with two SDRAM banks or four cycles every 31.2 us with one
|
||||
* bank. It will be adjusted after memory sizing.
|
||||
*/
|
||||
memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
|
||||
|
||||
/*
|
||||
* The following value is used as an address (i.e. opcode) for
|
||||
* the LOAD MODE REGISTER COMMAND during SDRAM initialisation. If
|
||||
* the port size is 32bit the SDRAM does NOT "see" the lower two
|
||||
* address lines, i.e. mar=0x00000088 -> opcode=0x00000022 for
|
||||
* MICRON SDRAMs:
|
||||
* -> 0 00 010 0 010
|
||||
* | | | | +- Burst Length = 4
|
||||
* | | | +----- Burst Type = Sequential
|
||||
* | | +------- CAS Latency = 2
|
||||
* | +----------- Operating Mode = Standard
|
||||
* +-------------- Write Burst Mode = Programmed Burst Length
|
||||
*/
|
||||
memctl->memc_mar = 0x00000088;
|
||||
|
||||
/*
|
||||
* Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
|
||||
* preliminary addresses - these have to be modified after the
|
||||
* SDRAM size has been determined.
|
||||
*/
|
||||
memctl->memc_or1 = CFG_OR1_PRELIM;
|
||||
memctl->memc_br1 = CFG_BR1_PRELIM;
|
||||
|
||||
memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
|
||||
|
||||
udelay (200);
|
||||
|
||||
/* perform SDRAM initializsation sequence */
|
||||
|
||||
memctl->memc_mcr = 0x80002105; /* CS1: SDRAM bank 0 */
|
||||
udelay (1);
|
||||
memctl->memc_mcr = 0x80002230; /* CS1: SDRAM bank 0 - execute twice */
|
||||
udelay (1);
|
||||
|
||||
memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
|
||||
|
||||
udelay (1000);
|
||||
|
||||
/*
|
||||
* Check Bank 0 Memory Size for re-configuration
|
||||
*
|
||||
* try 8 column mode
|
||||
*/
|
||||
size8 = dram_size (CFG_MAMR_8COL,
|
||||
(ulong *) SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
|
||||
|
||||
udelay (1000);
|
||||
|
||||
/*
|
||||
* try 9 column mode
|
||||
*/
|
||||
size9 = dram_size (CFG_MAMR_9COL,
|
||||
(ulong *) SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
|
||||
|
||||
if (size8 < size9) { /* leave configuration at 9 columns */
|
||||
size_b0 = size9;
|
||||
/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
|
||||
} else { /* back to 8 columns */
|
||||
|
||||
size_b0 = size8;
|
||||
memctl->memc_mamr = CFG_MAMR_8COL;
|
||||
udelay (500);
|
||||
/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
|
||||
}
|
||||
|
||||
udelay (1000);
|
||||
|
||||
/*
|
||||
* Adjust refresh rate depending on SDRAM type, both banks
|
||||
* For types > 128 MBit leave it at the current (fast) rate
|
||||
*/
|
||||
if (size_b0 < 0x02000000) {
|
||||
/* reduce to 15.6 us (62.4 us / quad) */
|
||||
memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
|
||||
udelay (1000);
|
||||
}
|
||||
|
||||
/*
|
||||
* Final mapping: map bigger bank first
|
||||
*/
|
||||
memctl->memc_or1 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
|
||||
memctl->memc_br1 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
|
||||
|
||||
{
|
||||
unsigned long reg;
|
||||
|
||||
/* adjust refresh rate depending on SDRAM type, one bank */
|
||||
reg = memctl->memc_mptpr;
|
||||
reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
|
||||
memctl->memc_mptpr = reg;
|
||||
}
|
||||
|
||||
udelay (10000);
|
||||
|
||||
return (size_b0);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* Check memory range for valid RAM. A simple memory test determines
|
||||
* the actually available RAM size between addresses `base' and
|
||||
* `base + maxsize'. Some (not all) hardware errors are detected:
|
||||
* - short between address lines
|
||||
* - short between data lines
|
||||
*/
|
||||
|
||||
static long int
|
||||
dram_size (long int mamr_value, long int *base, long int maxsize)
|
||||
{
|
||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||
|
||||
memctl->memc_mamr = mamr_value;
|
||||
|
||||
return (get_ram_size (base, maxsize));
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#define CFG_PA1 0x4000
|
||||
#define CFG_PA2 0x2000
|
||||
|
||||
#define CFG_LBKs (CFG_PA2 | CFG_PA1)
|
||||
|
||||
void reset_phy (void)
|
||||
{
|
||||
volatile immap_t *immr = (immap_t *) CFG_IMMR;
|
||||
|
||||
/*
|
||||
* Ensure LBK LXT901 ethernet 1 & 2 = 0 ... for normal loopback in effect
|
||||
* and no AUI loopback
|
||||
*/
|
||||
immr->im_ioport.iop_padat &= ~CFG_LBKs; /* PADAT (LBK eth 1&2 = 0) */
|
||||
immr->im_ioport.iop_papar &= ~CFG_LBKs; /* PAPAR (0=general purpose I/O) */
|
||||
immr->im_ioport.iop_padir |= CFG_LBKs; /* PADIR (I/O: 0=input, 1=output) */
|
||||
}
|
||||
615
board/LEOX/elpt860/flash.c
Normal file
615
board/LEOX/elpt860/flash.c
Normal file
@@ -0,0 +1,615 @@
|
||||
/*
|
||||
**=====================================================================
|
||||
**
|
||||
** Copyright (C) 2000, 2001, 2002, 2003
|
||||
** The LEOX team <team@leox.org>, http://www.leox.org
|
||||
**
|
||||
** LEOX.org is about the development of free hardware and software resources
|
||||
** for system on chip.
|
||||
**
|
||||
** Description: U-Boot port on the LEOX's ELPT860 CPU board
|
||||
** ~~~~~~~~~~~
|
||||
**
|
||||
**=====================================================================
|
||||
**
|
||||
** 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; either version 2 of
|
||||
** the License, or (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program; if not, write to the Free Software
|
||||
** Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
** MA 02111-1307 USA
|
||||
**
|
||||
**=====================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
** Note 1: In this file, you have to provide the following variable:
|
||||
** ------
|
||||
** flash_info_t flash_info[CFG_MAX_FLASH_BANKS]
|
||||
** 'flash_info_t' structure is defined into 'include/flash.h'
|
||||
** and defined as extern into 'common/cmd_flash.c'
|
||||
**
|
||||
** Note 2: In this file, you have to provide the following functions:
|
||||
** ------
|
||||
** unsigned long flash_init(void)
|
||||
** called from 'board_init_r()' into 'common/board.c'
|
||||
**
|
||||
** void flash_print_info(flash_info_t *info)
|
||||
** called from 'do_flinfo()' into 'common/cmd_flash.c'
|
||||
**
|
||||
** int flash_erase(flash_info_t *info,
|
||||
** int s_first,
|
||||
** int s_last)
|
||||
** called from 'do_flerase()' & 'flash_sect_erase()' into 'common/cmd_flash.c'
|
||||
**
|
||||
** int write_buff (flash_info_t *info,
|
||||
** uchar *src,
|
||||
** ulong addr,
|
||||
** ulong cnt)
|
||||
** called from 'flash_write()' into 'common/cmd_flash.c'
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <mpc8xx.h>
|
||||
|
||||
|
||||
#ifndef CFG_ENV_ADDR
|
||||
# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
|
||||
#endif
|
||||
|
||||
flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Internal Functions
|
||||
*/
|
||||
static void flash_get_offsets (ulong base, flash_info_t *info);
|
||||
static ulong flash_get_size (volatile unsigned char *addr, flash_info_t *info);
|
||||
|
||||
static int write_word (flash_info_t *info, ulong dest, ulong data);
|
||||
static int write_byte (flash_info_t *info, ulong dest, uchar data);
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
unsigned long
|
||||
flash_init (void)
|
||||
{
|
||||
volatile immap_t *immap = (immap_t *)CFG_IMMR;
|
||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||
unsigned long size_b0;
|
||||
int i;
|
||||
|
||||
/* Init: no FLASHes known */
|
||||
for (i=0; i<CFG_MAX_FLASH_BANKS; ++i)
|
||||
{
|
||||
flash_info[i].flash_id = FLASH_UNKNOWN;
|
||||
}
|
||||
|
||||
/* Static FLASH Bank configuration here - FIXME XXX */
|
||||
|
||||
size_b0 = flash_get_size ((volatile unsigned char *)FLASH_BASE0_PRELIM,
|
||||
&flash_info[0]);
|
||||
|
||||
if ( flash_info[0].flash_id == FLASH_UNKNOWN )
|
||||
{
|
||||
printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
|
||||
size_b0, size_b0<<20);
|
||||
}
|
||||
|
||||
/* Remap FLASH according to real size */
|
||||
memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
|
||||
memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_PS_8 | BR_V;
|
||||
|
||||
/* Re-do sizing to get full correct info */
|
||||
size_b0 = flash_get_size ((volatile unsigned char *)CFG_FLASH_BASE,
|
||||
&flash_info[0]);
|
||||
|
||||
flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
|
||||
|
||||
#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
|
||||
/* monitor protection ON by default */
|
||||
flash_protect (FLAG_PROTECT_SET,
|
||||
CFG_MONITOR_BASE,
|
||||
CFG_MONITOR_BASE + monitor_flash_len-1,
|
||||
&flash_info[0]);
|
||||
#endif
|
||||
|
||||
#ifdef CFG_ENV_IS_IN_FLASH
|
||||
/* ENV protection ON by default */
|
||||
flash_protect(FLAG_PROTECT_SET,
|
||||
CFG_ENV_ADDR,
|
||||
CFG_ENV_ADDR + CFG_ENV_SIZE-1,
|
||||
&flash_info[0]);
|
||||
#endif
|
||||
|
||||
flash_info[0].size = size_b0;
|
||||
|
||||
return (size_b0);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
static void
|
||||
flash_get_offsets (ulong base,
|
||||
flash_info_t *info)
|
||||
{
|
||||
int i;
|
||||
|
||||
#define SECTOR_64KB 0x00010000
|
||||
|
||||
/* set up sector start adress table */
|
||||
for (i = 0; i < info->sector_count; i++)
|
||||
{
|
||||
info->start[i] = base + (i * SECTOR_64KB);
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
void
|
||||
flash_print_info (flash_info_t *info)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( info->flash_id == FLASH_UNKNOWN )
|
||||
{
|
||||
printf ("missing or unknown FLASH type\n");
|
||||
return;
|
||||
}
|
||||
|
||||
switch ( info->flash_id & FLASH_VENDMASK )
|
||||
{
|
||||
case FLASH_MAN_AMD: printf ("AMD "); break;
|
||||
case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
|
||||
case FLASH_MAN_STM: printf ("STM (Thomson) "); break;
|
||||
default: printf ("Unknown Vendor "); break;
|
||||
}
|
||||
|
||||
switch ( info->flash_id & FLASH_TYPEMASK )
|
||||
{
|
||||
case FLASH_AM040: printf ("AM29F040 (4 Mbits)\n");
|
||||
break;
|
||||
default: printf ("Unknown Chip Type\n");
|
||||
break;
|
||||
}
|
||||
|
||||
printf (" Size: %ld KB in %d Sectors\n",
|
||||
info->size >> 10, info->sector_count);
|
||||
|
||||
printf (" Sector Start Addresses:");
|
||||
for (i=0; i<info->sector_count; ++i)
|
||||
{
|
||||
if ((i % 5) == 0)
|
||||
printf ("\n ");
|
||||
printf (" %08lX%s",
|
||||
info->start[i],
|
||||
info->protect[i] ? " (RO)" : " "
|
||||
);
|
||||
}
|
||||
printf ("\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*
|
||||
* The following code cannot be run from FLASH!
|
||||
*/
|
||||
|
||||
static ulong
|
||||
flash_get_size (volatile unsigned char *addr,
|
||||
flash_info_t *info)
|
||||
{
|
||||
short i;
|
||||
uchar value;
|
||||
ulong base = (ulong)addr;
|
||||
|
||||
/* Write auto select command: read Manufacturer ID */
|
||||
addr[0x0555] = 0xAA;
|
||||
addr[0x02AA] = 0x55;
|
||||
addr[0x0555] = 0x90;
|
||||
|
||||
value = addr[0];
|
||||
|
||||
switch ( value )
|
||||
{
|
||||
/* case AMD_MANUFACT: */
|
||||
case 0x01:
|
||||
info->flash_id = FLASH_MAN_AMD;
|
||||
break;
|
||||
/* case FUJ_MANUFACT: */
|
||||
case 0x04:
|
||||
info->flash_id = FLASH_MAN_FUJ;
|
||||
break;
|
||||
/* case STM_MANUFACT: */
|
||||
case 0x20:
|
||||
info->flash_id = FLASH_MAN_STM;
|
||||
break;
|
||||
|
||||
default:
|
||||
info->flash_id = FLASH_UNKNOWN;
|
||||
info->sector_count = 0;
|
||||
info->size = 0;
|
||||
return (0); /* no or unknown flash */
|
||||
}
|
||||
|
||||
value = addr[1]; /* device ID */
|
||||
|
||||
switch ( value )
|
||||
{
|
||||
case STM_ID_F040B:
|
||||
case AMD_ID_F040B:
|
||||
info->flash_id += FLASH_AM040; /* 4 Mbits = 512k * 8 */
|
||||
info->sector_count = 8;
|
||||
info->size = 0x00080000;
|
||||
break;
|
||||
|
||||
default:
|
||||
info->flash_id = FLASH_UNKNOWN;
|
||||
return (0); /* => no or unknown flash */
|
||||
}
|
||||
|
||||
/* set up sector start adress table */
|
||||
for (i = 0; i < info->sector_count; i++)
|
||||
{
|
||||
info->start[i] = base + (i * 0x00010000);
|
||||
}
|
||||
|
||||
/* check for protected sectors */
|
||||
for (i = 0; i < info->sector_count; i++)
|
||||
{
|
||||
/* read sector protection at sector address, (A7 .. A0) = 0x02 */
|
||||
/* D0 = 1 if protected */
|
||||
addr = (volatile unsigned char *)(info->start[i]);
|
||||
info->protect[i] = addr[2] & 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prevent writes to uninitialized FLASH.
|
||||
*/
|
||||
if ( info->flash_id != FLASH_UNKNOWN )
|
||||
{
|
||||
addr = (volatile unsigned char *)info->start[0];
|
||||
|
||||
*addr = 0xF0; /* reset bank */
|
||||
}
|
||||
|
||||
return (info->size);
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
int
|
||||
flash_erase (flash_info_t *info,
|
||||
int s_first,
|
||||
int s_last)
|
||||
{
|
||||
volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
|
||||
int flag, prot, sect, l_sect;
|
||||
ulong start, now, last;
|
||||
|
||||
if ( (s_first < 0) || (s_first > s_last) )
|
||||
{
|
||||
if ( info->flash_id == FLASH_UNKNOWN )
|
||||
{
|
||||
printf ("- missing\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("- no sectors to erase\n");
|
||||
}
|
||||
return ( 1 );
|
||||
}
|
||||
|
||||
if ( (info->flash_id == FLASH_UNKNOWN) ||
|
||||
(info->flash_id > FLASH_AMD_COMP) )
|
||||
{
|
||||
printf ("Can't erase unknown flash type %08lx - aborted\n",
|
||||
info->flash_id);
|
||||
return ( 1 );
|
||||
}
|
||||
|
||||
prot = 0;
|
||||
for (sect=s_first; sect<=s_last; ++sect)
|
||||
{
|
||||
if ( info->protect[sect] )
|
||||
{
|
||||
prot++;
|
||||
}
|
||||
}
|
||||
|
||||
if ( prot )
|
||||
{
|
||||
printf ("- Warning: %d protected sectors will not be erased!\n", prot);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
l_sect = -1;
|
||||
|
||||
/* Disable interrupts which might cause a timeout here */
|
||||
flag = disable_interrupts();
|
||||
|
||||
addr[0x0555] = 0xAA;
|
||||
addr[0x02AA] = 0x55;
|
||||
addr[0x0555] = 0x80;
|
||||
addr[0x0555] = 0xAA;
|
||||
addr[0x02AA] = 0x55;
|
||||
|
||||
/* Start erase on unprotected sectors */
|
||||
for (sect = s_first; sect<=s_last; sect++)
|
||||
{
|
||||
if (info->protect[sect] == 0) /* not protected */
|
||||
{
|
||||
addr = (volatile unsigned char *)(info->start[sect]);
|
||||
addr[0] = 0x30;
|
||||
l_sect = sect;
|
||||
}
|
||||
}
|
||||
|
||||
/* re-enable interrupts if necessary */
|
||||
if ( flag )
|
||||
enable_interrupts();
|
||||
|
||||
/* wait at least 80us - let's wait 1 ms */
|
||||
udelay (1000);
|
||||
|
||||
/*
|
||||
* We wait for the last triggered sector
|
||||
*/
|
||||
if ( l_sect < 0 )
|
||||
goto DONE;
|
||||
|
||||
start = get_timer (0);
|
||||
last = start;
|
||||
addr = (volatile unsigned char *)(info->start[l_sect]);
|
||||
while ( (addr[0] & 0x80) != 0x80 )
|
||||
{
|
||||
if ( (now = get_timer(start)) > CFG_FLASH_ERASE_TOUT )
|
||||
{
|
||||
printf ("Timeout\n");
|
||||
return ( 1 );
|
||||
}
|
||||
/* show that we're waiting */
|
||||
if ( (now - last) > 1000 ) /* every second */
|
||||
{
|
||||
putc ('.');
|
||||
last = now;
|
||||
}
|
||||
}
|
||||
|
||||
DONE:
|
||||
/* reset to read mode */
|
||||
addr = (volatile unsigned char *)info->start[0];
|
||||
addr[0] = 0xF0; /* reset bank */
|
||||
|
||||
printf (" done\n");
|
||||
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Copy memory to flash, returns:
|
||||
* 0 - OK
|
||||
* 1 - write timeout
|
||||
* 2 - Flash not erased
|
||||
*/
|
||||
|
||||
int
|
||||
write_buff (flash_info_t *info,
|
||||
uchar *src,
|
||||
ulong addr,
|
||||
ulong cnt)
|
||||
{
|
||||
ulong cp, wp, data;
|
||||
uchar bdata;
|
||||
int i, l, rc;
|
||||
|
||||
if ( (info->flash_id & FLASH_TYPEMASK) == FLASH_AM040 )
|
||||
{
|
||||
/* Width of the data bus: 8 bits */
|
||||
|
||||
wp = addr;
|
||||
|
||||
while ( cnt )
|
||||
{
|
||||
bdata = *src++;
|
||||
|
||||
if ( (rc = write_byte(info, wp, bdata)) != 0 )
|
||||
{
|
||||
return (rc);
|
||||
}
|
||||
|
||||
++wp;
|
||||
--cnt;
|
||||
}
|
||||
|
||||
return ( 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Width of the data bus: 32 bits */
|
||||
|
||||
wp = (addr & ~3); /* get lower word aligned address */
|
||||
|
||||
/*
|
||||
* handle unaligned start bytes
|
||||
*/
|
||||
if ( (l = addr - wp) != 0 )
|
||||
{
|
||||
data = 0;
|
||||
for (i=0, cp=wp; i<l; ++i, ++cp)
|
||||
{
|
||||
data = (data << 8) | (*(uchar *)cp);
|
||||
}
|
||||
for (; i<4 && cnt>0; ++i)
|
||||
{
|
||||
data = (data << 8) | *src++;
|
||||
--cnt;
|
||||
++cp;
|
||||
}
|
||||
for (; cnt==0 && i<4; ++i, ++cp)
|
||||
{
|
||||
data = (data << 8) | (*(uchar *)cp);
|
||||
}
|
||||
|
||||
if ( (rc = write_word(info, wp, data)) != 0 )
|
||||
{
|
||||
return (rc);
|
||||
}
|
||||
wp += 4;
|
||||
}
|
||||
|
||||
/*
|
||||
* handle word aligned part
|
||||
*/
|
||||
while ( cnt >= 4 )
|
||||
{
|
||||
data = 0;
|
||||
for (i=0; i<4; ++i)
|
||||
{
|
||||
data = (data << 8) | *src++;
|
||||
}
|
||||
if ( (rc = write_word(info, wp, data)) != 0 )
|
||||
{
|
||||
return (rc);
|
||||
}
|
||||
wp += 4;
|
||||
cnt -= 4;
|
||||
}
|
||||
|
||||
if ( cnt == 0 )
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* handle unaligned tail bytes
|
||||
*/
|
||||
data = 0;
|
||||
for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp)
|
||||
{
|
||||
data = (data << 8) | *src++;
|
||||
--cnt;
|
||||
}
|
||||
for (; i<4; ++i, ++cp)
|
||||
{
|
||||
data = (data << 8) | (*(uchar *)cp);
|
||||
}
|
||||
|
||||
return (write_word(info, wp, data));
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Write a word to Flash, returns:
|
||||
* 0 - OK
|
||||
* 1 - write timeout
|
||||
* 2 - Flash not erased
|
||||
*/
|
||||
static int
|
||||
write_word (flash_info_t *info,
|
||||
ulong dest,
|
||||
ulong data)
|
||||
{
|
||||
vu_long *addr = (vu_long*)(info->start[0]);
|
||||
ulong start;
|
||||
int flag;
|
||||
|
||||
/* Check if Flash is (sufficiently) erased */
|
||||
if ( (*((vu_long *)dest) & data) != data )
|
||||
{
|
||||
return (2);
|
||||
}
|
||||
/* Disable interrupts which might cause a timeout here */
|
||||
flag = disable_interrupts();
|
||||
|
||||
addr[0x0555] = 0x00AA00AA;
|
||||
addr[0x02AA] = 0x00550055;
|
||||
addr[0x0555] = 0x00A000A0;
|
||||
|
||||
*((vu_long *)dest) = data;
|
||||
|
||||
/* re-enable interrupts if necessary */
|
||||
if ( flag )
|
||||
enable_interrupts();
|
||||
|
||||
/* data polling for D7 */
|
||||
start = get_timer (0);
|
||||
while ( (*((vu_long *)dest) & 0x00800080) != (data & 0x00800080) )
|
||||
{
|
||||
if ( get_timer(start) > CFG_FLASH_WRITE_TOUT )
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Write a byte to Flash, returns:
|
||||
* 0 - OK
|
||||
* 1 - write timeout
|
||||
* 2 - Flash not erased
|
||||
*/
|
||||
static int
|
||||
write_byte (flash_info_t *info,
|
||||
ulong dest,
|
||||
uchar data)
|
||||
{
|
||||
volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
|
||||
ulong start;
|
||||
int flag;
|
||||
|
||||
/* Check if Flash is (sufficiently) erased */
|
||||
if ( (*((volatile unsigned char *)dest) & data) != data )
|
||||
{
|
||||
return (2);
|
||||
}
|
||||
/* Disable interrupts which might cause a timeout here */
|
||||
flag = disable_interrupts();
|
||||
|
||||
addr[0x0555] = 0xAA;
|
||||
addr[0x02AA] = 0x55;
|
||||
addr[0x0555] = 0xA0;
|
||||
|
||||
*((volatile unsigned char *)dest) = data;
|
||||
|
||||
/* re-enable interrupts if necessary */
|
||||
if ( flag )
|
||||
enable_interrupts();
|
||||
|
||||
/* data polling for D7 */
|
||||
start = get_timer (0);
|
||||
while ( (*((volatile unsigned char *)dest) & 0x80) != (data & 0x80) )
|
||||
{
|
||||
if ( get_timer(start) > CFG_FLASH_WRITE_TOUT )
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
151
board/LEOX/elpt860/u-boot.lds
Normal file
151
board/LEOX/elpt860/u-boot.lds
Normal file
@@ -0,0 +1,151 @@
|
||||
/*
|
||||
**=====================================================================
|
||||
**
|
||||
** Copyright (C) 2000, 2001, 2002, 2003
|
||||
** The LEOX team <team@leox.org>, http://www.leox.org
|
||||
**
|
||||
** LEOX.org is about the development of free hardware and software resources
|
||||
** for system on chip.
|
||||
**
|
||||
** Description: U-Boot port on the LEOX's ELPT860 CPU board
|
||||
** ~~~~~~~~~~~
|
||||
**
|
||||
**=====================================================================
|
||||
**
|
||||
** 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; either version 2 of
|
||||
** the License, or (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program; if not, write to the Free Software
|
||||
** Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
** MA 02111-1307 USA
|
||||
**
|
||||
**=====================================================================
|
||||
*/
|
||||
|
||||
OUTPUT_ARCH(powerpc)
|
||||
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
|
||||
/* Do we need any of these for elf?
|
||||
__DYNAMIC = 0; */
|
||||
SECTIONS
|
||||
{
|
||||
/* Read-only sections, merged into text segment: */
|
||||
. = + SIZEOF_HEADERS;
|
||||
.interp : { *(.interp) }
|
||||
.hash : { *(.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.rel.text : { *(.rel.text) }
|
||||
.rela.text : { *(.rela.text) }
|
||||
.rel.data : { *(.rel.data) }
|
||||
.rela.data : { *(.rela.data) }
|
||||
.rel.rodata : { *(.rel.rodata) }
|
||||
.rela.rodata : { *(.rela.rodata) }
|
||||
.rel.got : { *(.rel.got) }
|
||||
.rela.got : { *(.rela.got) }
|
||||
.rel.ctors : { *(.rel.ctors) }
|
||||
.rela.ctors : { *(.rela.ctors) }
|
||||
.rel.dtors : { *(.rel.dtors) }
|
||||
.rela.dtors : { *(.rela.dtors) }
|
||||
.rel.bss : { *(.rel.bss) }
|
||||
.rela.bss : { *(.rela.bss) }
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.init : { *(.init) }
|
||||
.plt : { *(.plt) }
|
||||
.text :
|
||||
{
|
||||
/* WARNING - the following is hand-optimized to fit within */
|
||||
/* the sector layout of our flash chips! XXX FIXME XXX */
|
||||
|
||||
cpu/mpc8xx/start.o (.text)
|
||||
common/dlmalloc.o (.text)
|
||||
lib_ppc/ppcstring.o (.text)
|
||||
lib_generic/vsprintf.o (.text)
|
||||
lib_generic/crc32.o (.text)
|
||||
lib_generic/zlib.o (.text)
|
||||
lib_generic/string.o (.text)
|
||||
lib_ppc/cache.o (.text)
|
||||
lib_ppc/extable.o (.text)
|
||||
lib_ppc/time.o (.text)
|
||||
lib_ppc/ticks.o (.text)
|
||||
|
||||
. = env_offset;
|
||||
common/environment.o (.text)
|
||||
|
||||
*(.text)
|
||||
*(.fixup)
|
||||
*(.got1)
|
||||
}
|
||||
_etext = .;
|
||||
PROVIDE (etext = .);
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata)
|
||||
*(.rodata1)
|
||||
*(.rodata.str1.4)
|
||||
}
|
||||
.fini : { *(.fini) } =0
|
||||
.ctors : { *(.ctors) }
|
||||
.dtors : { *(.dtors) }
|
||||
|
||||
/* Read-write section, merged into data segment: */
|
||||
. = (. + 0x00FF) & 0xFFFFFF00;
|
||||
_erotext = .;
|
||||
PROVIDE (erotext = .);
|
||||
.reloc :
|
||||
{
|
||||
*(.got)
|
||||
_GOT2_TABLE_ = .;
|
||||
*(.got2)
|
||||
_FIXUP_TABLE_ = .;
|
||||
*(.fixup)
|
||||
}
|
||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
|
||||
__fixup_entries = (. - _FIXUP_TABLE_)>>2;
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
*(.data1)
|
||||
*(.sdata)
|
||||
*(.sdata2)
|
||||
*(.dynamic)
|
||||
CONSTRUCTORS
|
||||
}
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
|
||||
__u_boot_cmd_start = .;
|
||||
.u_boot_cmd : { *(.u_boot_cmd) }
|
||||
__u_boot_cmd_end = .;
|
||||
|
||||
__start___ex_table = .;
|
||||
__ex_table : { *(__ex_table) }
|
||||
__stop___ex_table = .;
|
||||
|
||||
. = ALIGN(256);
|
||||
__init_begin = .;
|
||||
.text.init : { *(.text.init) }
|
||||
.data.init : { *(.data.init) }
|
||||
. = ALIGN(256);
|
||||
__init_end = .;
|
||||
|
||||
__bss_start = .;
|
||||
.bss :
|
||||
{
|
||||
*(.sbss) *(.scommon)
|
||||
*(.dynbss)
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
}
|
||||
_end = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
139
board/LEOX/elpt860/u-boot.lds.debug
Normal file
139
board/LEOX/elpt860/u-boot.lds.debug
Normal file
@@ -0,0 +1,139 @@
|
||||
/*
|
||||
**=====================================================================
|
||||
**
|
||||
** Copyright (C) 2000, 2001, 2002, 2003
|
||||
** The LEOX team <team@leox.org>, http://www.leox.org
|
||||
**
|
||||
** LEOX.org is about the development of free hardware and software resources
|
||||
** for system on chip.
|
||||
**
|
||||
** Description: U-Boot port on the LEOX's ELPT860 CPU board
|
||||
** ~~~~~~~~~~~
|
||||
**
|
||||
**=====================================================================
|
||||
**
|
||||
** 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; either version 2 of
|
||||
** the License, or (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program; if not, write to the Free Software
|
||||
** Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
** MA 02111-1307 USA
|
||||
**
|
||||
**=====================================================================
|
||||
*/
|
||||
|
||||
OUTPUT_ARCH(powerpc)
|
||||
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
|
||||
/* Do we need any of these for elf?
|
||||
__DYNAMIC = 0; */
|
||||
SECTIONS
|
||||
{
|
||||
/* Read-only sections, merged into text segment: */
|
||||
. = + SIZEOF_HEADERS;
|
||||
.interp : { *(.interp) }
|
||||
.hash : { *(.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.rel.text : { *(.rel.text) }
|
||||
.rela.text : { *(.rela.text) }
|
||||
.rel.data : { *(.rel.data) }
|
||||
.rela.data : { *(.rela.data) }
|
||||
.rel.rodata : { *(.rel.rodata) }
|
||||
.rela.rodata : { *(.rela.rodata) }
|
||||
.rel.got : { *(.rel.got) }
|
||||
.rela.got : { *(.rela.got) }
|
||||
.rel.ctors : { *(.rel.ctors) }
|
||||
.rela.ctors : { *(.rela.ctors) }
|
||||
.rel.dtors : { *(.rel.dtors) }
|
||||
.rela.dtors : { *(.rela.dtors) }
|
||||
.rel.bss : { *(.rel.bss) }
|
||||
.rela.bss : { *(.rela.bss) }
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.init : { *(.init) }
|
||||
.plt : { *(.plt) }
|
||||
.text :
|
||||
{
|
||||
/* WARNING - the following is hand-optimized to fit within */
|
||||
/* the sector layout of our flash chips! XXX FIXME XXX */
|
||||
|
||||
cpu/mpc8xx/start.o (.text)
|
||||
common/dlmalloc.o (.text)
|
||||
lib_generic/vsprintf.o (.text)
|
||||
lib_generic/crc32.o (.text)
|
||||
|
||||
. = env_offset;
|
||||
common/environment.o (.text)
|
||||
|
||||
*(.text)
|
||||
*(.fixup)
|
||||
*(.got1)
|
||||
}
|
||||
_etext = .;
|
||||
PROVIDE (etext = .);
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata)
|
||||
*(.rodata1)
|
||||
}
|
||||
.fini : { *(.fini) } =0
|
||||
.ctors : { *(.ctors) }
|
||||
.dtors : { *(.dtors) }
|
||||
|
||||
/* Read-write section, merged into data segment: */
|
||||
. = (. + 0x0FFF) & 0xFFFFF000;
|
||||
_erotext = .;
|
||||
PROVIDE (erotext = .);
|
||||
.reloc :
|
||||
{
|
||||
*(.got)
|
||||
_GOT2_TABLE_ = .;
|
||||
*(.got2)
|
||||
_FIXUP_TABLE_ = .;
|
||||
*(.fixup)
|
||||
}
|
||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
|
||||
__fixup_entries = (. - _FIXUP_TABLE_)>>2;
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
*(.data1)
|
||||
*(.sdata)
|
||||
*(.sdata2)
|
||||
*(.dynamic)
|
||||
CONSTRUCTORS
|
||||
}
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
|
||||
__start___ex_table = .;
|
||||
__ex_table : { *(__ex_table) }
|
||||
__stop___ex_table = .;
|
||||
|
||||
. = ALIGN(4096);
|
||||
__init_begin = .;
|
||||
.text.init : { *(.text.init) }
|
||||
.data.init : { *(.data.init) }
|
||||
. = ALIGN(4096);
|
||||
__init_end = .;
|
||||
|
||||
__bss_start = .;
|
||||
.bss :
|
||||
{
|
||||
*(.sbss) *(.scommon)
|
||||
*(.dynbss)
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
}
|
||||
_end = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
@@ -86,7 +86,6 @@ long initdram (int board_type)
|
||||
}
|
||||
|
||||
|
||||
|
||||
void after_reloc (ulong dest_addr, gd_t *gd)
|
||||
{
|
||||
/* HJF: DECLARE_GLOBAL_DATA_PTR; */
|
||||
|
||||
@@ -675,7 +675,7 @@ static __inline__ void set_msr (unsigned long msr)
|
||||
asm volatile ("mtmsr %0"::"r" (msr));
|
||||
}
|
||||
|
||||
int board_pre_init (void)
|
||||
int board_early_init_f (void)
|
||||
{
|
||||
unsigned char c_value = 0;
|
||||
unsigned long msr;
|
||||
|
||||
@@ -134,7 +134,6 @@
|
||||
#define ARTICIAS_ISAIO_PHYS 0xfe002000
|
||||
|
||||
|
||||
|
||||
/* Prototypes */
|
||||
long articiaS_ram_init(void);
|
||||
void articiaS_pci_init(void);
|
||||
|
||||
@@ -123,14 +123,14 @@ struct pci_irq_fixup_table fixuptab [] =
|
||||
{
|
||||
{ 0, 0, 0, 0xff}, /* Articia S host bridge */
|
||||
{ 0, 1, 0, 0xff}, /* Articia S AGP bridge */
|
||||
// { 0, 6, 0, 0x05}, /* 3COM ethernet */
|
||||
/* { 0, 6, 0, 0x05}, /###* 3COM ethernet */
|
||||
{ 0, 7, 0, 0xff}, /* VIA southbridge */
|
||||
{ 0, 7, 1, 0x0e}, /* IDE controller in legacy mode */
|
||||
// { 0, 7, 2, 0x05}, /* First USB controller */
|
||||
// { 0, 7, 3, 0x0c}, /* Second USB controller (shares interrupt with ethernet) */
|
||||
/* { 0, 7, 2, 0x05}, /###* First USB controller */
|
||||
/* { 0, 7, 3, 0x0c}, /###* Second USB controller (shares interrupt with ethernet) */
|
||||
{ 0, 7, 4, 0xff}, /* ACPI Power Management */
|
||||
// { 0, 7, 5, 0x08}, /* AC97 */
|
||||
// { 0, 7, 6, 0x08}, /* MC97 */
|
||||
/* { 0, 7, 5, 0x08}, /###* AC97 */
|
||||
/* { 0, 7, 6, 0x08}, /###* MC97 */
|
||||
{ 0xff, 0xff, 0xff, 0xff}
|
||||
};
|
||||
|
||||
@@ -287,7 +287,7 @@ void articiaS_pci_init (void)
|
||||
|
||||
PRINTF("atriciaS_pci_init\n");
|
||||
|
||||
// Why aren't these relocated??
|
||||
/* Why aren't these relocated?? */
|
||||
for (i=0; config_table[i].config_device; i++)
|
||||
{
|
||||
switch((int)config_table[i].config_device)
|
||||
@@ -335,7 +335,6 @@ void articiaS_pci_init (void)
|
||||
PCI_REGION_IO);
|
||||
|
||||
|
||||
|
||||
articiaS_hose.region_count = 4;
|
||||
|
||||
pci_setup_indirect(&articiaS_hose, ARTICIAS_PCI_CFGADDR, ARTICIAS_PCI_CFGDATA);
|
||||
@@ -410,8 +409,8 @@ pci_dev_t pci_hose_find_class(struct pci_controller *hose, int bus, short find_c
|
||||
pci_hose_read_config_byte(hose, dev, 0x0B, &c1);
|
||||
pci_hose_read_config_byte(hose, dev, 0x0A, &c2);
|
||||
class = c1<<8 | c2;
|
||||
//printf("At %02x:%02x:%02x: class %x\n",
|
||||
// PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev), class);
|
||||
/*printf("At %02x:%02x:%02x: class %x\n", */
|
||||
/* PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev), class); */
|
||||
if (class == find_class)
|
||||
{
|
||||
if (index == 0)
|
||||
@@ -441,7 +440,7 @@ pci_dev_t pci_find_bridge_for_bus(struct pci_controller *hose, int busnr)
|
||||
|
||||
if (hose == NULL) hose = &articiaS_hose;
|
||||
|
||||
if (busnr < hose->first_busno || busnr > hose->last_busno) return PCI_ANY_ID; // Not in range
|
||||
if (busnr < hose->first_busno || busnr > hose->last_busno) return PCI_ANY_ID; /* Not in range */
|
||||
|
||||
/*
|
||||
* The bridge must be on a lower bus number
|
||||
@@ -467,7 +466,7 @@ pci_dev_t pci_find_bridge_for_bus(struct pci_controller *hose, int busnr)
|
||||
|
||||
if (!PCI_FUNC(dev))
|
||||
found_multi = header_type & 0x80;
|
||||
if (header_type == 1) // Bridge device header
|
||||
if (header_type == 1) /* Bridge device header */
|
||||
{
|
||||
pci_hose_read_config_byte(hose, dev, PCI_SECONDARY_BUS, &secondary_bus);
|
||||
if ((int)secondary_bus == busnr) return dev;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "macros.h"
|
||||
|
||||
#include "macros.h"
|
||||
|
||||
|
||||
#define GLOBALINFO0 0x50
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <cmd_boota.h>
|
||||
#include "../disk/part_amiga.h"
|
||||
#include <asm/cache.h>
|
||||
|
||||
@@ -121,3 +120,10 @@ int do_boota (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
||||
|
||||
return 0;
|
||||
}
|
||||
#if defined(CONFIG_AMIGAONEG3SE) && (CONFIG_COMMANDS & CFG_CMD_BSP)
|
||||
U_BOOT_CMD(
|
||||
boota, 3, 1, do_boota,
|
||||
"boota - boot an Amiga kernel\n",
|
||||
"address disk"
|
||||
);
|
||||
#endif /* _CMD_BOOTA_H */
|
||||
|
||||
@@ -30,4 +30,3 @@ X86EMU = -I../bios_emulator/scitech/include -I../bios_emulator/scitech/src/x86e
|
||||
TEXT_BASE = 0xfff00000
|
||||
|
||||
PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -Wa,-mregnames -DEASTEREGG $(X86EMU) -Dprintk=printf #-DDEBUG
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
/* 3Com Ethernet PCI definitions*/
|
||||
|
||||
// #define PCI_VENDOR_ID_3COM 0x10B7
|
||||
/* #define PCI_VENDOR_ID_3COM 0x10B7 */
|
||||
#define PCI_DEVICE_ID_3COM_3C905C 0x9200
|
||||
|
||||
/* 3Com Commands, top 5 bits are command and bottom 11 bits are parameters */
|
||||
@@ -353,7 +353,7 @@ static int issue_and_wait(struct eth_device* dev, int command)
|
||||
ETH_CMD(dev, command);
|
||||
for (i = 0; i < 2000; i++) {
|
||||
status = ETH_STATUS(dev);
|
||||
//printf ("Issue: status 0x%4x.\n", status);
|
||||
/*printf ("Issue: status 0x%4x.\n", status); */
|
||||
if (!(status & CmdInProgress))
|
||||
return 1;
|
||||
}
|
||||
@@ -361,7 +361,7 @@ static int issue_and_wait(struct eth_device* dev, int command)
|
||||
/* OK, that didn't work. Do it the slow way. One second */
|
||||
for (i = 0; i < 100000; i++) {
|
||||
status = ETH_STATUS(dev);
|
||||
//printf ("Issue: status 0x%4x.\n", status);
|
||||
/*printf ("Issue: status 0x%4x.\n", status); */
|
||||
return 1;
|
||||
udelay(10);
|
||||
}
|
||||
@@ -378,7 +378,7 @@ static int auto_negotiate(struct eth_device* dev)
|
||||
|
||||
EL3WINDOW(dev, 1);
|
||||
|
||||
// Wait for Auto negotiation to complete
|
||||
/* Wait for Auto negotiation to complete */
|
||||
for (i = 0; i <= 1000; i++)
|
||||
{
|
||||
if (ETH_INW(dev, 2) & 0x04)
|
||||
@@ -393,7 +393,6 @@ static int auto_negotiate(struct eth_device* dev)
|
||||
}
|
||||
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -481,7 +480,7 @@ int eth_3com_initialize(bd_t *bis)
|
||||
goto Done;
|
||||
}
|
||||
|
||||
dev = (struct eth_device*) malloc(sizeof(*dev)); //struct eth_device));
|
||||
dev = (struct eth_device*) malloc(sizeof(*dev)); /*struct eth_device)); */
|
||||
|
||||
sprintf(dev->name, "3Com 3c920c#%d", card_number);
|
||||
dev->iobase = eth_iobase;
|
||||
@@ -583,7 +582,7 @@ static int eth_3com_init(struct eth_device* dev, bd_t *bis)
|
||||
/* Below sets no bits are to cause an interrupt since this is just polling */
|
||||
|
||||
intr_enable = SetIntrEnb;
|
||||
// intr_enable = SetIntrEnb | (1<<9) | (1<<10) | (1<<6);
|
||||
/* intr_enable = SetIntrEnb | (1<<9) | (1<<10) | (1<<6); */
|
||||
ETH_CMD(dev, intr_enable);
|
||||
ETH_OUTB(dev, 127, UpPoll);
|
||||
|
||||
@@ -758,8 +757,8 @@ void eth_3com_halt(struct eth_device* dev)
|
||||
issue_and_wait(dev, RxDisable);
|
||||
issue_and_wait(dev, TxDisable);
|
||||
|
||||
// free(tx_ring); /* release memory allocated to the DPD and UPD rings */
|
||||
// free(rx_ring);
|
||||
/* free(tx_ring); /###* release memory allocated to the DPD and UPD rings */
|
||||
/* free(rx_ring); */
|
||||
|
||||
Done:
|
||||
return;
|
||||
@@ -883,4 +882,3 @@ static void read_hw_addr(struct eth_device* dev, bd_t *bis)
|
||||
Done:
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
#undef DEBUG_FLASH
|
||||
//#define DEBUG_FLASH
|
||||
|
||||
#ifdef DEBUG_FLASH
|
||||
#define DEBUGF(fmt,args...) printf(fmt ,##args)
|
||||
@@ -120,7 +119,7 @@ unsigned long flash_init (void)
|
||||
/* monitor protection ON by default */
|
||||
flash_protect(FLAG_PROTECT_SET,
|
||||
CFG_MONITOR_BASE,
|
||||
CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
|
||||
CFG_MONITOR_BASE + monitor_flash_len - 1,
|
||||
&flash_info[0]);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -75,16 +75,16 @@ void i8259_init(void)
|
||||
char dummy;
|
||||
PRINTF("Initializing Interrupt controller\n");
|
||||
/* init master interrupt controller */
|
||||
out8(0x20, 0x11); //0x19); // was: 0x11); /* Start init sequence */
|
||||
out8(0x20, 0x11); /* 0x19); /###* Start init sequence */
|
||||
out8(0x21, 0x00); /* Vector base */
|
||||
out8(0x21, 0x04); /* edge tiggered, Cascade (slave) on IRQ2 */
|
||||
out8(0x21, 0x11); // was: 0x01); /* Select 8086 mode */
|
||||
out8(0x21, 0x11); /* was: 0x01); /###* Select 8086 mode */
|
||||
|
||||
/* init slave interrupt controller */
|
||||
out8(0xA0, 0x11); //0x19); // was: 0x11); /* Start init sequence */
|
||||
out8(0xA0, 0x11); /* 0x19); /###* Start init sequence */
|
||||
out8(0xA1, 0x08); /* Vector base */
|
||||
out8(0xA1, 0x02); /* edge triggered, Cascade (slave) on IRQ2 */
|
||||
out8(0xA1, 0x11); // was: 0x01); /* Select 8086 mode */
|
||||
out8(0xA1, 0x11); /* was: 0x01); /###* Select 8086 mode */
|
||||
|
||||
/* always read ISR */
|
||||
out8(0x20, 0x0B);
|
||||
|
||||
@@ -167,8 +167,8 @@ external_interrupt(struct pt_regs *regs)
|
||||
|
||||
int irq, unmask = 1;
|
||||
|
||||
irq = i8259_irq(); //i8259_get_irq(regs);
|
||||
// printf("irq = %d, handler at %p ack=%d\n", irq, irq_handlers[irq].handler, *(volatile unsigned char *)0xFEF00000);
|
||||
irq = i8259_irq(); /*i8259_get_irq(regs); */
|
||||
/* printf("irq = %d, handler at %p ack=%d\n", irq, irq_handlers[irq].handler, *(volatile unsigned char *)0xFEF00000); */
|
||||
i8259_mask_and_ack(irq);
|
||||
|
||||
if (irq_handlers[irq].handler != NULL)
|
||||
@@ -264,5 +264,3 @@ do_irqinfo(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
|
||||
{
|
||||
puts("IRQ related functions are unimplemented currently.\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "macros.h"
|
||||
|
||||
|
||||
|
||||
.globl pci_read_cfg_byte
|
||||
|
||||
pci_read_cfg_byte:
|
||||
@@ -13,7 +12,6 @@ pci_read_cfg_byte:
|
||||
blr
|
||||
|
||||
|
||||
|
||||
.globl pci_write_cfg_byte
|
||||
|
||||
pci_write_cfg_byte:
|
||||
@@ -25,7 +23,6 @@ pci_write_cfg_byte:
|
||||
blr
|
||||
|
||||
|
||||
|
||||
.globl pci_read_cfg_word
|
||||
|
||||
pci_read_cfg_word:
|
||||
@@ -37,7 +34,6 @@ pci_read_cfg_word:
|
||||
blr
|
||||
|
||||
|
||||
|
||||
.globl pci_write_cfg_word
|
||||
|
||||
pci_write_cfg_word:
|
||||
@@ -49,7 +45,6 @@ pci_write_cfg_word:
|
||||
blr
|
||||
|
||||
|
||||
|
||||
.globl pci_read_cfg_long
|
||||
|
||||
pci_read_cfg_long:
|
||||
@@ -61,7 +56,6 @@ pci_read_cfg_long:
|
||||
blr
|
||||
|
||||
|
||||
|
||||
.globl pci_write_cfg_long
|
||||
|
||||
pci_write_cfg_long:
|
||||
@@ -71,4 +65,3 @@ pci_write_cfg_long:
|
||||
eieio
|
||||
sync
|
||||
blr
|
||||
|
||||
|
||||
@@ -34,4 +34,3 @@ void disable_nvram(void)
|
||||
{
|
||||
pci_write_cfg_byte(0, 0, 0x56, 0x0);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,6 @@ void i8259_unmask_irq(unsigned int irq);
|
||||
|
||||
|
||||
#undef KBG_DEBUG
|
||||
//#define KBG_DEBUG
|
||||
|
||||
#ifdef KBG_DEBUG
|
||||
#define PRINTF(fmt,args...) printf (fmt ,##args)
|
||||
@@ -143,8 +142,6 @@ void i8259_unmask_irq(unsigned int irq);
|
||||
#define KBD_BUFFER_LEN 0x20 /* size of the keyboardbuffer */
|
||||
|
||||
|
||||
|
||||
|
||||
static volatile char kbd_buffer[KBD_BUFFER_LEN];
|
||||
static volatile int in_pointer = 0;
|
||||
static volatile int out_pointer = 0;
|
||||
@@ -494,7 +491,6 @@ unsigned char handle_kbd_event(void)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Lowlevel Part of keyboard section
|
||||
*/
|
||||
@@ -692,8 +688,3 @@ void kbd_interrupt(void)
|
||||
{
|
||||
handle_kbd_event();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* eof */
|
||||
|
||||
|
||||
@@ -106,36 +106,36 @@ void sm_send_stop(void)
|
||||
|
||||
int sm_read_byte_from_device(uint8 addr, uint8 reg, uint8 *storage)
|
||||
{
|
||||
// S Addr Wr
|
||||
/* S Addr Wr */
|
||||
sm_write_mode();
|
||||
sm_send_start();
|
||||
sm_write_byte((addr<<1));
|
||||
|
||||
// [A]
|
||||
/* [A] */
|
||||
sm_read_mode();
|
||||
if (sm_get_ack() == FALSE) return FALSE;
|
||||
|
||||
// Comm
|
||||
/* Comm */
|
||||
sm_write_mode();
|
||||
sm_write_byte(reg);
|
||||
|
||||
// [A]
|
||||
/* [A] */
|
||||
sm_read_mode();
|
||||
if (sm_get_ack() == FALSE) return FALSE;
|
||||
|
||||
// S Addr Rd
|
||||
/* S Addr Rd */
|
||||
sm_write_mode();
|
||||
sm_send_start();
|
||||
sm_write_byte((addr<<1)|1);
|
||||
|
||||
// [A]
|
||||
/* [A] */
|
||||
sm_read_mode();
|
||||
if (sm_get_ack() == FALSE) return FALSE;
|
||||
|
||||
// [Data]
|
||||
/* [Data] */
|
||||
*storage = sm_read_byte();
|
||||
|
||||
// NA
|
||||
/* NA */
|
||||
sm_write_mode();
|
||||
sm_write_nack();
|
||||
sm_send_stop();
|
||||
|
||||
@@ -148,7 +148,6 @@
|
||||
/*--------------------------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
/* END TERON Articia / SDRAM Initialization code */
|
||||
/*--------------------------------------------------------------*/
|
||||
@@ -197,5 +196,3 @@ write dmem 0xfee00cfc 0x00003280
|
||||
|
||||
write dmem 0xfec00cf8 0xc4000080
|
||||
write dmem 0xfee00cfc 0x00003290
|
||||
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ SECTIONS
|
||||
{
|
||||
*(.rodata)
|
||||
*(.rodata1)
|
||||
*(.rodata.str1.4)
|
||||
}
|
||||
.fini : { *(.fini) } =0
|
||||
.ctors : { *(.ctors) }
|
||||
@@ -107,6 +108,11 @@ SECTIONS
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
|
||||
__u_boot_cmd_start = .;
|
||||
.u_boot_cmd : { *(.u_boot_cmd) }
|
||||
__u_boot_cmd_end = .;
|
||||
|
||||
|
||||
__start___ex_table = .;
|
||||
__ex_table : { *(__ex_table) }
|
||||
__stop___ex_table = .;
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
#define USB_MAX_TEMP_INT_TD 32 /* number of temporary TDs for Interrupt transfers */
|
||||
|
||||
|
||||
//#define USB_UHCI_DEBUG
|
||||
/*#define USB_UHCI_DEBUG */
|
||||
|
||||
#ifdef USB_UHCI_DEBUG
|
||||
#define USB_UHCI_PRINTF(fmt,args...) printf (fmt ,##args)
|
||||
@@ -1115,7 +1115,6 @@ static void usb_display_wValue(unsigned short wValue,unsigned short wIndex)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef USB_UHCI_DEBUG
|
||||
|
||||
static int usb_display_td(uhci_td_t *td)
|
||||
|
||||
@@ -190,5 +190,3 @@ struct virt_root_hub {
|
||||
|
||||
|
||||
#endif /* _USB_UHCI_H_ */
|
||||
|
||||
|
||||
|
||||
@@ -129,11 +129,11 @@ int drv_video_init(void)
|
||||
|
||||
int video_init(void)
|
||||
{
|
||||
cursor_position = VIDEO_BASE; // Color text display base
|
||||
cursor_position = VIDEO_BASE; /* Color text display base */
|
||||
cursor_row = 0;
|
||||
cursor_col = 0;
|
||||
current_attr = video_get_attr(); // Currently selected value for attribute.
|
||||
// video_test();
|
||||
current_attr = video_get_attr(); /* Currently selected value for attribute. */
|
||||
/* video_test(); */
|
||||
video_set_color(current_attr);
|
||||
|
||||
return 0;
|
||||
@@ -328,7 +328,7 @@ void video_draw_box(int style, int attr, char *title, int separate, int x, int y
|
||||
*(fb2+1) = attr; fb2 += 2*VIDEO_COLS;
|
||||
}
|
||||
|
||||
// Draw title
|
||||
/* Draw title */
|
||||
if (title)
|
||||
{
|
||||
if (separate == 0)
|
||||
|
||||
@@ -130,14 +130,14 @@ static void X86API int1A(int intno)
|
||||
|
||||
switch(M.x86.R_AX)
|
||||
{
|
||||
case 0xB101: // PCI Bios Present?
|
||||
case 0xB101: /* PCI Bios Present? */
|
||||
M.x86.R_AL = 0x00;
|
||||
M.x86.R_EDX = 0x20494350;
|
||||
M.x86.R_BX = 0x0210;
|
||||
M.x86.R_CL = 3;
|
||||
CLEAR_FLAG(F_CF);
|
||||
break;
|
||||
case 0xB102: // Find device
|
||||
case 0xB102: /* Find device */
|
||||
device = mypci_find_device(M.x86.R_DX, M.x86.R_CX, M.x86.R_SI);
|
||||
if (device != -1)
|
||||
{
|
||||
@@ -151,52 +151,52 @@ static void X86API int1A(int intno)
|
||||
}
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
break;
|
||||
case 0xB103: // Find PCI class code
|
||||
case 0xB103: /* Find PCI class code */
|
||||
M.x86.R_AH = PCIBIOS_DEVICE_NOT_FOUND;
|
||||
//printf("Find by class not yet implmented");
|
||||
/*printf("Find by class not yet implmented"); */
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
break;
|
||||
case 0xB108: // read config byte
|
||||
case 0xB108: /* read config byte */
|
||||
M.x86.R_CL = mypci_read_cfg_byte(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI);
|
||||
M.x86.R_AH = PCIBIOS_SUCCESSFUL;
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
//printf("read_config_byte %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI,
|
||||
// M.x86.R_CL);
|
||||
/*printf("read_config_byte %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */
|
||||
/* M.x86.R_CL); */
|
||||
break;
|
||||
case 0xB109: // read config word
|
||||
case 0xB109: /* read config word */
|
||||
M.x86.R_CX = mypci_read_cfg_word(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI);
|
||||
M.x86.R_AH = PCIBIOS_SUCCESSFUL;
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
//printf("read_config_word %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI,
|
||||
// M.x86.R_CX);
|
||||
/*printf("read_config_word %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */
|
||||
/* M.x86.R_CX); */
|
||||
break;
|
||||
case 0xB10A: // read config dword
|
||||
case 0xB10A: /* read config dword */
|
||||
M.x86.R_ECX = mypci_read_cfg_long(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI);
|
||||
M.x86.R_AH = PCIBIOS_SUCCESSFUL;
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
//printf("read_config_long %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI,
|
||||
// M.x86.R_ECX);
|
||||
/*printf("read_config_long %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */
|
||||
/* M.x86.R_ECX); */
|
||||
break;
|
||||
case 0xB10B: // write config byte
|
||||
case 0xB10B: /* write config byte */
|
||||
mypci_write_cfg_byte(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, M.x86.R_CL);
|
||||
M.x86.R_AH = PCIBIOS_SUCCESSFUL;
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
//printf("write_config_byte %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI,
|
||||
// M.x86.R_CL);
|
||||
/*printf("write_config_byte %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */
|
||||
/* M.x86.R_CL); */
|
||||
break;
|
||||
case 0xB10C: // write config word
|
||||
case 0xB10C: /* write config word */
|
||||
mypci_write_cfg_word(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, M.x86.R_CX);
|
||||
M.x86.R_AH = PCIBIOS_SUCCESSFUL;
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
//printf("write_config_word %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI,
|
||||
// M.x86.R_CX);
|
||||
/*printf("write_config_word %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */
|
||||
/* M.x86.R_CX); */
|
||||
break;
|
||||
case 0xB10D: // write config dword
|
||||
case 0xB10D: /* write config dword */
|
||||
mypci_write_cfg_long(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, M.x86.R_ECX);
|
||||
M.x86.R_AH = PCIBIOS_SUCCESSFUL;
|
||||
CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);
|
||||
//printf("write_config_long %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI,
|
||||
// M.x86.R_ECX);
|
||||
/*printf("write_config_long %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */
|
||||
/* M.x86.R_ECX); */
|
||||
break;
|
||||
default:
|
||||
PRINTF("BIOS int %xh: Unknown function AX=%04xh\n", intno, M.x86.R_AX);
|
||||
@@ -252,14 +252,14 @@ unsigned char setup_bw[] =
|
||||
|
||||
unsigned char * setup_modes[] =
|
||||
{
|
||||
setup_40x25, // mode 0: 40x25 bw text
|
||||
setup_40x25, // mode 1: 40x25 col text
|
||||
setup_80x25, // mode 2: 80x25 bw text
|
||||
setup_80x25, // mode 3: 80x25 col text
|
||||
setup_graphics, // mode 4: 320x200 col graphics
|
||||
setup_graphics, // mode 5: 320x200 bw graphics
|
||||
setup_graphics, // mode 6: 640x200 bw graphics
|
||||
setup_bw // mode 7: 80x25 mono text
|
||||
setup_40x25, /* mode 0: 40x25 bw text */
|
||||
setup_40x25, /* mode 1: 40x25 col text */
|
||||
setup_80x25, /* mode 2: 80x25 bw text */
|
||||
setup_80x25, /* mode 3: 80x25 col text */
|
||||
setup_graphics, /* mode 4: 320x200 col graphics */
|
||||
setup_graphics, /* mode 5: 320x200 bw graphics */
|
||||
setup_graphics, /* mode 6: 640x200 bw graphics */
|
||||
setup_bw /* mode 7: 80x25 mono text */
|
||||
};
|
||||
|
||||
unsigned int setup_cols[] =
|
||||
@@ -280,13 +280,13 @@ unsigned int setup_bufsize[] =
|
||||
void bios_set_mode(int mode)
|
||||
{
|
||||
int i;
|
||||
unsigned char mode_set = setup_modesets[mode]; // Control register value
|
||||
unsigned char *setup_regs = setup_modes[mode]; // Register 3D4 Array
|
||||
unsigned char mode_set = setup_modesets[mode]; /* Control register value */
|
||||
unsigned char *setup_regs = setup_modes[mode]; /* Register 3D4 Array */
|
||||
|
||||
// Switch video off
|
||||
/* Switch video off */
|
||||
out_byte(0x3D8, mode_set & 0x37);
|
||||
|
||||
// Set up parameters at 3D4h
|
||||
/* Set up parameters at 3D4h */
|
||||
for (i=0; i<16; i++)
|
||||
{
|
||||
out_byte(0x3D4, (unsigned char)i);
|
||||
@@ -294,10 +294,10 @@ void bios_set_mode(int mode)
|
||||
setup_regs++;
|
||||
}
|
||||
|
||||
// Enable video
|
||||
/* Enable video */
|
||||
out_byte(0x3D8, mode_set);
|
||||
|
||||
// Set overscan
|
||||
/* Set overscan */
|
||||
if (mode == 6) out_byte(0x3D9, 0x3F);
|
||||
else out_byte(0x3D9, 0x30);
|
||||
}
|
||||
|
||||
@@ -401,7 +401,7 @@ int find_image(u32 rom_address, u32 rom_size, void **image, u32 *image_size)
|
||||
{
|
||||
int i = 0;
|
||||
unsigned char *rom = (unsigned char *)rom_address;
|
||||
/* if (*rom != 0x55 || *(rom+1) != 0xAA) return 0; // No bios rom this is, yes. */
|
||||
/* if (*rom != 0x55 || *(rom+1) != 0xAA) return 0; /* No bios rom this is, yes. */ */
|
||||
|
||||
for (;;)
|
||||
{
|
||||
@@ -479,7 +479,6 @@ void show_bat_mapping(void)
|
||||
}
|
||||
|
||||
|
||||
|
||||
void remove_init_data(void)
|
||||
{
|
||||
char *s;
|
||||
|
||||
@@ -152,4 +152,3 @@ void PMAPI BE_exit(void);
|
||||
#endif
|
||||
|
||||
#endif /* __BIOSEMU_H */
|
||||
|
||||
|
||||
@@ -411,4 +411,3 @@ ulong _ASMAPI PCIBIOS_getEntry(void);
|
||||
#endif
|
||||
|
||||
#endif /* __PCILIB_H */
|
||||
|
||||
|
||||
@@ -164,4 +164,3 @@ typedef enum {
|
||||
#endif /* !__OS2__ */
|
||||
|
||||
#endif /* __PMHELP_H */
|
||||
|
||||
|
||||
@@ -73,4 +73,3 @@ PMHELP_CTL_CODE(GASETLOCALPATH ,0x002D),
|
||||
PMHELP_CTL_CODE(GAGETEXPORTS ,0x002E),
|
||||
PMHELP_CTL_CODE(GATHUNK ,0x002F),
|
||||
PMHELP_CTL_CODE(SETNUCLEUSPATH ,0x0030),
|
||||
|
||||
|
||||
@@ -1146,4 +1146,3 @@ int PMAPI PM_int386x(int intno, PMREGS *in, PMREGS *out,PMSREGS *sregs);
|
||||
#endif
|
||||
|
||||
#endif /* __PMAPI_H */
|
||||
|
||||
|
||||
@@ -191,4 +191,3 @@ PM_imports _VARAPI _PM_imports = {
|
||||
NULL,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __cplusplus
|
||||
// G++ currently fucks this up!
|
||||
/* G++ currently fucks this up! */
|
||||
#define __cdecl
|
||||
#define __stdcall
|
||||
#else
|
||||
@@ -636,10 +636,10 @@ void _ASMAPI DebugVxD(void);
|
||||
/* Get rid of some helaciously annoying Visual C++ warnings! */
|
||||
|
||||
#if defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__SC__)
|
||||
#pragma warning(disable:4761) // integral size mismatch in argument; conversion supplied
|
||||
#pragma warning(disable:4244) // conversion from 'unsigned short ' to 'unsigned char ', possible loss of data
|
||||
#pragma warning(disable:4018) // '<' : signed/unsigned mismatch
|
||||
#pragma warning(disable:4305) // 'initializing' : truncation from 'const double' to 'float'
|
||||
#pragma warning(disable:4761) /* integral size mismatch in argument; conversion supplied */
|
||||
#pragma warning(disable:4244) /* conversion from 'unsigned short ' to 'unsigned char ', possible loss of data */
|
||||
#pragma warning(disable:4018) /* '<' : signed/unsigned mismatch */
|
||||
#pragma warning(disable:4305) /* 'initializing' : truncation from 'const double' to 'float' */
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
|
||||
@@ -322,7 +322,7 @@ extern X86EMU_sysEnv _X86EMU_env;
|
||||
|
||||
/* Function to log information at runtime */
|
||||
|
||||
//void printk(const char *fmt, ...);
|
||||
/*void printk(const char *fmt, ...); */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* End of "C" linkage for C++ */
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
This file is just to ensure that the directory is created.
|
||||
@@ -0,0 +1 @@
|
||||
This file is just to ensure that the directory is created.
|
||||
@@ -178,4 +178,3 @@ ASFLAGS += -d__SNAP__
|
||||
# Include file dependencies
|
||||
|
||||
.INCLUDE .IGNORE: "makefile.dep"
|
||||
|
||||
|
||||
@@ -178,4 +178,3 @@ PMLIB := -lpm
|
||||
# Define which file contains our rules
|
||||
|
||||
RULES_MAK := gcc_linux.mk
|
||||
|
||||
|
||||
@@ -133,4 +133,3 @@ PMLIB := -lpm
|
||||
# Define which file contains our rules
|
||||
|
||||
RULES_MAK := gcc_win32.mk
|
||||
|
||||
|
||||
@@ -162,4 +162,3 @@ PMLIB := -lpm
|
||||
# Define which file contains our rules
|
||||
|
||||
RULES_MAK := qnx4.mk
|
||||
|
||||
|
||||
@@ -45,4 +45,3 @@ PMLIB :=
|
||||
|
||||
# Implicit rule for building an executable file
|
||||
%$E: ; $(LD) $(LDFLAGS) -o $@ $& $(EXELIBS) $(PMLIB)
|
||||
|
||||
|
||||
@@ -91,4 +91,3 @@ LD := $(LDXX)
|
||||
@$(ECHO) ld $@
|
||||
@$(LD) $(LDFLAGS) -o $@ $& $(EXELIBS) $(PMLIB) -lm
|
||||
.ENDIF
|
||||
|
||||
|
||||
@@ -88,4 +88,3 @@ LD := $(LDXX)
|
||||
@$(ECHO) ld $@
|
||||
@$(LD) $(LDFLAGS) -o $@ @$(mktmp $(&:s/\/\\) $(EXELIBS) $(PMLIB) -lm)
|
||||
.ENDIF
|
||||
|
||||
|
||||
@@ -262,4 +262,3 @@ dllstart.obj: dllstart.asm
|
||||
@$(RM) -S $(mktmp *.lnk)
|
||||
.ENDIF
|
||||
.ENDIF
|
||||
|
||||
|
||||
@@ -159,4 +159,3 @@ __.SILENT := $(.SILENT)
|
||||
|
||||
# We dont use TABS in our makefiles
|
||||
.NOTABS := yes
|
||||
|
||||
|
||||
@@ -351,4 +351,3 @@ LIB_BASE_DIR := $(SCITECH_LIB)\lib\release
|
||||
# Define which file contains our rules
|
||||
|
||||
RULES_MAK := wc32.mk
|
||||
|
||||
|
||||
@@ -431,13 +431,13 @@ BE_exports * _CEXPORT BE_initLibrary(
|
||||
int i,max;
|
||||
ulong *p;
|
||||
|
||||
// Initialize all default imports to point to fatal error handler
|
||||
// for upwards compatibility.
|
||||
/* Initialize all default imports to point to fatal error handler */
|
||||
/* for upwards compatibility. */
|
||||
max = sizeof(_PM_imports)/sizeof(BE_initLibrary_t);
|
||||
for (i = 0,p = (ulong*)&_PM_imports; i < max; i++)
|
||||
*p++ = (ulong)_PM_fatalErrorHandler;
|
||||
|
||||
// Now copy all our imported functions
|
||||
/* Now copy all our imported functions */
|
||||
memcpy(&_PM_imports,pmImp,MIN(sizeof(_PM_imports),pmImp->dwSize));
|
||||
return &_BE_exports;
|
||||
}
|
||||
|
||||
@@ -165,27 +165,27 @@ static void PCI_doBIOSPOST(
|
||||
RMREGS regs;
|
||||
RMSREGS sregs;
|
||||
|
||||
// Determine the value to store in AX for BIOS POST
|
||||
/* Determine the value to store in AX for BIOS POST */
|
||||
regs.x.ax = (u16)(PCI[DeviceIndex[device]].slot.i >> 8);
|
||||
if (useV86) {
|
||||
// Post the BIOS using the PM functions (ie: v86 mode on Linux)
|
||||
/* Post the BIOS using the PM functions (ie: v86 mode on Linux) */
|
||||
if (!PM_doBIOSPOST(regs.x.ax,BIOSPhysAddr,mappedBIOS,BIOSLen)) {
|
||||
// If the PM function fails, this probably means are we are on
|
||||
// DOS and can't re-map the real mode 0xC0000 region. In thise
|
||||
// case if the device is the primary, we can use the real
|
||||
// BIOS at 0xC0000 directly.
|
||||
/* If the PM function fails, this probably means are we are on */
|
||||
/* DOS and can't re-map the real mode 0xC0000 region. In thise */
|
||||
/* case if the device is the primary, we can use the real */
|
||||
/* BIOS at 0xC0000 directly. */
|
||||
if (device == 0)
|
||||
PM_doBIOSPOST(regs.x.ax,0xC0000,mappedBIOS,BIOSLen);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Setup the X86 emulator for the VGA BIOS
|
||||
/* Setup the X86 emulator for the VGA BIOS */
|
||||
BE_setVGA(&VGAInfo[device]);
|
||||
|
||||
// Execute the BIOS POST code
|
||||
/* Execute the BIOS POST code */
|
||||
BE_callRealMode(0xC000,0x0003,®s,&sregs);
|
||||
|
||||
// Cleanup and exit
|
||||
/* Cleanup and exit */
|
||||
BE_getVGA(&VGAInfo[device]);
|
||||
}
|
||||
}
|
||||
@@ -206,34 +206,34 @@ static ibool PCI_postControllers(void)
|
||||
char filename[_MAX_PATH];
|
||||
FILE *f;
|
||||
|
||||
// Disable the primary display controller and AGP VGA pass-through
|
||||
/* Disable the primary display controller and AGP VGA pass-through */
|
||||
DISABLE_DEVICE(0);
|
||||
if (AGPBridge)
|
||||
DISABLE_AGP_VGA();
|
||||
|
||||
// Now POST all the secondary controllers
|
||||
/* Now POST all the secondary controllers */
|
||||
for (device = 0; device < NumDevices; device++) {
|
||||
// Skip the device if it is not enabled (probably an ISA device)
|
||||
/* Skip the device if it is not enabled (probably an ISA device) */
|
||||
if (DeviceIndex[device] == -1)
|
||||
continue;
|
||||
|
||||
// Enable secondary display controller. If the secondary controller
|
||||
// is on the AGP bus, then enable VGA resources for the AGP device.
|
||||
/* Enable secondary display controller. If the secondary controller */
|
||||
/* is on the AGP bus, then enable VGA resources for the AGP device. */
|
||||
ENABLE_DEVICE(device);
|
||||
if (AGPBridge && AGPBridge->SecondayBusNumber == PCI[DeviceIndex[device]].slot.p.Bus)
|
||||
ENABLE_AGP_VGA();
|
||||
|
||||
// Check if the controller has already been POST'ed
|
||||
/* Check if the controller has already been POST'ed */
|
||||
if (VGA_NOT_ACTIVE()) {
|
||||
// Find a viable place to map the secondary PCI BIOS image and map it
|
||||
/* Find a viable place to map the secondary PCI BIOS image and map it */
|
||||
printk("Device %d not enabled, so attempting warm boot it\n", device);
|
||||
|
||||
// For AGP devices (and PCI devices that do have the ROM base
|
||||
// address zero'ed out) we have to map the BIOS to a location
|
||||
// that is passed by the AGP bridge to the bus. Some AGP devices
|
||||
// have the ROM base address already set up for us, and some
|
||||
// do not (we map to one of the existing BAR locations in
|
||||
// this case).
|
||||
/* For AGP devices (and PCI devices that do have the ROM base */
|
||||
/* address zero'ed out) we have to map the BIOS to a location */
|
||||
/* that is passed by the AGP bridge to the bus. Some AGP devices */
|
||||
/* have the ROM base address already set up for us, and some */
|
||||
/* do not (we map to one of the existing BAR locations in */
|
||||
/* this case). */
|
||||
mappedBIOS = NULL;
|
||||
if (PCI[DeviceIndex[device]].ROMBaseAddress != 0)
|
||||
mappedBIOSPhys = PCI[DeviceIndex[device]].ROMBaseAddress & ~0xF;
|
||||
@@ -248,26 +248,26 @@ static ibool PCI_postControllers(void)
|
||||
memcpy(copyOfBIOS,mappedBIOS,BIOSImageLen);
|
||||
PM_freePhysicalAddr(mappedBIOS,MAX_BIOSLEN-1);
|
||||
|
||||
// Allocate memory to store copy of BIOS from secondary controllers
|
||||
/* Allocate memory to store copy of BIOS from secondary controllers */
|
||||
VGAInfo[device].pciInfo = &PCI[DeviceIndex[device]];
|
||||
VGAInfo[device].BIOSImage = copyOfBIOS;
|
||||
VGAInfo[device].BIOSImageLen = BIOSImageLen;
|
||||
|
||||
// Restore device mappings
|
||||
/* Restore device mappings */
|
||||
PCI_writePCIRegL(0x30,PCI[DeviceIndex[device]].ROMBaseAddress,device);
|
||||
PCI_writePCIRegL(0x10,PCI[DeviceIndex[device]].BaseAddress10,device);
|
||||
PCI_writePCIRegL(0x14,PCI[DeviceIndex[device]].BaseAddress14,device);
|
||||
|
||||
// Now execute the BIOS POST for the device
|
||||
/* Now execute the BIOS POST for the device */
|
||||
if (copyOfBIOS[0] == 0x55 && copyOfBIOS[1] == 0xAA) {
|
||||
printk("Executing BIOS POST for controller.\n");
|
||||
PCI_doBIOSPOST(device,mappedBIOSPhys,copyOfBIOS,BIOSImageLen);
|
||||
}
|
||||
|
||||
// Reset the size of the BIOS image to the final size
|
||||
/* Reset the size of the BIOS image to the final size */
|
||||
VGAInfo[device].BIOSImageLen = FINAL_BIOSLEN;
|
||||
|
||||
// Save the BIOS and interrupt vector information to disk
|
||||
/* Save the BIOS and interrupt vector information to disk */
|
||||
sprintf(filename,"%s/bios.%02d",PM_getNucleusConfigPath(),device);
|
||||
if ((f = fopen(filename,"wb")) != NULL) {
|
||||
fwrite(copyOfBIOS,1,FINAL_BIOSLEN,f);
|
||||
@@ -276,14 +276,14 @@ static ibool PCI_postControllers(void)
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Allocate memory to store copy of BIOS from secondary controllers
|
||||
/* Allocate memory to store copy of BIOS from secondary controllers */
|
||||
if ((copyOfBIOS = malloc(FINAL_BIOSLEN)) == NULL)
|
||||
return false;
|
||||
VGAInfo[device].pciInfo = &PCI[DeviceIndex[device]];
|
||||
VGAInfo[device].BIOSImage = copyOfBIOS;
|
||||
VGAInfo[device].BIOSImageLen = FINAL_BIOSLEN;
|
||||
|
||||
// Load the BIOS and interrupt vector information from disk
|
||||
/* Load the BIOS and interrupt vector information from disk */
|
||||
sprintf(filename,"%s/bios.%02d",PM_getNucleusConfigPath(),device);
|
||||
if ((f = fopen(filename,"rb")) != NULL) {
|
||||
fread(copyOfBIOS,1,FINAL_BIOSLEN,f);
|
||||
@@ -292,25 +292,25 @@ static ibool PCI_postControllers(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Fix up all the secondary PCI base address registers
|
||||
// (restores them all from the values we read previously)
|
||||
/* Fix up all the secondary PCI base address registers */
|
||||
/* (restores them all from the values we read previously) */
|
||||
_PCI_fixupSecondaryBARs();
|
||||
|
||||
// Disable the secondary controller and AGP VGA pass-through
|
||||
/* Disable the secondary controller and AGP VGA pass-through */
|
||||
DISABLE_DEVICE(device);
|
||||
if (AGPBridge)
|
||||
DISABLE_AGP_VGA();
|
||||
}
|
||||
|
||||
// Reenable primary display controller and reset AGP bridge control
|
||||
/* Reenable primary display controller and reset AGP bridge control */
|
||||
if (AGPBridge)
|
||||
RESTORE_AGP_VGA();
|
||||
ENABLE_DEVICE(0);
|
||||
|
||||
// Free physical BIOS image mapping
|
||||
/* Free physical BIOS image mapping */
|
||||
PM_freePhysicalAddr(mappedBIOS,MAX_BIOSLEN-1);
|
||||
|
||||
// Restore the X86 emulator BIOS info to primary controller
|
||||
/* Restore the X86 emulator BIOS info to primary controller */
|
||||
if (!useV86)
|
||||
BE_setVGA(&VGAInfo[0]);
|
||||
return true;
|
||||
@@ -460,15 +460,15 @@ static int PCI_enumerateDevices(void)
|
||||
int i,j;
|
||||
PCIBridgeInfo *info;
|
||||
|
||||
// If this is the first time we have been called, enumerate all
|
||||
// devices on the PCI bus.
|
||||
/* If this is the first time we have been called, enumerate all */
|
||||
/* devices on the PCI bus. */
|
||||
if (NumPCI == -1) {
|
||||
for (i = 0; i < MAX_PCI_DEVICES; i++)
|
||||
PCI[i].dwSize = sizeof(PCI[i]);
|
||||
if ((NumPCI = PCI_enumerate(PCI,MAX_PCI_DEVICES)) == 0)
|
||||
return -1;
|
||||
|
||||
// Build a list of all PCI bridge devices
|
||||
/* Build a list of all PCI bridge devices */
|
||||
for (i = 0,NumBridges = 0,BridgeIndex[0] = -1; i < NumPCI; i++) {
|
||||
if (PCI[i].BaseClass == PCI_BRIDGE_CLASS) {
|
||||
if (NumBridges < MAX_PCI_DEVICES)
|
||||
@@ -476,7 +476,7 @@ static int PCI_enumerateDevices(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Now build a list of all display class devices
|
||||
/* Now build a list of all display class devices */
|
||||
for (i = 0,NumDevices = 1,DeviceIndex[0] = -1; i < NumPCI; i++) {
|
||||
if (PCI_IS_DISPLAY_CLASS(&PCI[i])) {
|
||||
if ((PCI[i].Command & 0x3) == 0x3) {
|
||||
@@ -487,10 +487,10 @@ static int PCI_enumerateDevices(void)
|
||||
DeviceIndex[NumDevices++] = i;
|
||||
}
|
||||
if (PCI[i].slot.p.Bus != 0) {
|
||||
// This device is on a different bus than the primary
|
||||
// PCI bus, so it is probably an AGP device. Find the
|
||||
// AGP bus device that controls that bus so we can
|
||||
// control it.
|
||||
/* This device is on a different bus than the primary */
|
||||
/* PCI bus, so it is probably an AGP device. Find the */
|
||||
/* AGP bus device that controls that bus so we can */
|
||||
/* control it. */
|
||||
for (j = 0; j < NumBridges; j++) {
|
||||
info = (PCIBridgeInfo*)&PCI[BridgeIndex[j]];
|
||||
if (info->SecondayBusNumber == PCI[i].slot.p.Bus) {
|
||||
@@ -502,7 +502,7 @@ static int PCI_enumerateDevices(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Enumerate all PCI and bridge devices to log file
|
||||
/* Enumerate all PCI and bridge devices to log file */
|
||||
EnumeratePCI();
|
||||
}
|
||||
return NumDevices;
|
||||
@@ -548,20 +548,20 @@ int main(int argc,char *argv[])
|
||||
|
||||
PM_init();
|
||||
if (!useV86) {
|
||||
// Initialise the x86 BIOS emulator
|
||||
/* Initialise the x86 BIOS emulator */
|
||||
BE_init(false,debugFlags,65536,&VGAInfo[0]);
|
||||
}
|
||||
|
||||
// Enumerate all devices (which POST's them at the same time)
|
||||
/* Enumerate all devices (which POST's them at the same time) */
|
||||
if (PCI_enumerateDevices() < 1) {
|
||||
printk("No PCI display devices found!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Post all the display controller BIOS'es
|
||||
/* Post all the display controller BIOS'es */
|
||||
PCI_postControllers();
|
||||
|
||||
// Cleanup and exit the emulator
|
||||
/* Cleanup and exit the emulator */
|
||||
if (!useV86)
|
||||
BE_exit();
|
||||
fclose(logfile);
|
||||
|
||||
@@ -197,8 +197,8 @@ void NAPI _OS_delay(
|
||||
|
||||
if (!inited) {
|
||||
#ifndef __WIN32_VXD__
|
||||
// This has been causing problems in VxD's for some reason, so for now
|
||||
// we avoid using it.
|
||||
/* This has been causing problems in VxD's for some reason, so for now */
|
||||
/* we avoid using it. */
|
||||
if (_GA_haveCPUID() && (_GA_getCPUIDFeatures() & CPU_HaveRDTSC) != 0) {
|
||||
ZTimerInit();
|
||||
haveRDTSC = true;
|
||||
@@ -217,4 +217,3 @@ void NAPI _OS_delay(
|
||||
else
|
||||
_OS_delay8253(microSeconds);
|
||||
}
|
||||
|
||||
|
||||
@@ -120,4 +120,3 @@ void _EXPORT CenterLogo(HWND hWndLogo, HWND hWndParent, int CenterY)
|
||||
(RectCenter.right - RectCenter.left),
|
||||
(RectCenter.bottom - RectCenter.top), false);
|
||||
}
|
||||
|
||||
|
||||
@@ -70,10 +70,10 @@ library is used with the application local version of Nucleus.
|
||||
****************************************************************************/
|
||||
PM_imports * NAPI GA_getSystemPMImports(void)
|
||||
{
|
||||
// TODO: We may very well want to provide a system shared library
|
||||
// that eports the PM functions required by the Nucleus library
|
||||
// for BeOS here. That will eliminate fatal errors loading new
|
||||
// drivers on BeOS!
|
||||
/* TODO: We may very well want to provide a system shared library */
|
||||
/* that eports the PM functions required by the Nucleus library */
|
||||
/* for BeOS here. That will eliminate fatal errors loading new */
|
||||
/* drivers on BeOS! */
|
||||
return &_PM_imports;
|
||||
}
|
||||
|
||||
|
||||
@@ -133,4 +133,3 @@ void NAPI GA_TimerRead(
|
||||
{
|
||||
_GA_readTimeStamp(value);
|
||||
}
|
||||
|
||||
|
||||
@@ -266,4 +266,3 @@ N_uint32 * NAPI GA_getLicensedDevices(ibool shared)
|
||||
return __GA_exports.GA_getLicensedDevices(shared);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -72,10 +72,10 @@ library is used with the application local version of Nucleus.
|
||||
****************************************************************************/
|
||||
PM_imports * NAPI GA_getSystemPMImports(void)
|
||||
{
|
||||
// TODO: We may very well want to provide a system shared library
|
||||
// that eports the PM functions required by the Nucleus library
|
||||
// for Linux here. That will eliminate fatal errors loading new
|
||||
// drivers on Linux!
|
||||
/* TODO: We may very well want to provide a system shared library */
|
||||
/* that eports the PM functions required by the Nucleus library */
|
||||
/* for Linux here. That will eliminate fatal errors loading new */
|
||||
/* drivers on Linux! */
|
||||
return &_PM_imports;
|
||||
}
|
||||
|
||||
|
||||
@@ -134,4 +134,3 @@ void NAPI GA_TimerRead(
|
||||
else
|
||||
KeQuerySystemTime((LARGE_INTEGER*)value);
|
||||
}
|
||||
|
||||
|
||||
@@ -72,10 +72,10 @@ library is used with the application local version of Nucleus.
|
||||
****************************************************************************/
|
||||
PM_imports * NAPI GA_getSystemPMImports(void)
|
||||
{
|
||||
// TODO: We may very well want to provide a system shared library
|
||||
// that eports the PM functions required by the Nucleus library
|
||||
// for QNX here. That will eliminate fatal errors loading new
|
||||
// drivers on QNX!
|
||||
/* TODO: We may very well want to provide a system shared library */
|
||||
/* that eports the PM functions required by the Nucleus library */
|
||||
/* for QNX here. That will eliminate fatal errors loading new */
|
||||
/* drivers on QNX! */
|
||||
return &_PM_imports;
|
||||
}
|
||||
|
||||
|
||||
@@ -134,4 +134,3 @@ void NAPI GA_TimerRead(
|
||||
else
|
||||
VTD_Get_Real_Time(&value->high,&value->low);
|
||||
}
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ ibool NAPI GA_queryFunctions(
|
||||
static ibool (NAPIP _GA_queryFunctions)(GA_devCtx *dc,N_uint32 id,void _FAR_ *funcs) = NULL;
|
||||
|
||||
if (useRing0Driver) {
|
||||
// Call the version in nga_w32.dll if it is loaded
|
||||
/* Call the version in nga_w32.dll if it is loaded */
|
||||
if (!_GA_queryFunctions) {
|
||||
if ((_GA_queryFunctions = (void*)GetProcAddress(hModDLL,"_GA_queryFunctions")) == NULL)
|
||||
if ((_GA_queryFunctions = (void*)GetProcAddress(hModDLL,"__GA_queryFunctions")) == NULL)
|
||||
@@ -211,7 +211,7 @@ ibool NAPI REF2D_queryFunctions(
|
||||
static ibool (NAPIP _REF2D_queryFunctions)(REF2D_driver *ref2d,N_uint32 id,void _FAR_ *funcs) = NULL;
|
||||
|
||||
if (useRing0Driver) {
|
||||
// Call the version in nga_w32.dll if it is loaded
|
||||
/* Call the version in nga_w32.dll if it is loaded */
|
||||
if (!_REF2D_queryFunctions) {
|
||||
if ((_REF2D_queryFunctions = (void*)GetProcAddress(hModDLL,"_REF2D_queryFunctions")) == NULL)
|
||||
if ((_REF2D_queryFunctions = (void*)GetProcAddress(hModDLL,"__REF2D_queryFunctions")) == NULL)
|
||||
@@ -253,4 +253,3 @@ void NAPI GA_TimerRead(
|
||||
else
|
||||
QueryPerformanceCounter((LARGE_INTEGER*)value);
|
||||
}
|
||||
|
||||
|
||||
@@ -444,7 +444,7 @@ int _CDECL stub_isatty(int _fildes)
|
||||
|
||||
int _CDECL stub_unlink(const char *_path)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -454,7 +454,7 @@ int _CDECL stub_remove(const char *_filename)
|
||||
|
||||
int _CDECL stub_rename(const char *_old, const char *_new)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -825,4 +825,3 @@ void * _CDECL stub_signal(int sig, void *handler)
|
||||
return (void*)signal(sig,(__code_ptr)handler);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -584,4 +584,3 @@ int PEAPI PE_getError(void)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -64,8 +64,8 @@ Initialise the counter and return the frequency of the counter.
|
||||
static void GetCounterFrequency(
|
||||
CPU_largeInteger *freq)
|
||||
{
|
||||
// TODO: Return the frequency of the counter in here. You should try to
|
||||
// normalise this value to be around 100,000 ticks per second.
|
||||
/* TODO: Return the frequency of the counter in here. You should try to */
|
||||
/* normalise this value to be around 100,000 ticks per second. */
|
||||
freq->low = 1000000;
|
||||
freq->high = 0;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ events.
|
||||
****************************************************************************/
|
||||
ulong _EVT_getTicks(void)
|
||||
{
|
||||
// TODO: Implement this for your OS!
|
||||
/* TODO: Implement this for your OS! */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -68,36 +68,36 @@ Pumps all messages in the application message queue into our event queue.
|
||||
****************************************************************************/
|
||||
static void _EVT_pumpMessages(void)
|
||||
{
|
||||
// TODO: The purpose of this function is to read all keyboard and mouse
|
||||
// events from the OS specific event queue, translate them and post
|
||||
// them into the SciTech event queue.
|
||||
//
|
||||
// NOTE: There are a couple of important things that this function must
|
||||
// take care of:
|
||||
//
|
||||
// 1. Support for KEYDOWN, KEYREPEAT and KEYUP is required.
|
||||
//
|
||||
// 2. Support for reading hardware scan code as well as ASCII
|
||||
// translated values is required. Games use the scan codes rather
|
||||
// than ASCII values. Scan codes go into the high order byte of the
|
||||
// keyboard message field.
|
||||
//
|
||||
// 3. Support for at least reading mouse motion data (mickeys) from the
|
||||
// mouse is required. Using the mickey values, we can then translate
|
||||
// to mouse cursor coordinates scaled to the range of the current
|
||||
// graphics display mode. Mouse values are scaled based on the
|
||||
// global 'rangeX' and 'rangeY'.
|
||||
//
|
||||
// 4. Support for a timestamp for the events is required, which is
|
||||
// defined as the number of milliseconds since some event (usually
|
||||
// system startup). This is the timestamp when the event occurred
|
||||
// (ie: at interrupt time) not when it was stuff into the SciTech
|
||||
// event queue.
|
||||
//
|
||||
// 5. Support for mouse double click events. If the OS has a native
|
||||
// mechanism to determine this, it should be used. Otherwise the
|
||||
// time stamp information will be used by the generic event code
|
||||
// to generate double click events.
|
||||
/* TODO: The purpose of this function is to read all keyboard and mouse */
|
||||
/* events from the OS specific event queue, translate them and post */
|
||||
/* them into the SciTech event queue. */
|
||||
/* */
|
||||
/* NOTE: There are a couple of important things that this function must */
|
||||
/* take care of: */
|
||||
/* */
|
||||
/* 1. Support for KEYDOWN, KEYREPEAT and KEYUP is required. */
|
||||
/* */
|
||||
/* 2. Support for reading hardware scan code as well as ASCII */
|
||||
/* translated values is required. Games use the scan codes rather */
|
||||
/* than ASCII values. Scan codes go into the high order byte of the */
|
||||
/* keyboard message field. */
|
||||
/* */
|
||||
/* 3. Support for at least reading mouse motion data (mickeys) from the */
|
||||
/* mouse is required. Using the mickey values, we can then translate */
|
||||
/* to mouse cursor coordinates scaled to the range of the current */
|
||||
/* graphics display mode. Mouse values are scaled based on the */
|
||||
/* global 'rangeX' and 'rangeY'. */
|
||||
/* */
|
||||
/* 4. Support for a timestamp for the events is required, which is */
|
||||
/* defined as the number of milliseconds since some event (usually */
|
||||
/* system startup). This is the timestamp when the event occurred */
|
||||
/* (ie: at interrupt time) not when it was stuff into the SciTech */
|
||||
/* event queue. */
|
||||
/* */
|
||||
/* 5. Support for mouse double click events. If the OS has a native */
|
||||
/* mechanism to determine this, it should be used. Otherwise the */
|
||||
/* time stamp information will be used by the generic event code */
|
||||
/* to generate double click events. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -141,7 +141,7 @@ void EVTAPI EVT_init(
|
||||
initEventQueue();
|
||||
memset(keyUpMsg,0,sizeof(keyUpMsg));
|
||||
|
||||
// TODO: Do any OS specific initialisation here
|
||||
/* TODO: Do any OS specific initialisation here */
|
||||
|
||||
/* Catch program termination signals so we can clean up properly */
|
||||
signal(SIGABRT, _EVT_abort);
|
||||
@@ -171,7 +171,7 @@ and this function can be used to resume it again later.
|
||||
****************************************************************************/
|
||||
void EVT_resume(void)
|
||||
{
|
||||
// Do nothing for non DOS systems
|
||||
/* Do nothing for non DOS systems */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -181,7 +181,7 @@ de-install the event handling code.
|
||||
****************************************************************************/
|
||||
void EVT_suspend(void)
|
||||
{
|
||||
// Do nothing for non DOS systems
|
||||
/* Do nothing for non DOS systems */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -195,5 +195,5 @@ void EVT_exit(void)
|
||||
signal(SIGFPE, SIG_DFL);
|
||||
signal(SIGINT, SIG_DFL);
|
||||
|
||||
// TODO: Do any OS specific cleanup in here
|
||||
/* TODO: Do any OS specific cleanup in here */
|
||||
}
|
||||
|
||||
@@ -28,5 +28,5 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
// This is where you include OS specific headers for the event handling
|
||||
// library.
|
||||
/* This is where you include OS specific headers for the event handling */
|
||||
/* library. */
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
// TODO: Include any BeOS specific headers here!
|
||||
/* TODO: Include any BeOS specific headers here! */
|
||||
|
||||
/*--------------------------- Global variables ----------------------------*/
|
||||
|
||||
@@ -48,12 +48,12 @@ static void (PMAPIP fatalErrorCleanup)(void) = NULL;
|
||||
|
||||
void PMAPI PM_init(void)
|
||||
{
|
||||
// TODO: Do any initialisation in here. This includes getting IOPL
|
||||
// access for the process calling PM_init. This will get called
|
||||
// more than once.
|
||||
/* TODO: Do any initialisation in here. This includes getting IOPL */
|
||||
/* access for the process calling PM_init. This will get called */
|
||||
/* more than once. */
|
||||
|
||||
// TODO: If you support the supplied MTRR register stuff (you need to
|
||||
// be at ring 0 for this!), you should initialise it in here.
|
||||
/* TODO: If you support the supplied MTRR register stuff (you need to */
|
||||
/* be at ring 0 for this!), you should initialise it in here. */
|
||||
|
||||
/* MTRR_init(); */
|
||||
}
|
||||
@@ -81,9 +81,9 @@ void PMAPI PM_setFatalErrorCleanup(
|
||||
|
||||
void PMAPI PM_fatalError(const char *msg)
|
||||
{
|
||||
// TODO: If you are running in a GUI environment without a console,
|
||||
// this needs to be changed to bring up a fatal error message
|
||||
// box and terminate the program.
|
||||
/* TODO: If you are running in a GUI environment without a console, */
|
||||
/* this needs to be changed to bring up a fatal error message */
|
||||
/* box and terminate the program. */
|
||||
if (fatalErrorCleanup)
|
||||
fatalErrorCleanup();
|
||||
fprintf(stderr,"%s\n", msg);
|
||||
@@ -92,101 +92,101 @@ void PMAPI PM_fatalError(const char *msg)
|
||||
|
||||
void * PMAPI PM_getVESABuf(uint *len,uint *rseg,uint *roff)
|
||||
{
|
||||
// No BIOS access for the BeOS
|
||||
/* No BIOS access for the BeOS */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int PMAPI PM_kbhit(void)
|
||||
{
|
||||
// TODO: This function checks if a key is available to be read. This
|
||||
// should be implemented, but is mostly used by the test programs
|
||||
// these days.
|
||||
/* TODO: This function checks if a key is available to be read. This */
|
||||
/* should be implemented, but is mostly used by the test programs */
|
||||
/* these days. */
|
||||
return true;
|
||||
}
|
||||
|
||||
int PMAPI PM_getch(void)
|
||||
{
|
||||
// TODO: This returns the ASCII code of the key pressed. This
|
||||
// should be implemented, but is mostly used by the test programs
|
||||
// these days.
|
||||
/* TODO: This returns the ASCII code of the key pressed. This */
|
||||
/* should be implemented, but is mostly used by the test programs */
|
||||
/* these days. */
|
||||
return 0xD;
|
||||
}
|
||||
|
||||
int PMAPI PM_openConsole(void)
|
||||
{
|
||||
// TODO: Opens up a fullscreen console for graphics output. If your
|
||||
// console does not have graphics/text modes, this can be left
|
||||
// empty. The main purpose of this is to disable console switching
|
||||
// when in graphics modes if you can switch away from fullscreen
|
||||
// consoles (if you want to allow switching, this can be done
|
||||
// elsewhere with a full save/restore state of the graphics mode).
|
||||
/* TODO: Opens up a fullscreen console for graphics output. If your */
|
||||
/* console does not have graphics/text modes, this can be left */
|
||||
/* empty. The main purpose of this is to disable console switching */
|
||||
/* when in graphics modes if you can switch away from fullscreen */
|
||||
/* consoles (if you want to allow switching, this can be done */
|
||||
/* elsewhere with a full save/restore state of the graphics mode). */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int PMAPI PM_getConsoleStateSize(void)
|
||||
{
|
||||
// TODO: Returns the size of the console state buffer used to save the
|
||||
// state of the console before going into graphics mode. This is
|
||||
// used to restore the console back to normal when we are done.
|
||||
/* TODO: Returns the size of the console state buffer used to save the */
|
||||
/* state of the console before going into graphics mode. This is */
|
||||
/* used to restore the console back to normal when we are done. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
void PMAPI PM_saveConsoleState(void *stateBuf,int console_id)
|
||||
{
|
||||
// TODO: Saves the state of the console into the state buffer. This is
|
||||
// used to restore the console back to normal when we are done.
|
||||
// We will always restore 80x25 text mode after being in graphics
|
||||
// mode, so if restoring text mode is all you need to do this can
|
||||
// be left empty.
|
||||
/* TODO: Saves the state of the console into the state buffer. This is */
|
||||
/* used to restore the console back to normal when we are done. */
|
||||
/* We will always restore 80x25 text mode after being in graphics */
|
||||
/* mode, so if restoring text mode is all you need to do this can */
|
||||
/* be left empty. */
|
||||
}
|
||||
|
||||
void PMAPI PM_restoreConsoleState(const void *stateBuf,int console_id)
|
||||
{
|
||||
// TODO: Restore the state of the console from the state buffer. This is
|
||||
// used to restore the console back to normal when we are done.
|
||||
// We will always restore 80x25 text mode after being in graphics
|
||||
// mode, so if restoring text mode is all you need to do this can
|
||||
// be left empty.
|
||||
/* TODO: Restore the state of the console from the state buffer. This is */
|
||||
/* used to restore the console back to normal when we are done. */
|
||||
/* We will always restore 80x25 text mode after being in graphics */
|
||||
/* mode, so if restoring text mode is all you need to do this can */
|
||||
/* be left empty. */
|
||||
}
|
||||
|
||||
void PMAPI PM_closeConsole(int console_id)
|
||||
{
|
||||
// TODO: Close the console when we are done, going back to text mode.
|
||||
/* TODO: Close the console when we are done, going back to text mode. */
|
||||
}
|
||||
|
||||
void PM_setOSCursorLocation(int x,int y)
|
||||
{
|
||||
// TODO: Set the OS console cursor location to the new value. This is
|
||||
// generally used for new OS ports (used mostly for DOS).
|
||||
/* TODO: Set the OS console cursor location to the new value. This is */
|
||||
/* generally used for new OS ports (used mostly for DOS). */
|
||||
}
|
||||
|
||||
void PM_setOSScreenWidth(int width,int height)
|
||||
{
|
||||
// TODO: Set the OS console screen width. This is generally unused for
|
||||
// new OS ports.
|
||||
/* TODO: Set the OS console screen width. This is generally unused for */
|
||||
/* new OS ports. */
|
||||
}
|
||||
|
||||
ibool PMAPI PM_setRealTimeClockHandler(PM_intHandler ih, int frequency)
|
||||
{
|
||||
// TODO: Install a real time clock interrupt handler. Normally this
|
||||
// will not be supported from most OS'es in user land, so an
|
||||
// alternative mechanism is needed to enable software stereo.
|
||||
// Hence leave this unimplemented unless you have a high priority
|
||||
// mechanism to call the 32-bit callback when the real time clock
|
||||
// interrupt fires.
|
||||
/* TODO: Install a real time clock interrupt handler. Normally this */
|
||||
/* will not be supported from most OS'es in user land, so an */
|
||||
/* alternative mechanism is needed to enable software stereo. */
|
||||
/* Hence leave this unimplemented unless you have a high priority */
|
||||
/* mechanism to call the 32-bit callback when the real time clock */
|
||||
/* interrupt fires. */
|
||||
return false;
|
||||
}
|
||||
|
||||
void PMAPI PM_setRealTimeClockFrequency(int frequency)
|
||||
{
|
||||
// TODO: Set the real time clock interrupt frequency. Used for stereo
|
||||
// LC shutter glasses when doing software stereo. Usually sets
|
||||
// the frequency to around 2048 Hz.
|
||||
/* TODO: Set the real time clock interrupt frequency. Used for stereo */
|
||||
/* LC shutter glasses when doing software stereo. Usually sets */
|
||||
/* the frequency to around 2048 Hz. */
|
||||
}
|
||||
|
||||
void PMAPI PM_restoreRealTimeClockHandler(void)
|
||||
{
|
||||
// TODO: Restores the real time clock handler.
|
||||
/* TODO: Restores the real time clock handler. */
|
||||
}
|
||||
|
||||
char * PMAPI PM_getCurrentPath(
|
||||
@@ -219,8 +219,8 @@ const char * PMAPI PM_getNucleusConfigPath(void)
|
||||
|
||||
const char * PMAPI PM_getUniqueID(void)
|
||||
{
|
||||
// TODO: Return a unique ID for the machine. If a unique ID is not
|
||||
// available, return the machine name.
|
||||
/* TODO: Return a unique ID for the machine. If a unique ID is not */
|
||||
/* available, return the machine name. */
|
||||
static char buf[128];
|
||||
gethostname(buf, 128);
|
||||
return buf;
|
||||
@@ -228,7 +228,7 @@ const char * PMAPI PM_getUniqueID(void)
|
||||
|
||||
const char * PMAPI PM_getMachineName(void)
|
||||
{
|
||||
// TODO: Return the network machine name for the machine.
|
||||
/* TODO: Return the network machine name for the machine. */
|
||||
static char buf[128];
|
||||
gethostname(buf, 128);
|
||||
return buf;
|
||||
@@ -236,7 +236,7 @@ const char * PMAPI PM_getMachineName(void)
|
||||
|
||||
void * PMAPI PM_getBIOSPointer(void)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -250,49 +250,49 @@ void * PMAPI PM_getA0000Pointer(void)
|
||||
|
||||
void * PMAPI PM_mapPhysicalAddr(ulong base,ulong limit,ibool isCached)
|
||||
{
|
||||
// TODO: This function maps a physical memory address to a linear
|
||||
// address in the address space of the calling process.
|
||||
/* TODO: This function maps a physical memory address to a linear */
|
||||
/* address in the address space of the calling process. */
|
||||
|
||||
// NOTE: This function *must* be able to handle any phsyical base
|
||||
// address, and hence you will have to handle rounding of
|
||||
// the physical base address to a page boundary (ie: 4Kb on
|
||||
// x86 CPU's) to be able to properly map in the memory
|
||||
// region.
|
||||
/* NOTE: This function *must* be able to handle any phsyical base */
|
||||
/* address, and hence you will have to handle rounding of */
|
||||
/* the physical base address to a page boundary (ie: 4Kb on */
|
||||
/* x86 CPU's) to be able to properly map in the memory */
|
||||
/* region. */
|
||||
|
||||
// NOTE: If possible the isCached bit should be used to ensure that
|
||||
// the PCD (Page Cache Disable) and PWT (Page Write Through)
|
||||
// bits are set to disable caching for a memory mapping used
|
||||
// for MMIO register access. We also disable caching using
|
||||
// the MTRR registers for Pentium Pro and later chipsets so if
|
||||
// MTRR support is enabled for your OS then you can safely ignore
|
||||
// the isCached flag and always enable caching in the page
|
||||
// tables.
|
||||
/* NOTE: If possible the isCached bit should be used to ensure that */
|
||||
/* the PCD (Page Cache Disable) and PWT (Page Write Through) */
|
||||
/* bits are set to disable caching for a memory mapping used */
|
||||
/* for MMIO register access. We also disable caching using */
|
||||
/* the MTRR registers for Pentium Pro and later chipsets so if */
|
||||
/* MTRR support is enabled for your OS then you can safely ignore */
|
||||
/* the isCached flag and always enable caching in the page */
|
||||
/* tables. */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void PMAPI PM_freePhysicalAddr(void *ptr,ulong limit)
|
||||
{
|
||||
// TODO: This function will free a physical memory mapping previously
|
||||
// allocated with PM_mapPhysicalAddr() if at all possible. If
|
||||
// you can't free physical memory mappings, simply do nothing.
|
||||
/* TODO: This function will free a physical memory mapping previously */
|
||||
/* allocated with PM_mapPhysicalAddr() if at all possible. If */
|
||||
/* you can't free physical memory mappings, simply do nothing. */
|
||||
}
|
||||
|
||||
ulong PMAPI PM_getPhysicalAddr(void *p)
|
||||
{
|
||||
// TODO: This function should find the physical address of a linear
|
||||
// address.
|
||||
/* TODO: This function should find the physical address of a linear */
|
||||
/* address. */
|
||||
return 0xFFFFFFFFUL;
|
||||
}
|
||||
|
||||
void PMAPI PM_sleep(ulong milliseconds)
|
||||
{
|
||||
// TODO: Put the process to sleep for milliseconds
|
||||
/* TODO: Put the process to sleep for milliseconds */
|
||||
}
|
||||
|
||||
int PMAPI PM_getCOMPort(int port)
|
||||
{
|
||||
// TODO: Re-code this to determine real values using the Plug and Play
|
||||
// manager for the OS.
|
||||
/* TODO: Re-code this to determine real values using the Plug and Play */
|
||||
/* manager for the OS. */
|
||||
switch (port) {
|
||||
case 0: return 0x3F8;
|
||||
case 1: return 0x2F8;
|
||||
@@ -302,8 +302,8 @@ int PMAPI PM_getCOMPort(int port)
|
||||
|
||||
int PMAPI PM_getLPTPort(int port)
|
||||
{
|
||||
// TODO: Re-code this to determine real values using the Plug and Play
|
||||
// manager for the OS.
|
||||
/* TODO: Re-code this to determine real values using the Plug and Play */
|
||||
/* manager for the OS. */
|
||||
switch (port) {
|
||||
case 0: return 0x3BC;
|
||||
case 1: return 0x378;
|
||||
@@ -314,142 +314,142 @@ int PMAPI PM_getLPTPort(int port)
|
||||
|
||||
void * PMAPI PM_mallocShared(long size)
|
||||
{
|
||||
// TODO: This is used to allocate memory that is shared between process
|
||||
// that all access the common Nucleus drivers via a common display
|
||||
// driver DLL. If your OS does not support shared memory (or if
|
||||
// the display driver does not need to allocate shared memory
|
||||
// for each process address space), this should just call PM_malloc.
|
||||
/* TODO: This is used to allocate memory that is shared between process */
|
||||
/* that all access the common Nucleus drivers via a common display */
|
||||
/* driver DLL. If your OS does not support shared memory (or if */
|
||||
/* the display driver does not need to allocate shared memory */
|
||||
/* for each process address space), this should just call PM_malloc. */
|
||||
return PM_malloc(size);
|
||||
}
|
||||
|
||||
void PMAPI PM_freeShared(void *ptr)
|
||||
{
|
||||
// TODO: Free the shared memory block. This will be called in the context
|
||||
// of the original calling process that allocated the shared
|
||||
// memory with PM_mallocShared. Simply call free if you do not
|
||||
// need this.
|
||||
/* TODO: Free the shared memory block. This will be called in the context */
|
||||
/* of the original calling process that allocated the shared */
|
||||
/* memory with PM_mallocShared. Simply call free if you do not */
|
||||
/* need this. */
|
||||
PM_free(ptr);
|
||||
}
|
||||
|
||||
void * PMAPI PM_mapToProcess(void *base,ulong limit)
|
||||
{
|
||||
// TODO: This function is used to map a physical memory mapping
|
||||
// previously allocated with PM_mapPhysicalAddr into the
|
||||
// address space of the calling process. If the memory mapping
|
||||
// allocated by PM_mapPhysicalAddr is global to all processes,
|
||||
// simply return the pointer.
|
||||
/* TODO: This function is used to map a physical memory mapping */
|
||||
/* previously allocated with PM_mapPhysicalAddr into the */
|
||||
/* address space of the calling process. If the memory mapping */
|
||||
/* allocated by PM_mapPhysicalAddr is global to all processes, */
|
||||
/* simply return the pointer. */
|
||||
return base;
|
||||
}
|
||||
|
||||
void * PMAPI PM_mapRealPointer(uint r_seg,uint r_off)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void * PMAPI PM_allocRealSeg(uint size,uint *r_seg,uint *r_off)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void PMAPI PM_freeRealSeg(void *mem)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
}
|
||||
|
||||
void PMAPI DPMI_int86(int intno, DPMI_regs *regs)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
}
|
||||
|
||||
int PMAPI PM_int86(int intno, RMREGS *in, RMREGS *out)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int PMAPI PM_int86x(int intno, RMREGS *in, RMREGS *out,
|
||||
RMSREGS *sregs)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
return 0;
|
||||
}
|
||||
|
||||
void PMAPI PM_callRealMode(uint seg,uint off, RMREGS *in,
|
||||
RMSREGS *sregs)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
}
|
||||
|
||||
void PMAPI PM_availableMemory(ulong *physical,ulong *total)
|
||||
{
|
||||
// TODO: Report the amount of available memory, both the amount of
|
||||
// physical memory left and the amount of virtual memory left.
|
||||
// If the OS does not provide these services, report 0's.
|
||||
/* TODO: Report the amount of available memory, both the amount of */
|
||||
/* physical memory left and the amount of virtual memory left. */
|
||||
/* If the OS does not provide these services, report 0's. */
|
||||
*physical = *total = 0;
|
||||
}
|
||||
|
||||
void * PMAPI PM_allocLockedMem(uint size,ulong *physAddr,ibool contiguous,ibool below16Meg)
|
||||
{
|
||||
// TODO: Allocate a block of locked, physical memory of the specified
|
||||
// size. This is used for bus master operations. If this is not
|
||||
// supported by the OS, return NULL and bus mastering will not
|
||||
// be used.
|
||||
/* TODO: Allocate a block of locked, physical memory of the specified */
|
||||
/* size. This is used for bus master operations. If this is not */
|
||||
/* supported by the OS, return NULL and bus mastering will not */
|
||||
/* be used. */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void PMAPI PM_freeLockedMem(void *p,uint size,ibool contiguous)
|
||||
{
|
||||
// TODO: Free a memory block allocated with PM_allocLockedMem.
|
||||
/* TODO: Free a memory block allocated with PM_allocLockedMem. */
|
||||
}
|
||||
|
||||
void PMAPI PM_setBankA(int bank)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
}
|
||||
|
||||
void PMAPI PM_setBankAB(int bank)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
}
|
||||
|
||||
void PMAPI PM_setCRTStart(int x,int y,int waitVRT)
|
||||
{
|
||||
// No BIOS access on the BeOS
|
||||
/* No BIOS access on the BeOS */
|
||||
}
|
||||
|
||||
ibool PMAPI PM_enableWriteCombine(ulong base,ulong length,uint type)
|
||||
{
|
||||
// TODO: This function should enable Pentium Pro and Pentium II MTRR
|
||||
// write combining for the passed in physical memory base address
|
||||
// and length. Normally this is done via calls to an OS specific
|
||||
// device driver as this can only be done at ring 0.
|
||||
//
|
||||
// NOTE: This is a *very* important function to implement! If you do
|
||||
// not implement, graphics performance on the latest Intel chips
|
||||
// will be severly impaired. For sample code that can be used
|
||||
// directly in a ring 0 device driver, see the MSDOS implementation
|
||||
// which includes assembler code to do this directly (if the
|
||||
// program is running at ring 0).
|
||||
/* TODO: This function should enable Pentium Pro and Pentium II MTRR */
|
||||
/* write combining for the passed in physical memory base address */
|
||||
/* and length. Normally this is done via calls to an OS specific */
|
||||
/* device driver as this can only be done at ring 0. */
|
||||
/* */
|
||||
/* NOTE: This is a *very* important function to implement! If you do */
|
||||
/* not implement, graphics performance on the latest Intel chips */
|
||||
/* will be severly impaired. For sample code that can be used */
|
||||
/* directly in a ring 0 device driver, see the MSDOS implementation */
|
||||
/* which includes assembler code to do this directly (if the */
|
||||
/* program is running at ring 0). */
|
||||
return false;
|
||||
}
|
||||
|
||||
ibool PMAPI PM_doBIOSPOST(ushort axVal,ulong BIOSPhysAddr,void *mappedBIOS)
|
||||
{
|
||||
// TODO: This function is used to run the BIOS POST code on a secondary
|
||||
// controller to initialise it for use. This is not necessary
|
||||
// for multi-controller operation, but it will make it a lot
|
||||
// more convenicent for end users (otherwise they have to boot
|
||||
// the system once with the secondary controller as primary, and
|
||||
// then boot with both controllers installed).
|
||||
//
|
||||
// Even if you don't support full BIOS access, it would be
|
||||
// adviseable to be able to POST the secondary controllers in the
|
||||
// system using this function as a minimum requirement. Some
|
||||
// graphics hardware has registers that contain values that only
|
||||
// the BIOS knows about, which makes bring up a card from cold
|
||||
// reset difficult if the BIOS has not POST'ed it.
|
||||
/* TODO: This function is used to run the BIOS POST code on a secondary */
|
||||
/* controller to initialise it for use. This is not necessary */
|
||||
/* for multi-controller operation, but it will make it a lot */
|
||||
/* more convenicent for end users (otherwise they have to boot */
|
||||
/* the system once with the secondary controller as primary, and */
|
||||
/* then boot with both controllers installed). */
|
||||
/* */
|
||||
/* Even if you don't support full BIOS access, it would be */
|
||||
/* adviseable to be able to POST the secondary controllers in the */
|
||||
/* system using this function as a minimum requirement. Some */
|
||||
/* graphics hardware has registers that contain values that only */
|
||||
/* the BIOS knows about, which makes bring up a card from cold */
|
||||
/* reset difficult if the BIOS has not POST'ed it. */
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -533,7 +533,7 @@ void PMAPI PM_setFileAttr(
|
||||
const char *filename,
|
||||
uint attrib)
|
||||
{
|
||||
// TODO: Set the file attributes for a file
|
||||
/* TODO: Set the file attributes for a file */
|
||||
(void)filename;
|
||||
(void)attrib;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ Initialise the Zen Timer module internals.
|
||||
****************************************************************************/
|
||||
void _ZTimerInit(void)
|
||||
{
|
||||
// TODO: Do any specific internal initialisation in here
|
||||
/* TODO: Do any specific internal initialisation in here */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -46,8 +46,8 @@ Start the Zen Timer counting.
|
||||
static void _LZTimerOn(
|
||||
LZTimerObject *tm)
|
||||
{
|
||||
// TODO: Start the Zen Timer counting. This should be a macro if
|
||||
// possible.
|
||||
/* TODO: Start the Zen Timer counting. This should be a macro if */
|
||||
/* possible. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -57,8 +57,8 @@ Compute the lap time since the timer was started.
|
||||
static ulong _LZTimerLap(
|
||||
LZTimerObject *tm)
|
||||
{
|
||||
// TODO: Compute the lap time between the current time and when the
|
||||
// timer was started.
|
||||
/* TODO: Compute the lap time between the current time and when the */
|
||||
/* timer was started. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ Stop the Zen Timer counting.
|
||||
static void _LZTimerOff(
|
||||
LZTimerObject *tm)
|
||||
{
|
||||
// TODO: Stop the timer counting. Should be a macro if possible.
|
||||
/* TODO: Stop the timer counting. Should be a macro if possible. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -79,7 +79,7 @@ Compute the elapsed time in microseconds between start and end timings.
|
||||
static ulong _LZTimerCount(
|
||||
LZTimerObject *tm)
|
||||
{
|
||||
// TODO: Compute the elapsed time and return it. Always microseconds.
|
||||
/* TODO: Compute the elapsed time and return it. Always microseconds. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -95,9 +95,9 @@ Read the Long Period timer from the OS
|
||||
****************************************************************************/
|
||||
static ulong _ULZReadTime(void)
|
||||
{
|
||||
// TODO: Read the long period timer from the OS. The resolution of this
|
||||
// timer should be around 1/20 of a second for timing long
|
||||
// periods if possible.
|
||||
/* TODO: Read the long period timer from the OS. The resolution of this */
|
||||
/* timer should be around 1/20 of a second for timing long */
|
||||
/* periods if possible. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
||||
@@ -187,4 +187,3 @@ ibool PMAPI PM_agpFreePhysical(
|
||||
}
|
||||
|
||||
#endif /* !REALMODE */
|
||||
|
||||
|
||||
@@ -447,4 +447,3 @@ void EVTAPI EVT_allowLEDS(
|
||||
setLEDS(0);
|
||||
EVT.allowLEDS = enable;
|
||||
}
|
||||
|
||||
|
||||
@@ -280,7 +280,7 @@ ibool PMAPI PM_getFileTime(
|
||||
ibool gmTime,
|
||||
PM_time *time)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
(void)filename;
|
||||
(void)gmTime;
|
||||
(void)time;
|
||||
@@ -297,7 +297,7 @@ ibool PMAPI PM_setFileTime(
|
||||
ibool gmTime,
|
||||
PM_time *time)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
(void)filename;
|
||||
(void)gmTime;
|
||||
(void)time;
|
||||
|
||||
@@ -75,7 +75,7 @@ static void EVTAPI _EVT_pumpMessages(void)
|
||||
_EVT_restoreInt(ps);
|
||||
}
|
||||
|
||||
regs.x.ax = 0x0B; // Reset Move Mouse
|
||||
regs.x.ax = 0x0B; /* Reset Move Mouse */
|
||||
PM_int86(0x33,®s,®s);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -813,9 +813,9 @@ ibool PMAPI PM_driveValid(
|
||||
{
|
||||
RMREGS regs;
|
||||
regs.h.dl = (uchar)(drive - 'A' + 1);
|
||||
regs.h.ah = 0x36; // Get disk information service
|
||||
regs.h.ah = 0x36; /* Get disk information service */
|
||||
PM_int86(0x21,®s,®s);
|
||||
return regs.x.ax != 0xFFFF; // AX = 0xFFFF if disk is invalid
|
||||
return regs.x.ax != 0xFFFF; /* AX = 0xFFFF if disk is invalid */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -2212,7 +2212,7 @@ Function to get the file attributes for a specific file.
|
||||
uint PMAPI PM_getFileAttr(
|
||||
const char *filename)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2225,7 +2225,7 @@ ibool PMAPI PM_getFileTime(
|
||||
ibool gmTime,
|
||||
PM_time *time)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2238,6 +2238,6 @@ ibool PMAPI PM_setFileTime(
|
||||
ibool gmTime,
|
||||
PM_time *time)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ mouse_info mouse_infos[] = {
|
||||
{"BusMouse", STD_FLG, NULL, {0xf8, 0x80, 0x00, 0x00}, 3, 3},
|
||||
{"MouseMan", CS7 | STD_FLG, _EVT_mouse_init, {0x40, 0x40, 0x40, 0x00}, 3, 1},
|
||||
{"IntelliMouse", CS7 | STD_FLG, _EVT_pnpmouse_init, {0xc0, 0x40, 0xc0, 0x00}, 4, 1},
|
||||
{"IMPS2", CS7 | STD_FLG, NULL, {0xc0, 0x40, 0xc0, 0x00}, 4, 1}, // ?
|
||||
{"IMPS2", CS7 | STD_FLG, NULL, {0xc0, 0x40, 0xc0, 0x00}, 4, 1}, /* ? */
|
||||
};
|
||||
|
||||
#define NB_MICE (sizeof(mouse_infos)/sizeof(mouse_info))
|
||||
@@ -109,7 +109,7 @@ typedef struct {
|
||||
int map;
|
||||
} keymap;
|
||||
|
||||
// TODO: Fix this and set it up so we can do a binary search!
|
||||
/* TODO: Fix this and set it up so we can do a binary search! */
|
||||
|
||||
keymap keymaps[] = {
|
||||
{96, KB_padEnter},
|
||||
@@ -539,7 +539,7 @@ int EVTAPI EVT_joyIsPresent(void)
|
||||
joystick0_fd = 0;
|
||||
if ((joystick1_fd = open(joystick1_dev, O_RDONLY)) < 0)
|
||||
joystick1_fd = 0;
|
||||
if (!joystick0_fd && !joystick1_fd) // No joysticks detected
|
||||
if (!joystick0_fd && !joystick1_fd) /* No joysticks detected */
|
||||
return 0;
|
||||
inited = true;
|
||||
if (ioctl(joystick0_fd ? joystick0_fd : joystick1_fd, JSIOCGVERSION, &js_version) < 0)
|
||||
@@ -820,11 +820,11 @@ static void _EVT_pumpMessages(void)
|
||||
release = c & 0x80;
|
||||
c &= 0x7F;
|
||||
|
||||
// TODO: This is wrong! We need this to be the time stamp at
|
||||
// ** interrupt ** time!! One solution would be to
|
||||
// put the keyboard and mouse polling loops into
|
||||
// a separate thread that can block on I/O to the
|
||||
// necessay file descriptor.
|
||||
/* TODO: This is wrong! We need this to be the time stamp at */
|
||||
/* ** interrupt ** time!! One solution would be to */
|
||||
/* put the keyboard and mouse polling loops into */
|
||||
/* a separate thread that can block on I/O to the */
|
||||
/* necessay file descriptor. */
|
||||
evt.when = _EVT_getTicks();
|
||||
|
||||
if (release) {
|
||||
@@ -966,11 +966,11 @@ static void _EVT_pumpMessages(void)
|
||||
evt.relative_x = dx;
|
||||
evt.relative_y = dy;
|
||||
|
||||
// TODO: This is wrong! We need this to be the time stamp at
|
||||
// ** interrupt ** time!! One solution would be to
|
||||
// put the keyboard and mouse polling loops into
|
||||
// a separate thread that can block on I/O to the
|
||||
// necessay file descriptor.
|
||||
/* TODO: This is wrong! We need this to be the time stamp at */
|
||||
/* ** interrupt ** time!! One solution would be to */
|
||||
/* put the keyboard and mouse polling loops into */
|
||||
/* a separate thread that can block on I/O to the */
|
||||
/* necessay file descriptor. */
|
||||
evt.when = _EVT_getTicks();
|
||||
evt.modifiers = _PM_modifiers;
|
||||
if (buts & 4)
|
||||
@@ -1038,7 +1038,7 @@ static void _EVT_pumpMessages(void)
|
||||
}
|
||||
|
||||
#ifdef USE_OS_JOYSTICK
|
||||
// Poll joystick events using the 1.x joystick driver API in the 2.2 kernels
|
||||
/* Poll joystick events using the 1.x joystick driver API in the 2.2 kernels */
|
||||
if (js_version & ~0xffff) {
|
||||
static struct js_event js;
|
||||
|
||||
@@ -1318,7 +1318,7 @@ and this function can be used to resume it again later.
|
||||
****************************************************************************/
|
||||
void EVT_resume(void)
|
||||
{
|
||||
// Do nothing for Linux
|
||||
/* Do nothing for Linux */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -1328,7 +1328,7 @@ de-install the event handling code.
|
||||
****************************************************************************/
|
||||
void EVT_suspend(void)
|
||||
{
|
||||
// Do nothing for Linux
|
||||
/* Do nothing for Linux */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -1358,4 +1358,3 @@ void EVT_exit(void)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -58,4 +58,3 @@ void _PM_keyboard_rawmode(void);
|
||||
/* Linux needs the generic joystick scaling code */
|
||||
|
||||
#define NEED_SCALE_JOY_AXIS
|
||||
|
||||
|
||||
@@ -562,37 +562,37 @@ int PMAPI PM_getch(void)
|
||||
c &= 0x7F;
|
||||
if (release) {
|
||||
switch(c){
|
||||
case 42: case 54: // Shift
|
||||
case 42: case 54: /* Shift */
|
||||
_PM_modifiers &= ~KB_SHIFT;
|
||||
break;
|
||||
case 29: case 97: // Control
|
||||
case 29: case 97: /* Control */
|
||||
_PM_modifiers &= ~KB_CONTROL;
|
||||
break;
|
||||
case 56: case 100: // Alt / AltGr
|
||||
case 56: case 100: /* Alt / AltGr */
|
||||
_PM_modifiers &= ~KB_ALT;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
switch (c) {
|
||||
case 42: case 54: // Shift
|
||||
case 42: case 54: /* Shift */
|
||||
_PM_modifiers |= KB_SHIFT;
|
||||
break;
|
||||
case 29: case 97: // Control
|
||||
case 29: case 97: /* Control */
|
||||
_PM_modifiers |= KB_CONTROL;
|
||||
break;
|
||||
case 56: case 100: // Alt / AltGr
|
||||
case 56: case 100: /* Alt / AltGr */
|
||||
_PM_modifiers |= KB_ALT;
|
||||
break;
|
||||
case 58: // Caps Lock
|
||||
case 58: /* Caps Lock */
|
||||
_PM_modifiers ^= KB_CAPS;
|
||||
ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
|
||||
break;
|
||||
case 69: // Num Lock
|
||||
case 69: /* Num Lock */
|
||||
_PM_modifiers ^= KB_NUMLOCK;
|
||||
ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
|
||||
break;
|
||||
case 70: // Scroll Lock
|
||||
case 70: /* Scroll Lock */
|
||||
_PM_modifiers ^= KB_SCROLL;
|
||||
ioctl(_PM_console_fd, KDSETLED, _PM_modifiers & 7);
|
||||
break;
|
||||
@@ -855,12 +855,12 @@ void PM_setOSScreenWidth(int width,int height)
|
||||
struct winsize ws;
|
||||
struct vt_sizes vs;
|
||||
|
||||
// Resize the software terminal
|
||||
/* Resize the software terminal */
|
||||
ws.ws_col = width;
|
||||
ws.ws_row = height;
|
||||
ioctl(_PM_console_fd, TIOCSWINSZ, &ws);
|
||||
|
||||
// And the hardware
|
||||
/* And the hardware */
|
||||
vs.v_rows = height;
|
||||
vs.v_cols = width;
|
||||
vs.v_scrollsize = 0;
|
||||
@@ -869,18 +869,18 @@ void PM_setOSScreenWidth(int width,int height)
|
||||
|
||||
ibool PMAPI PM_setRealTimeClockHandler(PM_intHandler ih, int frequency)
|
||||
{
|
||||
// TODO: Implement this for Linux
|
||||
/* TODO: Implement this for Linux */
|
||||
return false;
|
||||
}
|
||||
|
||||
void PMAPI PM_setRealTimeClockFrequency(int frequency)
|
||||
{
|
||||
// TODO: Implement this for Linux
|
||||
/* TODO: Implement this for Linux */
|
||||
}
|
||||
|
||||
void PMAPI PM_restoreRealTimeClockHandler(void)
|
||||
{
|
||||
// TODO: Implement this for Linux
|
||||
/* TODO: Implement this for Linux */
|
||||
}
|
||||
|
||||
char * PMAPI PM_getCurrentPath(
|
||||
@@ -978,27 +978,27 @@ void PMAPI PM_freePhysicalAddr(void *ptr,ulong limit)
|
||||
|
||||
ulong PMAPI PM_getPhysicalAddr(void *p)
|
||||
{
|
||||
// TODO: This function should find the physical address of a linear
|
||||
// address.
|
||||
/* TODO: This function should find the physical address of a linear */
|
||||
/* address. */
|
||||
return 0xFFFFFFFFUL;
|
||||
}
|
||||
|
||||
ibool PMAPI PM_getPhysicalAddrRange(void *p,ulong length,ulong *physAddress)
|
||||
{
|
||||
// TODO: This function should find a range of physical addresses
|
||||
// for a linear address.
|
||||
/* TODO: This function should find a range of physical addresses */
|
||||
/* for a linear address. */
|
||||
return false;
|
||||
}
|
||||
|
||||
void PMAPI PM_sleep(ulong milliseconds)
|
||||
{
|
||||
// TODO: Put the process to sleep for milliseconds
|
||||
/* TODO: Put the process to sleep for milliseconds */
|
||||
}
|
||||
|
||||
int PMAPI PM_getCOMPort(int port)
|
||||
{
|
||||
// TODO: Re-code this to determine real values using the Plug and Play
|
||||
// manager for the OS.
|
||||
/* TODO: Re-code this to determine real values using the Plug and Play */
|
||||
/* manager for the OS. */
|
||||
switch (port) {
|
||||
case 0: return 0x3F8;
|
||||
case 1: return 0x2F8;
|
||||
@@ -1008,8 +1008,8 @@ int PMAPI PM_getCOMPort(int port)
|
||||
|
||||
int PMAPI PM_getLPTPort(int port)
|
||||
{
|
||||
// TODO: Re-code this to determine real values using the Plug and Play
|
||||
// manager for the OS.
|
||||
/* TODO: Re-code this to determine real values using the Plug and Play */
|
||||
/* manager for the OS. */
|
||||
switch (port) {
|
||||
case 0: return 0x3BC;
|
||||
case 1: return 0x378;
|
||||
@@ -1558,26 +1558,26 @@ void PMAPI PM_availableMemory(ulong *physical,ulong *total)
|
||||
|
||||
void * PMAPI PM_allocLockedMem(uint size,ulong *physAddr,ibool contiguous,ibool below16M)
|
||||
{
|
||||
// TODO: Implement this for Linux
|
||||
/* TODO: Implement this for Linux */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void PMAPI PM_freeLockedMem(void *p,uint size,ibool contiguous)
|
||||
{
|
||||
// TODO: Implement this for Linux
|
||||
/* TODO: Implement this for Linux */
|
||||
}
|
||||
|
||||
void * PMAPI PM_allocPage(
|
||||
ibool locked)
|
||||
{
|
||||
// TODO: Implement this for Linux
|
||||
/* TODO: Implement this for Linux */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void PMAPI PM_freePage(
|
||||
void *p)
|
||||
{
|
||||
// TODO: Implement this for Linux
|
||||
/* TODO: Implement this for Linux */
|
||||
}
|
||||
|
||||
void PMAPI PM_setBankA(int bank)
|
||||
@@ -1661,7 +1661,7 @@ int PMAPI PM_enableWriteCombine(ulong base,ulong length,uint type)
|
||||
sentry.size = length;
|
||||
sentry.type = type;
|
||||
if (ioctl(mtrr_fd, MTRRIOC_ADD_ENTRY, &sentry) == -1) {
|
||||
// TODO: Need to decode MTRR error codes!!
|
||||
/* TODO: Need to decode MTRR error codes!! */
|
||||
return PM_MTRR_NOT_SUPPORTED;
|
||||
}
|
||||
return PM_MTRR_ERR_OK;
|
||||
@@ -1690,8 +1690,8 @@ int PMAPI PM_enumWriteCombine(
|
||||
for (gentry.regnum = 0; ioctl (mtrr_fd, MTRRIOC_GET_ENTRY, &gentry) == 0;
|
||||
++gentry.regnum) {
|
||||
if (gentry.size > 0) {
|
||||
// WARNING: This code assumes that the types in pmapi.h match the ones
|
||||
// in the Linux kernel (mtrr.h)
|
||||
/* WARNING: This code assumes that the types in pmapi.h match the ones */
|
||||
/* in the Linux kernel (mtrr.h) */
|
||||
callback(gentry.base, gentry.size, gentry.type);
|
||||
}
|
||||
}
|
||||
@@ -1774,7 +1774,7 @@ int PMAPI PM_unlockCodePages(void (*p)(),uint len,PM_lockHandle *lh)
|
||||
PM_MODULE PMAPI PM_loadLibrary(
|
||||
const char *szDLLName)
|
||||
{
|
||||
// TODO: Implement this to load shared libraries!
|
||||
/* TODO: Implement this to load shared libraries! */
|
||||
(void)szDLLName;
|
||||
return NULL;
|
||||
}
|
||||
@@ -1783,7 +1783,7 @@ void * PMAPI PM_getProcAddress(
|
||||
PM_MODULE hModule,
|
||||
const char *szProcName)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
(void)hModule;
|
||||
(void)szProcName;
|
||||
return NULL;
|
||||
@@ -1792,19 +1792,18 @@ void * PMAPI PM_getProcAddress(
|
||||
void PMAPI PM_freeLibrary(
|
||||
PM_MODULE hModule)
|
||||
{
|
||||
// TODO: Implement this!
|
||||
/* TODO: Implement this! */
|
||||
(void)hModule;
|
||||
}
|
||||
|
||||
int PMAPI PM_setIOPL(
|
||||
int level)
|
||||
{
|
||||
// TODO: Move the IOPL switching into this function!!
|
||||
/* TODO: Move the IOPL switching into this function!! */
|
||||
return level;
|
||||
}
|
||||
|
||||
void PMAPI PM_flushTLB(void)
|
||||
{
|
||||
// Do nothing on Linux.
|
||||
/* Do nothing on Linux. */
|
||||
}
|
||||
|
||||
|
||||
@@ -62,4 +62,3 @@ Read the counter and return the counter value.
|
||||
(t)->low = lt.LowPart; \
|
||||
(t)->high = lt.HighPart; \
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ We do have limited BIOS access under Windows NT device drivers.
|
||||
****************************************************************************/
|
||||
ibool PMAPI PM_haveBIOSAccess(void)
|
||||
{
|
||||
// Return false unless we have full buffer passing!
|
||||
/* Return false unless we have full buffer passing! */
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -63,8 +63,8 @@ void * PMAPI PM_getVESABuf(
|
||||
uint *rseg,
|
||||
uint *roff)
|
||||
{
|
||||
// No buffers supported under Windows NT (Windows XP has them however if
|
||||
// we ever decide to support this!)
|
||||
/* No buffers supported under Windows NT (Windows XP has them however if */
|
||||
/* we ever decide to support this!) */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ void * PMAPI PM_mapRealPointer(
|
||||
uint r_seg,
|
||||
uint r_off)
|
||||
{
|
||||
// Not used for Windows NT drivers!
|
||||
/* Not used for Windows NT drivers! */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ void * PMAPI PM_allocRealSeg(
|
||||
uint *r_seg,
|
||||
uint *r_off)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)size;
|
||||
(void)r_seg;
|
||||
(void)r_off;
|
||||
@@ -117,7 +117,7 @@ Free a block of real mode memory.
|
||||
void PMAPI PM_freeRealSeg(
|
||||
void *mem)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)mem;
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ void PMAPI DPMI_int86(
|
||||
int intno,
|
||||
DPMI_regs *regs)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -143,7 +143,7 @@ void PMAPI PM_callRealMode(
|
||||
RMREGS *regs,
|
||||
RMSREGS *sregs)
|
||||
{
|
||||
// TODO!!
|
||||
/* TODO!! */
|
||||
#if 0
|
||||
CLIENT_STRUCT saveRegs;
|
||||
|
||||
@@ -174,7 +174,7 @@ int PMAPI PM_int86(
|
||||
RMREGS *in,
|
||||
RMREGS *out)
|
||||
{
|
||||
// TODO!!
|
||||
/* TODO!! */
|
||||
#if 0
|
||||
RMSREGS sregs = {0};
|
||||
CLIENT_STRUCT saveRegs;
|
||||
@@ -214,7 +214,7 @@ int PMAPI PM_int86x(
|
||||
RMREGS *out,
|
||||
RMSREGS *sregs)
|
||||
{
|
||||
// TODO!!
|
||||
/* TODO!! */
|
||||
#if 0
|
||||
CLIENT_STRUCT saveRegs;
|
||||
ushort oldDisable;
|
||||
@@ -249,4 +249,3 @@ int PMAPI PM_int86x(
|
||||
#endif
|
||||
return out->x.ax;
|
||||
}
|
||||
|
||||
|
||||
@@ -140,4 +140,3 @@ void PMAPI PM_restoreRealTimeClockHandler(void)
|
||||
_PM_rtcHandler = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ static memlocked locked[MAX_MEMORY_LOCKED];
|
||||
|
||||
ulong PMAPI _PM_getPDB(void);
|
||||
|
||||
// Page table entry flags
|
||||
/* Page table entry flags */
|
||||
|
||||
#define PAGE_FLAGS_PRESENT 0x00000001
|
||||
#define PAGE_FLAGS_WRITEABLE 0x00000002
|
||||
@@ -100,10 +100,10 @@ static ulong _PM_mapPhysicalToLinear(
|
||||
ulong length = limit+1;
|
||||
PHYSICAL_ADDRESS paIoBase = {0};
|
||||
|
||||
// NT loves large Ints
|
||||
/* NT loves large Ints */
|
||||
paIoBase = RtlConvertUlongToLargeInteger( base );
|
||||
|
||||
// Map IO space into Kernel
|
||||
/* Map IO space into Kernel */
|
||||
if (isCached)
|
||||
return (ULONG)MmMapIoSpace(paIoBase, length, MmCached );
|
||||
else
|
||||
@@ -149,12 +149,12 @@ static void _PM_adjustPageTables(
|
||||
endPDB = ((linear+limit) >> 22) & 0x3FF;
|
||||
endPage = ((linear+limit) >> 12) & 0x3FF;
|
||||
for (iPDB = startPDB; iPDB <= endPDB; iPDB++) {
|
||||
// Set the bits in the page directory entry - required as per
|
||||
// Pentium 4 manual. This also takes care of the 4MB page entries
|
||||
/* Set the bits in the page directory entry - required as per */
|
||||
/* Pentium 4 manual. This also takes care of the 4MB page entries */
|
||||
pPDB[iPDB] = (pPDB[iPDB] & mask) | bits;
|
||||
if (!(pPDB[iPDB] & PAGE_FLAGS_4MB)) {
|
||||
// If we are dealing with 4KB pages then we need to iterate
|
||||
// through each of the page table entries
|
||||
/* If we are dealing with 4KB pages then we need to iterate */
|
||||
/* through each of the page table entries */
|
||||
pageTable = pPDB[iPDB] & ~0xFFF;
|
||||
pPageTable = (ulong*)_PM_mapPhysicalToLinear(pageTable,0xFFF,true);
|
||||
start = (iPDB == startPDB) ? startPage : 0;
|
||||
@@ -183,7 +183,7 @@ void * PMAPI PM_mallocShared(
|
||||
{
|
||||
int i;
|
||||
|
||||
// First find a free slot in our shared memory table
|
||||
/* First find a free slot in our shared memory table */
|
||||
for (i = 0; i < MAX_MEMORY_SHARED; i++) {
|
||||
if (shared[i].linear == 0)
|
||||
break;
|
||||
@@ -191,16 +191,16 @@ void * PMAPI PM_mallocShared(
|
||||
if (i == MAX_MEMORY_SHARED)
|
||||
return NULL;
|
||||
|
||||
// Allocate the paged pool
|
||||
/* Allocate the paged pool */
|
||||
shared[i].linear = ExAllocatePool(PagedPool, size);
|
||||
|
||||
// Create a list to manage this allocation
|
||||
/* Create a list to manage this allocation */
|
||||
shared[i].pMdl = IoAllocateMdl(shared[i].linear,size,FALSE,FALSE,(PIRP) NULL);
|
||||
|
||||
// Lock this allocation in memory
|
||||
/* Lock this allocation in memory */
|
||||
MmProbeAndLockPages(shared[i].pMdl,KernelMode,IoModifyAccess);
|
||||
|
||||
// Modify bits to grant user access
|
||||
/* Modify bits to grant user access */
|
||||
_PM_adjustPageTables((ulong)shared[i].linear, size, true, true);
|
||||
return (void*)shared[i].linear;
|
||||
}
|
||||
@@ -214,19 +214,19 @@ void PMAPI PM_freeShared(
|
||||
{
|
||||
int i;
|
||||
|
||||
// Find a shared memory block in our table and free it
|
||||
/* Find a shared memory block in our table and free it */
|
||||
for (i = 0; i < MAX_MEMORY_SHARED; i++) {
|
||||
if (shared[i].linear == p) {
|
||||
// Unlock what we locked
|
||||
/* Unlock what we locked */
|
||||
MmUnlockPages(shared[i].pMdl);
|
||||
|
||||
// Free our MDL
|
||||
/* Free our MDL */
|
||||
IoFreeMdl(shared[i].pMdl);
|
||||
|
||||
// Free our mem
|
||||
/* Free our mem */
|
||||
ExFreePool(shared[i].linear);
|
||||
|
||||
// Flag that is entry is available
|
||||
/* Flag that is entry is available */
|
||||
shared[i].linear = 0;
|
||||
break;
|
||||
}
|
||||
@@ -245,8 +245,8 @@ void * PMAPI PM_mapPhysicalAddr(
|
||||
ulong linear,length = limit+1;
|
||||
int i;
|
||||
|
||||
// Search table of existing mappings to see if we have already mapped
|
||||
// a region of memory that will serve this purpose.
|
||||
/* Search table of existing mappings to see if we have already mapped */
|
||||
/* a region of memory that will serve this purpose. */
|
||||
for (i = 0; i < numMappings; i++) {
|
||||
if (maps[i].physical == base && maps[i].length == length && maps[i].isCached == isCached) {
|
||||
_PM_adjustPageTables((ulong)maps[i].linear, maps[i].length, true, isCached);
|
||||
@@ -256,7 +256,7 @@ void * PMAPI PM_mapPhysicalAddr(
|
||||
if (numMappings == MAX_MEMORY_MAPPINGS)
|
||||
return NULL;
|
||||
|
||||
// We did not find any previously mapped memory region, so maps it in.
|
||||
/* We did not find any previously mapped memory region, so maps it in. */
|
||||
if ((linear = _PM_mapPhysicalToLinear(base,limit,isCached)) == 0xFFFFFFFF)
|
||||
return NULL;
|
||||
maps[numMappings].physical = base;
|
||||
@@ -265,7 +265,7 @@ void * PMAPI PM_mapPhysicalAddr(
|
||||
maps[numMappings].isCached = isCached;
|
||||
numMappings++;
|
||||
|
||||
// Grant user access to this I/O space
|
||||
/* Grant user access to this I/O space */
|
||||
_PM_adjustPageTables((ulong)linear, length, true, isCached);
|
||||
return (void*)linear;
|
||||
}
|
||||
@@ -278,8 +278,8 @@ void PMAPI PM_freePhysicalAddr(
|
||||
void *ptr,
|
||||
ulong limit)
|
||||
{
|
||||
// We don't free the memory mappings in here because we cache all
|
||||
// the memory mappings we create in the system for later use.
|
||||
/* We don't free the memory mappings in here because we cache all */
|
||||
/* the memory mappings we create in the system for later use. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -340,7 +340,7 @@ void * PMAPI PM_allocLockedMem(
|
||||
int i;
|
||||
PHYSICAL_ADDRESS paOurAddress;
|
||||
|
||||
// First find a free slot in our shared memory table
|
||||
/* First find a free slot in our shared memory table */
|
||||
for (i = 0; i < MAX_MEMORY_LOCKED; i++) {
|
||||
if (locked[i].linear == 0)
|
||||
break;
|
||||
@@ -348,9 +348,9 @@ void * PMAPI PM_allocLockedMem(
|
||||
if (i == MAX_MEMORY_LOCKED)
|
||||
return NULL;
|
||||
|
||||
// HighestAcceptableAddress - Specifies the highest valid physical address
|
||||
// the driver can use. For example, if a device can only reference physical
|
||||
// memory in the lower 16MB, this value would be set to 0x00000000FFFFFF.
|
||||
/* HighestAcceptableAddress - Specifies the highest valid physical address */
|
||||
/* the driver can use. For example, if a device can only reference physical */
|
||||
/* memory in the lower 16MB, this value would be set to 0x00000000FFFFFF. */
|
||||
paOurAddress.HighPart = 0;
|
||||
if (below16M)
|
||||
paOurAddress.LowPart = 0x00FFFFFF;
|
||||
@@ -358,37 +358,37 @@ void * PMAPI PM_allocLockedMem(
|
||||
paOurAddress.LowPart = 0xFFFFFFFF;
|
||||
|
||||
if (contiguous) {
|
||||
// Allocate from the non-paged pool (unfortunately 4MB pages)
|
||||
/* Allocate from the non-paged pool (unfortunately 4MB pages) */
|
||||
locked[i].linear = MmAllocateContiguousMemory(size, paOurAddress);
|
||||
if (!locked[i].linear)
|
||||
return NULL;
|
||||
|
||||
// Flag no MDL
|
||||
/* Flag no MDL */
|
||||
locked[i].pMdl = NULL;
|
||||
|
||||
// Map the physical address for the memory so we can manage
|
||||
// the page tables in 4KB chunks mapped into user space.
|
||||
/* Map the physical address for the memory so we can manage */
|
||||
/* the page tables in 4KB chunks mapped into user space. */
|
||||
|
||||
// TODO: Map this with the physical address to the linear addresss
|
||||
/* TODO: Map this with the physical address to the linear addresss */
|
||||
locked[i].mmIoMapped = locked[i].linear;
|
||||
|
||||
// Modify bits to grant user access, flag not cached
|
||||
/* Modify bits to grant user access, flag not cached */
|
||||
_PM_adjustPageTables((ulong)locked[i].mmIoMapped, size, true, false);
|
||||
return (void*)locked[i].mmIoMapped;
|
||||
}
|
||||
else {
|
||||
// Allocate from the paged pool
|
||||
/* Allocate from the paged pool */
|
||||
locked[i].linear = ExAllocatePool(PagedPool, size);
|
||||
if (!locked[i].linear)
|
||||
return NULL;
|
||||
|
||||
// Create a list to manage this allocation
|
||||
/* Create a list to manage this allocation */
|
||||
locked[i].pMdl = IoAllocateMdl(locked[i].linear,size,FALSE,FALSE,(PIRP) NULL);
|
||||
|
||||
// Lock this allocation in memory
|
||||
/* Lock this allocation in memory */
|
||||
MmProbeAndLockPages(locked[i].pMdl,KernelMode,IoModifyAccess);
|
||||
|
||||
// Modify bits to grant user access, flag not cached
|
||||
/* Modify bits to grant user access, flag not cached */
|
||||
_PM_adjustPageTables((ulong)locked[i].linear, size, true, false);
|
||||
return (void*)locked[i].linear;
|
||||
}
|
||||
@@ -408,22 +408,22 @@ void PMAPI PM_freeLockedMem(
|
||||
/* Find a locked memory block in our table and free it */
|
||||
for (i = 0; i < MAX_MEMORY_LOCKED; i++) {
|
||||
if (locked[i].linear == p) {
|
||||
// An Mdl indicates that we used the paged pool, and locked it,
|
||||
// so now we have to unlock, free the MDL, and free paged
|
||||
/* An Mdl indicates that we used the paged pool, and locked it, */
|
||||
/* so now we have to unlock, free the MDL, and free paged */
|
||||
if (locked[i].pMdl) {
|
||||
// Unlock what we locked and free the Mdl
|
||||
/* Unlock what we locked and free the Mdl */
|
||||
MmUnlockPages(locked[i].pMdl);
|
||||
IoFreeMdl(locked[i].pMdl);
|
||||
ExFreePool(locked[i].linear);
|
||||
}
|
||||
else {
|
||||
// TODO: Free the mmIoMap mapping for the memory!
|
||||
/* TODO: Free the mmIoMap mapping for the memory! */
|
||||
|
||||
// Free non-paged pool
|
||||
/* Free non-paged pool */
|
||||
MmFreeContiguousMemory(locked[i].linear);
|
||||
}
|
||||
|
||||
// Flag that is entry is available
|
||||
/* Flag that is entry is available */
|
||||
locked[i].linear = 0;
|
||||
break;
|
||||
}
|
||||
@@ -437,8 +437,8 @@ Allocates a page aligned and page sized block of memory
|
||||
void * PMAPI PM_allocPage(
|
||||
ibool locked)
|
||||
{
|
||||
// Allocate the memory from the non-paged pool if we want the memory
|
||||
// to be locked.
|
||||
/* Allocate the memory from the non-paged pool if we want the memory */
|
||||
/* to be locked. */
|
||||
return ExAllocatePool(
|
||||
locked ? NonPagedPoolCacheAligned : PagedPoolCacheAligned,
|
||||
PAGE_SIZE);
|
||||
@@ -465,11 +465,11 @@ int PMAPI PM_lockDataPages(
|
||||
{
|
||||
MDL *pMdl;
|
||||
|
||||
// Create a list to manage this allocation
|
||||
/* Create a list to manage this allocation */
|
||||
if ((pMdl = IoAllocateMdl(p,len,FALSE,FALSE,(PIRP)NULL)) == NULL)
|
||||
return false;
|
||||
|
||||
// Lock this allocation in memory
|
||||
/* Lock this allocation in memory */
|
||||
MmProbeAndLockPages(pMdl,KernelMode,IoModifyAccess);
|
||||
*((PMDL*)(&lh->h)) = pMdl;
|
||||
return true;
|
||||
@@ -485,7 +485,7 @@ int PMAPI PM_unlockDataPages(
|
||||
PM_lockHandle *lh)
|
||||
{
|
||||
if (p && lh) {
|
||||
// Unlock what we locked
|
||||
/* Unlock what we locked */
|
||||
MDL *pMdl = *((PMDL*)(&lh->h));
|
||||
MmUnlockPages(pMdl);
|
||||
IoFreeMdl(pMdl);
|
||||
@@ -516,4 +516,3 @@ int PMAPI PM_unlockCodePages(
|
||||
{
|
||||
return PM_unlockDataPages((void*)p,len,lh);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,5 +42,4 @@
|
||||
UNICODE_STRING * _PM_CStringToUnicodeString(const char *cstr);
|
||||
void _PM_FreeUnicodeString(UNICODE_STRING *uniStr);
|
||||
|
||||
#endif // __NTDRV_OSHDR_H
|
||||
|
||||
#endif /* __NTDRV_OSHDR_H */
|
||||
|
||||
@@ -118,23 +118,23 @@ void PMAPI PM_fatalError(
|
||||
if (fatalErrorCleanup)
|
||||
fatalErrorCleanup();
|
||||
|
||||
#ifdef DBG // Send output to debugger, just return so as not to force a reboot
|
||||
#ifdef DBG /* Send output to debugger, just return so as not to force a reboot */
|
||||
#pragma message("INFO: building for debug, PM_fatalError() re-routed")
|
||||
DBGMSG2("SDDHELP> PM_fatalError(): ERROR: %s\n", msg);
|
||||
return ;
|
||||
#endif
|
||||
// KeBugCheckEx brings down the system in a controlled
|
||||
// manner when the caller discovers an unrecoverable
|
||||
// inconsistency that would corrupt the system if
|
||||
// the caller continued to run.
|
||||
//
|
||||
// hack - dump the first 20 chars in hex using the variables
|
||||
// provided - Each ULONG is equal to four characters...
|
||||
/* KeBugCheckEx brings down the system in a controlled */
|
||||
/* manner when the caller discovers an unrecoverable */
|
||||
/* inconsistency that would corrupt the system if */
|
||||
/* the caller continued to run. */
|
||||
/* */
|
||||
/* hack - dump the first 20 chars in hex using the variables */
|
||||
/* provided - Each ULONG is equal to four characters... */
|
||||
for(len = 0; len < 20; len++)
|
||||
if (msg[len] == (char)0)
|
||||
break;
|
||||
|
||||
// This looks bad but it's quick and reliable...
|
||||
/* This looks bad but it's quick and reliable... */
|
||||
p = (char *)&BugCheckCode;
|
||||
if(len > 0) p[3] = msg[0];
|
||||
if(len > 1) p[2] = msg[1];
|
||||
@@ -165,7 +165,7 @@ void PMAPI PM_fatalError(
|
||||
if(len > 18) p[1] = msg[18];
|
||||
if(len > 19) p[0] = msg[19];
|
||||
|
||||
// Halt the system!
|
||||
/* Halt the system! */
|
||||
KeBugCheckEx(BugCheckCode, MoreBugCheckData[0], MoreBugCheckData[1], MoreBugCheckData[2], MoreBugCheckData[3]);
|
||||
}
|
||||
|
||||
@@ -209,14 +209,14 @@ static ibool REG_queryString(
|
||||
STRING stringdata;
|
||||
UNICODE_STRING unidata;
|
||||
|
||||
// Convert strings to UniCode
|
||||
/* Convert strings to UniCode */
|
||||
status = false;
|
||||
if ((uniKey = _PM_CStringToUnicodeString(szKey)) == NULL)
|
||||
goto Exit;
|
||||
if ((uniValue = _PM_CStringToUnicodeString(szValue)) == NULL)
|
||||
goto Exit;
|
||||
|
||||
// Open the key
|
||||
/* Open the key */
|
||||
InitializeObjectAttributes( &keyAttributes,
|
||||
uniKey,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
@@ -228,7 +228,7 @@ static ibool REG_queryString(
|
||||
if (!NT_SUCCESS(rval))
|
||||
goto Exit;
|
||||
|
||||
// Query the value
|
||||
/* Query the value */
|
||||
length = sizeof (KEY_VALUE_FULL_INFORMATION)
|
||||
+ size * sizeof(WCHAR);
|
||||
if ((fullInfo = ExAllocatePool (PagedPool, length)) == NULL)
|
||||
@@ -241,12 +241,12 @@ static ibool REG_queryString(
|
||||
length,
|
||||
&length);
|
||||
if (NT_SUCCESS (rval)) {
|
||||
// Create the UniCode string so we can convert it
|
||||
/* Create the UniCode string so we can convert it */
|
||||
unidata.Buffer = (PWCHAR)(((PCHAR)fullInfo) + fullInfo->DataOffset);
|
||||
unidata.Length = (USHORT)fullInfo->DataLength;
|
||||
unidata.MaximumLength = (USHORT)fullInfo->DataLength + sizeof(WCHAR);
|
||||
|
||||
// Convert unicode univalue to ansi string.
|
||||
/* Convert unicode univalue to ansi string. */
|
||||
rval = RtlUnicodeStringToAnsiString(&stringdata, &unidata, TRUE);
|
||||
if (NT_SUCCESS(rval)) {
|
||||
strcpy(value,stringdata.Buffer);
|
||||
@@ -345,7 +345,7 @@ Check if a key has been pressed.
|
||||
****************************************************************************/
|
||||
int PMAPI PM_kbhit(void)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -355,7 +355,7 @@ Wait for and return the next keypress.
|
||||
****************************************************************************/
|
||||
int PMAPI PM_getch(void)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
return 0xD;
|
||||
}
|
||||
|
||||
@@ -372,7 +372,7 @@ PM_HWND PMAPI PM_openConsole(
|
||||
int bpp,
|
||||
ibool fullScreen)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)hwndUser;
|
||||
(void)device;
|
||||
(void)xRes;
|
||||
@@ -388,7 +388,7 @@ Find the size of the console state buffer.
|
||||
****************************************************************************/
|
||||
int PMAPI PM_getConsoleStateSize(void)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -400,7 +400,7 @@ void PMAPI PM_saveConsoleState(
|
||||
void *stateBuf,
|
||||
PM_HWND hwndConsole)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)stateBuf;
|
||||
(void)hwndConsole;
|
||||
}
|
||||
@@ -412,7 +412,7 @@ Set the suspend application callback for the fullscreen console.
|
||||
void PMAPI PM_setSuspendAppCallback(
|
||||
PM_saveState_cb saveState)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)saveState;
|
||||
}
|
||||
|
||||
@@ -424,7 +424,7 @@ void PMAPI PM_restoreConsoleState(
|
||||
const void *stateBuf,
|
||||
PM_HWND hwndConsole)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)stateBuf;
|
||||
(void)hwndConsole;
|
||||
}
|
||||
@@ -436,7 +436,7 @@ Close the fullscreen console.
|
||||
void PMAPI PM_closeConsole(
|
||||
PM_HWND hwndConsole)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)hwndConsole;
|
||||
}
|
||||
|
||||
@@ -475,7 +475,7 @@ void * PMAPI PM_mapToProcess(
|
||||
void *base,
|
||||
ulong limit)
|
||||
{
|
||||
// Not used anymore
|
||||
/* Not used anymore */
|
||||
(void)base;
|
||||
(void)limit;
|
||||
return NULL;
|
||||
@@ -491,7 +491,7 @@ ibool PMAPI PM_doBIOSPOST(
|
||||
void *mappedBIOS,
|
||||
ulong BIOSLen)
|
||||
{
|
||||
// This may not be possible in NT and should be done by the OS anyway
|
||||
/* This may not be possible in NT and should be done by the OS anyway */
|
||||
(void)axVal;
|
||||
(void)BIOSPhysAddr;
|
||||
(void)mappedBIOS;
|
||||
@@ -505,7 +505,7 @@ Return a pointer to the real mode BIOS data area.
|
||||
****************************************************************************/
|
||||
void * PMAPI PM_getBIOSPointer(void)
|
||||
{
|
||||
// Note that on NT this probably does not do what we expect!
|
||||
/* Note that on NT this probably does not do what we expect! */
|
||||
return PM_mapPhysicalAddr(0x400, 0x1000, true);
|
||||
}
|
||||
|
||||
@@ -525,7 +525,7 @@ Sleep for the specified number of milliseconds.
|
||||
void PMAPI PM_sleep(
|
||||
ulong milliseconds)
|
||||
{
|
||||
// We never use this in NT drivers
|
||||
/* We never use this in NT drivers */
|
||||
(void)milliseconds;
|
||||
}
|
||||
|
||||
@@ -535,8 +535,8 @@ Return the base I/O port for the specified COM port.
|
||||
****************************************************************************/
|
||||
int PMAPI PM_getCOMPort(int port)
|
||||
{
|
||||
// TODO: Re-code this to determine real values using the Plug and Play
|
||||
// manager for the OS.
|
||||
/* TODO: Re-code this to determine real values using the Plug and Play */
|
||||
/* manager for the OS. */
|
||||
switch (port) {
|
||||
case 0: return 0x3F8;
|
||||
case 1: return 0x2F8;
|
||||
@@ -552,8 +552,8 @@ Return the base I/O port for the specified LPT port.
|
||||
****************************************************************************/
|
||||
int PMAPI PM_getLPTPort(int port)
|
||||
{
|
||||
// TODO: Re-code this to determine real values using the Plug and Play
|
||||
// manager for the OS.
|
||||
/* TODO: Re-code this to determine real values using the Plug and Play */
|
||||
/* manager for the OS. */
|
||||
switch (port) {
|
||||
case 0: return 0x3BC;
|
||||
case 1: return 0x378;
|
||||
@@ -580,7 +580,7 @@ OS specific shared libraries not supported inside a VxD
|
||||
PM_MODULE PMAPI PM_loadLibrary(
|
||||
const char *szDLLName)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)szDLLName;
|
||||
return NULL;
|
||||
}
|
||||
@@ -593,7 +593,7 @@ void * PMAPI PM_getProcAddress(
|
||||
PM_MODULE hModule,
|
||||
const char *szProcName)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)hModule;
|
||||
(void)szProcName;
|
||||
return NULL;
|
||||
@@ -606,7 +606,7 @@ OS specific shared libraries not supported inside a VxD
|
||||
void PMAPI PM_freeLibrary(
|
||||
PM_MODULE hModule)
|
||||
{
|
||||
// Not used in NT drivers
|
||||
/* Not used in NT drivers */
|
||||
(void)hModule;
|
||||
}
|
||||
|
||||
@@ -618,9 +618,9 @@ void *PMAPI PM_findFirstFile(
|
||||
const char *filename,
|
||||
PM_findData *findData)
|
||||
{
|
||||
// TODO: This function should start a directory enumeration search
|
||||
// given the filename (with wildcards). The data should be
|
||||
// converted and returned in the findData standard form.
|
||||
/* TODO: This function should start a directory enumeration search */
|
||||
/* given the filename (with wildcards). The data should be */
|
||||
/* converted and returned in the findData standard form. */
|
||||
(void)filename;
|
||||
(void)findData;
|
||||
return PM_FILE_INVALID;
|
||||
@@ -634,10 +634,10 @@ ibool PMAPI PM_findNextFile(
|
||||
void *handle,
|
||||
PM_findData *findData)
|
||||
{
|
||||
// TODO: This function should find the next file in directory enumeration
|
||||
// search given the search criteria defined in the call to
|
||||
// PM_findFirstFile. The data should be converted and returned
|
||||
// in the findData standard form.
|
||||
/* TODO: This function should find the next file in directory enumeration */
|
||||
/* search given the search criteria defined in the call to */
|
||||
/* PM_findFirstFile. The data should be converted and returned */
|
||||
/* in the findData standard form. */
|
||||
(void)handle;
|
||||
(void)findData;
|
||||
return false;
|
||||
@@ -650,8 +650,8 @@ Function to close the find process
|
||||
void PMAPI PM_findClose(
|
||||
void *handle)
|
||||
{
|
||||
// TODO: This function should close the find process. This may do
|
||||
// nothing for some OS'es.
|
||||
/* TODO: This function should close the find process. This may do */
|
||||
/* nothing for some OS'es. */
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
@@ -671,7 +671,7 @@ numbering is:
|
||||
ibool PMAPI PM_driveValid(
|
||||
char drive)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)drive;
|
||||
return false;
|
||||
}
|
||||
@@ -687,7 +687,7 @@ void PMAPI PM_getdcwd(
|
||||
char *dir,
|
||||
int len)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)drive;
|
||||
(void)dir;
|
||||
(void)len;
|
||||
@@ -733,7 +733,7 @@ void PMAPI PM_setFileAttr(
|
||||
char kernelFilename[PM_MAX_PATH+5];
|
||||
ULONG FileAttributes = 0;
|
||||
|
||||
// Convert file attribute flags
|
||||
/* Convert file attribute flags */
|
||||
if (attrib & PM_FILE_READONLY)
|
||||
FileAttributes |= FILE_ATTRIBUTE_READONLY;
|
||||
if (attrib & PM_FILE_ARCHIVE)
|
||||
@@ -743,15 +743,15 @@ void PMAPI PM_setFileAttr(
|
||||
if (attrib & PM_FILE_SYSTEM)
|
||||
FileAttributes |= FILE_ATTRIBUTE_SYSTEM;
|
||||
|
||||
// Add prefix for addressing the file system. "\??\" is short for "\DosDevices\"
|
||||
/* Add prefix for addressing the file system. "\??\" is short for "\DosDevices\" */
|
||||
strcpy(kernelFilename, "\\??\\");
|
||||
strcat(kernelFilename, filename);
|
||||
|
||||
// Convert filename string to ansi string
|
||||
/* Convert filename string to ansi string */
|
||||
if ((uniFile = _PM_CStringToUnicodeString(kernelFilename)) == NULL)
|
||||
goto Exit;
|
||||
|
||||
// Must open a file to query it's attributes
|
||||
/* Must open a file to query it's attributes */
|
||||
InitializeObjectAttributes (&ObjectAttributes,
|
||||
uniFile,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
@@ -761,18 +761,18 @@ void PMAPI PM_setFileAttr(
|
||||
DesiredAccess | SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
NULL, //AllocationSize OPTIONAL,
|
||||
NULL, /*AllocationSize OPTIONAL, */
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
ShareAccess,
|
||||
CreateDisposition,
|
||||
FILE_RANDOM_ACCESS, //CreateOptions,
|
||||
NULL, //EaBuffer OPTIONAL,
|
||||
0 //EaLength (required if EaBuffer)
|
||||
FILE_RANDOM_ACCESS, /*CreateOptions, */
|
||||
NULL, /*EaBuffer OPTIONAL, */
|
||||
0 /*EaLength (required if EaBuffer) */
|
||||
);
|
||||
if (!NT_SUCCESS (status))
|
||||
goto Exit;
|
||||
|
||||
// Query timestamps
|
||||
/* Query timestamps */
|
||||
status = ZwQueryInformationFile(FileHandle,
|
||||
&IoStatusBlock,
|
||||
&FileBasic,
|
||||
@@ -782,12 +782,12 @@ void PMAPI PM_setFileAttr(
|
||||
if (!NT_SUCCESS (status))
|
||||
goto Exit;
|
||||
|
||||
// Change the four bits we change
|
||||
/* Change the four bits we change */
|
||||
FileBasic.FileAttributes &= ~(FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_ARCHIVE
|
||||
| FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
|
||||
FileBasic.FileAttributes |= FileAttributes;
|
||||
|
||||
// Set timestamps
|
||||
/* Set timestamps */
|
||||
ZwSetInformationFile( FileHandle,
|
||||
&IoStatusBlock,
|
||||
&FileBasic,
|
||||
@@ -821,15 +821,15 @@ uint PMAPI PM_getFileAttr(
|
||||
ULONG FileAttributes = 0;
|
||||
uint retval = 0;
|
||||
|
||||
// Add prefix for addressing the file system. "\??\" is short for "\DosDevices\"
|
||||
/* Add prefix for addressing the file system. "\??\" is short for "\DosDevices\" */
|
||||
strcpy(kernelFilename, "\\??\\");
|
||||
strcat(kernelFilename, filename);
|
||||
|
||||
// Convert filename string to ansi string
|
||||
/* Convert filename string to ansi string */
|
||||
if ((uniFile = _PM_CStringToUnicodeString(kernelFilename)) == NULL)
|
||||
goto Exit;
|
||||
|
||||
// Must open a file to query it's attributes
|
||||
/* Must open a file to query it's attributes */
|
||||
InitializeObjectAttributes (&ObjectAttributes,
|
||||
uniFile,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
@@ -839,18 +839,18 @@ uint PMAPI PM_getFileAttr(
|
||||
DesiredAccess | SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
NULL, //AllocationSize OPTIONAL,
|
||||
NULL, /*AllocationSize OPTIONAL, */
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
ShareAccess,
|
||||
CreateDisposition,
|
||||
FILE_RANDOM_ACCESS, //CreateOptions,
|
||||
NULL, //EaBuffer OPTIONAL,
|
||||
0 //EaLength (required if EaBuffer)
|
||||
FILE_RANDOM_ACCESS, /*CreateOptions, */
|
||||
NULL, /*EaBuffer OPTIONAL, */
|
||||
0 /*EaLength (required if EaBuffer) */
|
||||
);
|
||||
if (!NT_SUCCESS (status))
|
||||
goto Exit;
|
||||
|
||||
// Query timestamps
|
||||
/* Query timestamps */
|
||||
status = ZwQueryInformationFile(FileHandle,
|
||||
&IoStatusBlock,
|
||||
&FileBasic,
|
||||
@@ -860,7 +860,7 @@ uint PMAPI PM_getFileAttr(
|
||||
if (!NT_SUCCESS (status))
|
||||
goto Exit;
|
||||
|
||||
// Translate the file attributes
|
||||
/* Translate the file attributes */
|
||||
if (FileBasic.FileAttributes & FILE_ATTRIBUTE_READONLY)
|
||||
retval |= PM_FILE_READONLY;
|
||||
if (FileBasic.FileAttributes & FILE_ATTRIBUTE_ARCHIVE)
|
||||
@@ -883,7 +883,7 @@ Function to create a directory.
|
||||
ibool PMAPI PM_mkdir(
|
||||
const char *filename)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)filename;
|
||||
return false;
|
||||
}
|
||||
@@ -895,7 +895,7 @@ Function to remove a directory.
|
||||
ibool PMAPI PM_rmdir(
|
||||
const char *filename)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)filename;
|
||||
return false;
|
||||
}
|
||||
@@ -909,7 +909,7 @@ ibool PMAPI PM_getFileTime(
|
||||
ibool gmTime,
|
||||
PM_time *time)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)filename;
|
||||
(void)gmTime;
|
||||
(void)time;
|
||||
@@ -925,10 +925,9 @@ ibool PMAPI PM_setFileTime(
|
||||
ibool gmTime,
|
||||
PM_time *time)
|
||||
{
|
||||
// Not supported in NT drivers
|
||||
/* Not supported in NT drivers */
|
||||
(void)filename;
|
||||
(void)gmTime;
|
||||
(void)time;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ FILE * fopen(
|
||||
const char *filename,
|
||||
const char *mode)
|
||||
{
|
||||
ACCESS_MASK DesiredAccess; // for ZwCreateFile...
|
||||
ACCESS_MASK DesiredAccess; /* for ZwCreateFile... */
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
ULONG ShareAccess;
|
||||
ULONG CreateDisposition;
|
||||
@@ -56,7 +56,7 @@ FILE * fopen(
|
||||
char kernelFilename[PM_MAX_PATH+5];
|
||||
FILE *f;
|
||||
|
||||
// Add prefix for addressing the file system. "\??\" is short for "\DosDevices\"
|
||||
/* Add prefix for addressing the file system. "\??\" is short for "\DosDevices\" */
|
||||
strcpy(kernelFilename, "\\??\\");
|
||||
strcat(kernelFilename, filename);
|
||||
if ((f = PM_malloc(sizeof(FILE))) == NULL)
|
||||
@@ -65,32 +65,32 @@ FILE * fopen(
|
||||
f->text = (mode[1] == 't' || mode[2] == 't');
|
||||
f->writemode = (mode[0] == 'w') || (mode[0] == 'a');
|
||||
if (mode[0] == 'r') {
|
||||
// omode = OPEN_ACCESS_READONLY | OPEN_SHARE_COMPATIBLE;
|
||||
// action = ACTION_IFEXISTS_OPEN | ACTION_IFNOTEXISTS_FAIL;
|
||||
/* omode = OPEN_ACCESS_READONLY | OPEN_SHARE_COMPATIBLE; */
|
||||
/* action = ACTION_IFEXISTS_OPEN | ACTION_IFNOTEXISTS_FAIL; */
|
||||
DesiredAccess = GENERIC_READ;
|
||||
ShareAccess = FILE_SHARE_READ | FILE_SHARE_WRITE;
|
||||
CreateDisposition = FILE_OPEN;
|
||||
}
|
||||
else if (mode[0] == 'w') {
|
||||
// omode = OPEN_ACCESS_WRITEONLY | OPEN_SHARE_COMPATIBLE;
|
||||
// action = ACTION_IFEXISTS_TRUNCATE | ACTION_IFNOTEXISTS_CREATE;
|
||||
/* omode = OPEN_ACCESS_WRITEONLY | OPEN_SHARE_COMPATIBLE; */
|
||||
/* action = ACTION_IFEXISTS_TRUNCATE | ACTION_IFNOTEXISTS_CREATE; */
|
||||
DesiredAccess = GENERIC_WRITE;
|
||||
ShareAccess = FILE_SHARE_READ | FILE_SHARE_WRITE;
|
||||
CreateDisposition = FILE_SUPERSEDE;
|
||||
}
|
||||
else {
|
||||
// omode = OPEN_ACCESS_READWRITE | OPEN_SHARE_COMPATIBLE;
|
||||
// action = ACTION_IFEXISTS_OPEN | ACTION_IFNOTEXISTS_CREATE;
|
||||
/* omode = OPEN_ACCESS_READWRITE | OPEN_SHARE_COMPATIBLE; */
|
||||
/* action = ACTION_IFEXISTS_OPEN | ACTION_IFNOTEXISTS_CREATE; */
|
||||
DesiredAccess = GENERIC_READ | GENERIC_WRITE;
|
||||
ShareAccess = FILE_SHARE_READ;
|
||||
CreateDisposition = FILE_OPEN_IF;
|
||||
}
|
||||
|
||||
// Convert filename string to ansi string and then to UniCode string
|
||||
/* Convert filename string to ansi string and then to UniCode string */
|
||||
if ((uniFile = _PM_CStringToUnicodeString(kernelFilename)) == NULL)
|
||||
return NULL;
|
||||
|
||||
// Create the file
|
||||
/* Create the file */
|
||||
InitializeObjectAttributes (&ObjectAttributes,
|
||||
uniFile,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
@@ -100,19 +100,19 @@ FILE * fopen(
|
||||
DesiredAccess | SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
NULL, // AllocationSize OPTIONAL,
|
||||
NULL, /* AllocationSize OPTIONAL, */
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
ShareAccess,
|
||||
CreateDisposition,
|
||||
FILE_RANDOM_ACCESS, // CreateOptions,
|
||||
NULL, // EaBuffer OPTIONAL,
|
||||
0 // EaLength (required if EaBuffer)
|
||||
FILE_RANDOM_ACCESS, /* CreateOptions, */
|
||||
NULL, /* EaBuffer OPTIONAL, */
|
||||
0 /* EaLength (required if EaBuffer) */
|
||||
);
|
||||
if (!NT_SUCCESS (status))
|
||||
goto Error;
|
||||
f->handle = (int)FileHandle;
|
||||
|
||||
// Determine size of the file
|
||||
/* Determine size of the file */
|
||||
status = ZwQueryInformationFile( FileHandle,
|
||||
&IoStatusBlock,
|
||||
&FileInformation,
|
||||
@@ -123,7 +123,7 @@ FILE * fopen(
|
||||
goto Error;
|
||||
f->filesize = FileInformation.EndOfFile.LowPart;
|
||||
|
||||
// Move to the end of the file if we are appending
|
||||
/* Move to the end of the file if we are appending */
|
||||
if (mode[0] == 'a') {
|
||||
FilePosition.CurrentByteOffset.HighPart = 0;
|
||||
FilePosition.CurrentByteOffset.LowPart = f->filesize;
|
||||
@@ -158,18 +158,18 @@ size_t fread(
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
LARGE_INTEGER ByteOffset;
|
||||
|
||||
// Read any extra bytes from the file
|
||||
/* Read any extra bytes from the file */
|
||||
ByteOffset.HighPart = 0;
|
||||
ByteOffset.LowPart = f->offset;
|
||||
status = ZwReadFile( (HANDLE)f->handle,
|
||||
NULL, //IN HANDLE Event OPTIONAL,
|
||||
NULL, // IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
|
||||
NULL, // IN PVOID ApcContext OPTIONAL,
|
||||
NULL, /*IN HANDLE Event OPTIONAL, */
|
||||
NULL, /* IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, */
|
||||
NULL, /* IN PVOID ApcContext OPTIONAL, */
|
||||
&IoStatusBlock,
|
||||
ptr, // OUT PVOID Buffer,
|
||||
size * n, //IN ULONG Length,
|
||||
&ByteOffset, //OPTIONAL,
|
||||
NULL //IN PULONG Key OPTIONAL
|
||||
ptr, /* OUT PVOID Buffer, */
|
||||
size * n, /*IN ULONG Length, */
|
||||
&ByteOffset, /*OPTIONAL, */
|
||||
NULL /*IN PULONG Key OPTIONAL */
|
||||
);
|
||||
if (!NT_SUCCESS (status))
|
||||
return 0;
|
||||
@@ -196,14 +196,14 @@ size_t fwrite(
|
||||
ByteOffset.HighPart = 0;
|
||||
ByteOffset.LowPart = f->offset;
|
||||
status = ZwWriteFile( (HANDLE)f->handle,
|
||||
NULL, //IN HANDLE Event OPTIONAL,
|
||||
NULL, // IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
|
||||
NULL, // IN PVOID ApcContext OPTIONAL,
|
||||
NULL, /*IN HANDLE Event OPTIONAL, */
|
||||
NULL, /* IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, */
|
||||
NULL, /* IN PVOID ApcContext OPTIONAL, */
|
||||
&IoStatusBlock,
|
||||
(void*)ptr, // OUT PVOID Buffer,
|
||||
size * n, //IN ULONG Length,
|
||||
&ByteOffset, //OPTIONAL,
|
||||
NULL //IN PULONG Key OPTIONAL
|
||||
(void*)ptr, /* OUT PVOID Buffer, */
|
||||
size * n, /*IN ULONG Length, */
|
||||
&ByteOffset, /*OPTIONAL, */
|
||||
NULL /*IN PULONG Key OPTIONAL */
|
||||
);
|
||||
if (!NT_SUCCESS (status))
|
||||
return 0;
|
||||
@@ -220,7 +220,7 @@ NT driver implementation of the ANSI C fflush function.
|
||||
int fflush(
|
||||
FILE *f)
|
||||
{
|
||||
// Nothing to do here as we are not doing buffered I/O
|
||||
/* Nothing to do here as we are not doing buffered I/O */
|
||||
(void)f;
|
||||
return 0;
|
||||
}
|
||||
@@ -289,11 +289,11 @@ char *fgets(
|
||||
int len;
|
||||
char *cs;
|
||||
|
||||
// Read the entire buffer into memory (our functions are unbuffered!)
|
||||
/* Read the entire buffer into memory (our functions are unbuffered!) */
|
||||
if ((len = fread(s,1,n,f)) == 0)
|
||||
return NULL;
|
||||
|
||||
// Search for '\n' or end of string
|
||||
/* Search for '\n' or end of string */
|
||||
if (n > len)
|
||||
n = len;
|
||||
cs = s;
|
||||
@@ -328,4 +328,3 @@ int fclose(
|
||||
PM_free(f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -102,11 +102,11 @@ UNICODE_STRING *_PM_CStringToUnicodeString(
|
||||
ANSI_STRING ansiStr;
|
||||
UNICODE_STRING *uniStr;
|
||||
|
||||
// Allocate memory for the string structure
|
||||
/* Allocate memory for the string structure */
|
||||
if ((uniStr = ExAllocatePool(NonPagedPool, sizeof(UNICODE_STRING))) == NULL)
|
||||
return NULL;
|
||||
|
||||
// Allocate memory for the wide string itself
|
||||
/* Allocate memory for the wide string itself */
|
||||
length = (strlen(cstr) * sizeof(WCHAR)) + sizeof(WCHAR);
|
||||
if ((uniStr->Buffer = ExAllocatePool(NonPagedPool, length)) == NULL) {
|
||||
ExFreePool(uniStr);
|
||||
@@ -116,7 +116,7 @@ UNICODE_STRING *_PM_CStringToUnicodeString(
|
||||
uniStr->Length = 0;
|
||||
uniStr->MaximumLength = (USHORT)length;
|
||||
|
||||
// Convert filename string to ansi string and then to UniCode string
|
||||
/* Convert filename string to ansi string and then to UniCode string */
|
||||
RtlInitAnsiString(&ansiStr, cstr);
|
||||
RtlAnsiStringToUnicodeString(uniStr, &ansiStr, FALSE);
|
||||
return uniStr;
|
||||
@@ -137,4 +137,3 @@ void _PM_FreeUnicodeString(
|
||||
ExFreePool(uniStr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -121,4 +121,3 @@ passed, so if this happens we will be generating erronous results.
|
||||
****************************************************************************/
|
||||
ulong __ULZElapsedTime(ulong start,ulong finish)
|
||||
{ return finish - start; }
|
||||
|
||||
|
||||
BIN
board/MAI/bios_emulator/scitech/src/pm/os2/dossctl.obj
Normal file
BIN
board/MAI/bios_emulator/scitech/src/pm/os2/dossctl.obj
Normal file
Binary file not shown.
@@ -87,8 +87,8 @@ Converts a mickey movement value to a pixel adjustment value.
|
||||
static int MickeyToPixel(
|
||||
int mickey)
|
||||
{
|
||||
// TODO: We can add some code in here to handle 'acceleration' for
|
||||
// the mouse cursor. For now just use the mickeys.
|
||||
/* TODO: We can add some code in here to handle 'acceleration' for */
|
||||
/* the mouse cursor. For now just use the mickeys. */
|
||||
return mickey;
|
||||
}
|
||||
|
||||
@@ -369,15 +369,15 @@ static void _kbdMonThread(
|
||||
continue;
|
||||
}
|
||||
|
||||
//TODO: to be removed
|
||||
/*TODO: to be removed */
|
||||
/* Skip extended scancodes & some others */
|
||||
if (((kp.MonFlagWord >> 8) == 0xE0) || ((kp.KbdDDFlagWord & 0x0F) == 0x0F)) {
|
||||
DosMonWrite((PBYTE)&monOutbuf, (PBYTE)&kp, count);
|
||||
continue;
|
||||
}
|
||||
|
||||
// printf("RawScan = %X, XlatedScan = %X, fbStatus = %X, KbdDDFlags = %X\n",
|
||||
// kp.MonFlagWord >> 8, kp.XlatedScan, kp.u.ShiftState, kp.KbdDDFlagWord);
|
||||
/* printf("RawScan = %X, XlatedScan = %X, fbStatus = %X, KbdDDFlags = %X\n", */
|
||||
/* kp.MonFlagWord >> 8, kp.XlatedScan, kp.u.ShiftState, kp.KbdDDFlagWord); */
|
||||
|
||||
/* Protect access to buffer with mutex semaphore */
|
||||
rc = DosRequestMutexSem(hmtxKeyBuf, 1000);
|
||||
@@ -395,7 +395,7 @@ static void _kbdMonThread(
|
||||
kpNew = 0;
|
||||
if (kpNew != kpTail) {
|
||||
memcpy(&keyMonPkts[kpHead], &kp, sizeof(KEYPACKET));
|
||||
// TODO: fix this!
|
||||
/* TODO: fix this! */
|
||||
/* Convert break to make code */
|
||||
keyMonPkts[kpHead].MonFlagWord &= 0x7FFF;
|
||||
kpHead = kpNew;
|
||||
@@ -517,7 +517,7 @@ and this function can be used to resume it again later.
|
||||
****************************************************************************/
|
||||
void EVT_resume(void)
|
||||
{
|
||||
// Do nothing for OS/2
|
||||
/* Do nothing for OS/2 */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -527,7 +527,7 @@ de-install the event handling code.
|
||||
****************************************************************************/
|
||||
void EVT_suspend(void)
|
||||
{
|
||||
// Do nothing for OS/2
|
||||
/* Do nothing for OS/2 */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -563,4 +563,3 @@ void EVT_exit(void)
|
||||
DosCloseMutexSem(hmtxKeyBuf);
|
||||
KbdFlushBuffer(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -63,55 +63,55 @@ typedef struct _MLNPACKET {
|
||||
USHORT KbdDDFlagWord;
|
||||
} MLNPACKET;
|
||||
|
||||
// DBCSStatus
|
||||
/* DBCSStatus */
|
||||
|
||||
#define SF_SHIFTS 1 // If set to 1, shift status returned without a character
|
||||
#define SF_NOTCHAR 2 // 0 - Scan code is a character
|
||||
// 1 - Scan code is not a character;
|
||||
// instead it is an extended key code from the keyboard.
|
||||
#define SF_IMMEDIATE 32 // If set to 1, immediate conversion requested
|
||||
#define SF_TYPEMASK 192 // Has the following values:
|
||||
// 00 - Undefined
|
||||
// 01 - Final character; interim character flag is turned off
|
||||
// 10 - Interim character
|
||||
// 11 - Final character; interim character flag is turned on.
|
||||
// MonFlagWord
|
||||
#define SF_SHIFTS 1 /* If set to 1, shift status returned without a character */
|
||||
#define SF_NOTCHAR 2 /* 0 - Scan code is a character */
|
||||
/* 1 - Scan code is not a character; */
|
||||
/* instead it is an extended key code from the keyboard. */
|
||||
#define SF_IMMEDIATE 32 /* If set to 1, immediate conversion requested */
|
||||
#define SF_TYPEMASK 192 /* Has the following values: */
|
||||
/* 00 - Undefined */
|
||||
/* 01 - Final character; interim character flag is turned off */
|
||||
/* 10 - Interim character */
|
||||
/* 11 - Final character; interim character flag is turned on. */
|
||||
/* MonFlagWord */
|
||||
|
||||
#define MF_OPEN 1 // open
|
||||
#define MF_CLOSE 2 // close
|
||||
#define MF_FLUSH 4 // is flush packet
|
||||
#define MF_OPEN 1 /* open */
|
||||
#define MF_CLOSE 2 /* close */
|
||||
#define MF_FLUSH 4 /* is flush packet */
|
||||
|
||||
// KbdDDFlagWord
|
||||
/* KbdDDFlagWord */
|
||||
|
||||
#define KF_NOTSQPACKET 1024 // Don't put this packet in SQ buffer
|
||||
#define KF_ACCENTEDKEY 512 // Key was translated using previous accent.
|
||||
#define KF_MULTIMAKE 256 // Key was repeated make of a toggle key.
|
||||
#define KF_SECONDARYKEY 128 // Previous scan code was the E0 prefix code.
|
||||
#define KF_KEYBREAK 64 // This is the break of the key.
|
||||
#define KF_KEYTYPEMASK 63 // Isolates the Key Type field of DDFlags.
|
||||
#define KF_UNDEFKEY 63 // Key packet is undefined
|
||||
#define KF_SYSREQKEY 23 // This key packet is the SysReq key (4990)
|
||||
#define KF_PRINTFLUSHKEY 22 // This packet is Ct-Alt-PrtScr
|
||||
#define KF_PSPRINTECHOKEY 21 // This packet is Ctl-P
|
||||
#define KF_PRINTECHOKEY 20 // This packet is Ctl-PrtScr
|
||||
#define KF_PRTSCRKEY 19 // This packet is PrtScr
|
||||
#define KF_PSBREAKKEY 18 // This packet is Ctl-C
|
||||
#define KF_BREAKKEY 17 // This packet is Ctl-Break
|
||||
#define KF_ACCENTKEY 16 // This packet is an accent key
|
||||
#define KF_XRORPNOT 13 // This packet is a Read or Peek Notification Pct.
|
||||
#define KF_MLNOTIFICATION 14 // packet is a Multi-Layer NLS packet
|
||||
#define KF_HOTKEYPACKET 12 // This packet is the hot key.
|
||||
#define KF_BADKEYCOMBO 11 // Accent/char combo undefined, beep only.
|
||||
#define KF_WAKEUPKEY 10 // This packet is one following PAUSEKEY
|
||||
#define KF_PSPAUSEKEY 9 // This packet is Ctl-S
|
||||
#define KF_PAUSEKEY 8 // This packet is Ctl-Numlock or PAUSE
|
||||
#define KF_SHIFTMASK 7 // Key is a shift Key
|
||||
#define KF_DUMPKEY 6 // This packet is Ctl-Numlock-NumLock
|
||||
#define KF_REBOOTKEY 5 // This packet is Ctl-Alt-Del
|
||||
#define KF_RESENDCODE 4 // This packet is resend code from controller
|
||||
#define KF_OVERRUNCODE 3 // This packet is overrun code from controller
|
||||
#define KF_SECPREFIXCODE 2 // This packet is E0/E1 scan code
|
||||
#define KF_ACKCODE 1 // This packet is ack code from keyboard
|
||||
#define KF_NOTSQPACKET 1024 /* Don't put this packet in SQ buffer */
|
||||
#define KF_ACCENTEDKEY 512 /* Key was translated using previous accent. */
|
||||
#define KF_MULTIMAKE 256 /* Key was repeated make of a toggle key. */
|
||||
#define KF_SECONDARYKEY 128 /* Previous scan code was the E0 prefix code. */
|
||||
#define KF_KEYBREAK 64 /* This is the break of the key. */
|
||||
#define KF_KEYTYPEMASK 63 /* Isolates the Key Type field of DDFlags. */
|
||||
#define KF_UNDEFKEY 63 /* Key packet is undefined */
|
||||
#define KF_SYSREQKEY 23 /* This key packet is the SysReq key (4990) */
|
||||
#define KF_PRINTFLUSHKEY 22 /* This packet is Ct-Alt-PrtScr */
|
||||
#define KF_PSPRINTECHOKEY 21 /* This packet is Ctl-P */
|
||||
#define KF_PRINTECHOKEY 20 /* This packet is Ctl-PrtScr */
|
||||
#define KF_PRTSCRKEY 19 /* This packet is PrtScr */
|
||||
#define KF_PSBREAKKEY 18 /* This packet is Ctl-C */
|
||||
#define KF_BREAKKEY 17 /* This packet is Ctl-Break */
|
||||
#define KF_ACCENTKEY 16 /* This packet is an accent key */
|
||||
#define KF_XRORPNOT 13 /* This packet is a Read or Peek Notification Pct. */
|
||||
#define KF_MLNOTIFICATION 14 /* packet is a Multi-Layer NLS packet */
|
||||
#define KF_HOTKEYPACKET 12 /* This packet is the hot key. */
|
||||
#define KF_BADKEYCOMBO 11 /* Accent/char combo undefined, beep only. */
|
||||
#define KF_WAKEUPKEY 10 /* This packet is one following PAUSEKEY */
|
||||
#define KF_PSPAUSEKEY 9 /* This packet is Ctl-S */
|
||||
#define KF_PAUSEKEY 8 /* This packet is Ctl-Numlock or PAUSE */
|
||||
#define KF_SHIFTMASK 7 /* Key is a shift Key */
|
||||
#define KF_DUMPKEY 6 /* This packet is Ctl-Numlock-NumLock */
|
||||
#define KF_REBOOTKEY 5 /* This packet is Ctl-Alt-Del */
|
||||
#define KF_RESENDCODE 4 /* This packet is resend code from controller */
|
||||
#define KF_OVERRUNCODE 3 /* This packet is overrun code from controller */
|
||||
#define KF_SECPREFIXCODE 2 /* This packet is E0/E1 scan code */
|
||||
#define KF_ACKCODE 1 /* This packet is ack code from keyboard */
|
||||
|
||||
|
||||
typedef struct _MONBUF {
|
||||
@@ -120,29 +120,29 @@ typedef struct _MONBUF {
|
||||
BYTE Reserved[20];
|
||||
} MONBUF;
|
||||
|
||||
#define RS_SYSREG 32768 // Bit 15 SysReq key down
|
||||
#define RS_CAPSLOCK 16384 // Bit 14 Caps Lock key down
|
||||
#define RS_NUMLOCK 8192 // Bit 13 NumLock key down
|
||||
#define RS_SCROLLLOCK 4096 // Bit 12 Scroll Lock key down
|
||||
#define RS_RALT 2048 // Bit 11 Right Alt key down
|
||||
#define RS_RCONTROL 1024 // Bit 10 Right Ctrl key down
|
||||
#define RS_LALT 512 // Bit 9 Left Alt key down
|
||||
#define RS_LCONTROL 256 // Bit 8 Left Ctrl key down
|
||||
#define RS_INSERT 128 // Bit 7 Insert on
|
||||
#define RS_CAPS 64 // Bit 6 Caps Lock on
|
||||
#define RS_NUM 32 // Bit 5 NumLock on
|
||||
#define RS_SCROLL 16 // Bit 4 Scroll Lock on
|
||||
#define RS_ALT 8 // Bit 3 Either Alt key down
|
||||
#define RS_CONTROL 4 // Bit 2 Either Ctrl key down
|
||||
#define RS_LSHIFT 2 // Bit 1 Left Shift key down
|
||||
#define RS_RSHIFT 1 // Bit 0 Right Shift key down
|
||||
#define RS_SYSREG 32768 /* Bit 15 SysReq key down */
|
||||
#define RS_CAPSLOCK 16384 /* Bit 14 Caps Lock key down */
|
||||
#define RS_NUMLOCK 8192 /* Bit 13 NumLock key down */
|
||||
#define RS_SCROLLLOCK 4096 /* Bit 12 Scroll Lock key down */
|
||||
#define RS_RALT 2048 /* Bit 11 Right Alt key down */
|
||||
#define RS_RCONTROL 1024 /* Bit 10 Right Ctrl key down */
|
||||
#define RS_LALT 512 /* Bit 9 Left Alt key down */
|
||||
#define RS_LCONTROL 256 /* Bit 8 Left Ctrl key down */
|
||||
#define RS_INSERT 128 /* Bit 7 Insert on */
|
||||
#define RS_CAPS 64 /* Bit 6 Caps Lock on */
|
||||
#define RS_NUM 32 /* Bit 5 NumLock on */
|
||||
#define RS_SCROLL 16 /* Bit 4 Scroll Lock on */
|
||||
#define RS_ALT 8 /* Bit 3 Either Alt key down */
|
||||
#define RS_CONTROL 4 /* Bit 2 Either Ctrl key down */
|
||||
#define RS_LSHIFT 2 /* Bit 1 Left Shift key down */
|
||||
#define RS_RSHIFT 1 /* Bit 0 Right Shift key down */
|
||||
|
||||
|
||||
#define CS_RCONTROL 91 // Right Control
|
||||
#define CS_LSHIFT 42 // Left Shift
|
||||
#define CS_RSHIFT 54 // Right Shift
|
||||
#define CS_LALT 56 // Left Alt
|
||||
#define CS_RALT 94 // Right Alt
|
||||
#define CS_RCONTROL 91 /* Right Control */
|
||||
#define CS_LSHIFT 42 /* Left Shift */
|
||||
#define CS_RSHIFT 54 /* Right Shift */
|
||||
#define CS_LALT 56 /* Left Alt */
|
||||
#define CS_RALT 94 /* Right Alt */
|
||||
|
||||
|
||||
/* DosMon* prototypes */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user