25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: machine_test.c,v 1.1 2006/01/01 20:41:25 debug Exp $ |
* $Id: machine_test.c,v 1.17 2006/07/20 21:53:00 debug Exp $ |
29 |
* |
* |
30 |
* Various "test" machines (bare machines with just a CPU, or a bare machine |
* Various "test" machines (bare machines with just a CPU, or a bare machine |
31 |
* plus some experimental devices). |
* plus some experimental devices). |
40 |
#include "machine.h" |
#include "machine.h" |
41 |
#include "memory.h" |
#include "memory.h" |
42 |
#include "misc.h" |
#include "misc.h" |
43 |
#include "mp.h" |
|
44 |
|
#include "testmachine/dev_cons.h" |
45 |
|
#include "testmachine/dev_disk.h" |
46 |
|
#include "testmachine/dev_ether.h" |
47 |
|
#include "testmachine/dev_fb.h" |
48 |
|
#include "testmachine/dev_mp.h" |
49 |
|
|
50 |
|
|
51 |
static void default_test(struct machine *machine, struct cpu *cpu) |
static void default_test(struct machine *machine, struct cpu *cpu) |
52 |
{ |
{ |
53 |
char tmpstr[1000]; |
char tmpstr[1000]; |
54 |
snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%llx irq=0", |
|
55 |
(long long)DEV_CONS_ADDRESS); |
snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%"PRIx64" irq=0", |
56 |
|
(uint64_t) DEV_CONS_ADDRESS); |
57 |
machine->main_console_handle = (size_t)device_add(machine, tmpstr); |
machine->main_console_handle = (size_t)device_add(machine, tmpstr); |
58 |
|
|
59 |
snprintf(tmpstr, sizeof(tmpstr), "mp addr=0x%llx", |
snprintf(tmpstr, sizeof(tmpstr), "mp addr=0x%"PRIx64, |
60 |
(long long)DEV_MP_ADDRESS); |
(uint64_t) DEV_MP_ADDRESS); |
61 |
device_add(machine, tmpstr); |
device_add(machine, tmpstr); |
62 |
|
|
63 |
dev_fb_init(machine, machine->memory, DEV_FB_ADDRESS, VFB_GENERIC, |
snprintf(tmpstr, sizeof(tmpstr), "fbctrl addr=0x%"PRIx64, |
64 |
640,480, 640,480, 24, "testalpha generic"); |
(uint64_t) DEV_FBCTRL_ADDRESS); |
65 |
|
device_add(machine, tmpstr); |
66 |
|
|
67 |
snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%llx", |
snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%"PRIx64, |
68 |
(long long)DEV_DISK_ADDRESS); |
(uint64_t) DEV_DISK_ADDRESS); |
69 |
device_add(machine, tmpstr); |
device_add(machine, tmpstr); |
70 |
|
|
71 |
snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%llx irq=0", |
snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%"PRIx64" irq=0", |
72 |
(long long)DEV_ETHER_ADDRESS); |
(uint64_t) DEV_ETHER_ADDRESS); |
73 |
device_add(machine, tmpstr); |
device_add(machine, tmpstr); |
74 |
} |
} |
75 |
|
|
94 |
|
|
95 |
MACHINE_DEFAULT_CPU(barealpha) |
MACHINE_DEFAULT_CPU(barealpha) |
96 |
{ |
{ |
97 |
machine->cpu_name = strdup("Alpha"); |
machine->cpu_name = strdup("21264"); |
98 |
} |
} |
99 |
|
|
100 |
|
|
101 |
MACHINE_DEFAULT_CPU(testalpha) |
MACHINE_DEFAULT_CPU(testalpha) |
102 |
{ |
{ |
103 |
machine->cpu_name = strdup("Alpha"); |
machine->cpu_name = strdup("21264"); |
104 |
} |
} |
105 |
|
|
106 |
|
|
107 |
MACHINE_REGISTER(barealpha) |
MACHINE_REGISTER(barealpha) |
108 |
{ |
{ |
109 |
MR_DEFAULT(barealpha, "Generic \"bare\" Alpha machine", |
MR_DEFAULT(barealpha, "Generic \"bare\" Alpha machine", |
110 |
ARCH_ALPHA, MACHINE_BAREALPHA, 1, 0); |
ARCH_ALPHA, MACHINE_BAREALPHA); |
111 |
me->aliases[0] = "barealpha"; |
|
112 |
machine_entry_add(me, ARCH_ALPHA); |
machine_entry_add_alias(me, "barealpha"); |
113 |
} |
} |
114 |
|
|
115 |
|
|
116 |
MACHINE_REGISTER(testalpha) |
MACHINE_REGISTER(testalpha) |
117 |
{ |
{ |
118 |
MR_DEFAULT(testalpha, "Test-machine for Alpha", |
MR_DEFAULT(testalpha, "Test-machine for Alpha", |
119 |
ARCH_ALPHA, MACHINE_TESTALPHA, 1, 0); |
ARCH_ALPHA, MACHINE_TESTALPHA); |
120 |
me->aliases[0] = "testalpha"; |
|
121 |
machine_entry_add(me, ARCH_ALPHA); |
machine_entry_add_alias(me, "testalpha"); |
122 |
} |
} |
123 |
|
|
124 |
|
|
166 |
MACHINE_REGISTER(barearm) |
MACHINE_REGISTER(barearm) |
167 |
{ |
{ |
168 |
MR_DEFAULT(barearm, "Generic \"bare\" ARM machine", |
MR_DEFAULT(barearm, "Generic \"bare\" ARM machine", |
169 |
ARCH_ARM, MACHINE_BAREARM, 1, 0); |
ARCH_ARM, MACHINE_BAREARM); |
170 |
me->aliases[0] = "barearm"; |
|
171 |
machine_entry_add(me, ARCH_ARM); |
machine_entry_add_alias(me, "barearm"); |
172 |
} |
} |
173 |
|
|
174 |
|
|
175 |
MACHINE_REGISTER(testarm) |
MACHINE_REGISTER(testarm) |
176 |
{ |
{ |
177 |
MR_DEFAULT(testarm, "Test-machine for ARM", |
MR_DEFAULT(testarm, "Test-machine for ARM", ARCH_ARM, MACHINE_TESTARM); |
|
ARCH_ARM, MACHINE_TESTARM, 1, 0); |
|
|
me->aliases[0] = "testarm"; |
|
|
machine_entry_add(me, ARCH_ARM); |
|
|
} |
|
178 |
|
|
179 |
|
machine_entry_add_alias(me, "testarm"); |
|
|
|
|
MACHINE_SETUP(bareavr) |
|
|
{ |
|
|
machine->machine_name = "Generic \"bare\" AVR machine"; |
|
|
machine->stable = 1; |
|
180 |
} |
} |
181 |
|
|
182 |
|
|
|
MACHINE_DEFAULT_CPU(bareavr) |
|
|
{ |
|
|
machine->cpu_name = strdup("AVR"); |
|
|
} |
|
|
|
|
|
|
|
|
MACHINE_REGISTER(bareavr) |
|
|
{ |
|
|
MR_DEFAULT(bareavr, "Generic \"bare\" AVR machine", |
|
|
ARCH_AVR, MACHINE_BAREAVR, 1, 0); |
|
|
me->aliases[0] = "bareavr"; |
|
|
machine_entry_add(me, ARCH_AVR); |
|
|
} |
|
|
|
|
183 |
|
|
184 |
MACHINE_SETUP(barehppa) |
MACHINE_SETUP(barehppa) |
185 |
{ |
{ |
214 |
MACHINE_REGISTER(barehppa) |
MACHINE_REGISTER(barehppa) |
215 |
{ |
{ |
216 |
MR_DEFAULT(barehppa, "Generic \"bare\" HPPA machine", |
MR_DEFAULT(barehppa, "Generic \"bare\" HPPA machine", |
217 |
ARCH_HPPA, MACHINE_BAREHPPA, 1, 0); |
ARCH_HPPA, MACHINE_BAREHPPA); |
218 |
me->aliases[0] = "barehppa"; |
|
219 |
machine_entry_add(me, ARCH_HPPA); |
machine_entry_add_alias(me, "barehppa"); |
220 |
} |
} |
221 |
|
|
222 |
|
|
223 |
MACHINE_REGISTER(testhppa) |
MACHINE_REGISTER(testhppa) |
224 |
{ |
{ |
225 |
MR_DEFAULT(testhppa, "Test-machine for HPPA", |
MR_DEFAULT(testhppa, "Test-machine for HPPA", |
226 |
ARCH_HPPA, MACHINE_TESTHPPA, 1, 0); |
ARCH_HPPA, MACHINE_TESTHPPA); |
227 |
me->aliases[0] = "testhppa"; |
|
228 |
machine_entry_add(me, ARCH_HPPA); |
machine_entry_add_alias(me, "testhppa"); |
229 |
} |
} |
230 |
|
|
231 |
|
|
262 |
MACHINE_REGISTER(barei960) |
MACHINE_REGISTER(barei960) |
263 |
{ |
{ |
264 |
MR_DEFAULT(barei960, "Generic \"bare\" i960 machine", |
MR_DEFAULT(barei960, "Generic \"bare\" i960 machine", |
265 |
ARCH_I960, MACHINE_BAREI960, 1, 0); |
ARCH_I960, MACHINE_BAREI960); |
266 |
me->aliases[0] = "barei960"; |
|
267 |
machine_entry_add(me, ARCH_I960); |
machine_entry_add_alias(me, "barei960"); |
268 |
} |
} |
269 |
|
|
270 |
|
|
271 |
MACHINE_REGISTER(testi960) |
MACHINE_REGISTER(testi960) |
272 |
{ |
{ |
273 |
MR_DEFAULT(testi960, "Test-machine for i960", |
MR_DEFAULT(testi960, "Test-machine for i960", |
274 |
ARCH_I960, MACHINE_TESTI960, 1, 0); |
ARCH_I960, MACHINE_TESTI960); |
275 |
me->aliases[0] = "testi960"; |
|
276 |
machine_entry_add(me, ARCH_I960); |
machine_entry_add_alias(me, "testi960"); |
277 |
} |
} |
278 |
|
|
279 |
|
|
310 |
MACHINE_REGISTER(bareia64) |
MACHINE_REGISTER(bareia64) |
311 |
{ |
{ |
312 |
MR_DEFAULT(bareia64, "Generic \"bare\" IA64 machine", |
MR_DEFAULT(bareia64, "Generic \"bare\" IA64 machine", |
313 |
ARCH_IA64, MACHINE_BAREIA64, 1, 0); |
ARCH_IA64, MACHINE_BAREIA64); |
314 |
me->aliases[0] = "bareia64"; |
|
315 |
machine_entry_add(me, ARCH_IA64); |
machine_entry_add_alias(me, "bareia64"); |
316 |
} |
} |
317 |
|
|
318 |
|
|
319 |
MACHINE_REGISTER(testia64) |
MACHINE_REGISTER(testia64) |
320 |
{ |
{ |
321 |
MR_DEFAULT(testia64, "Test-machine for IA64", |
MR_DEFAULT(testia64, "Test-machine for IA64", |
322 |
ARCH_IA64, MACHINE_TESTIA64, 1, 0); |
ARCH_IA64, MACHINE_TESTIA64); |
323 |
me->aliases[0] = "testia64"; |
|
324 |
machine_entry_add(me, ARCH_IA64); |
machine_entry_add_alias(me, "testia64"); |
325 |
} |
} |
326 |
|
|
327 |
|
|
358 |
MACHINE_REGISTER(barem68k) |
MACHINE_REGISTER(barem68k) |
359 |
{ |
{ |
360 |
MR_DEFAULT(barem68k, "Generic \"bare\" M68K machine", |
MR_DEFAULT(barem68k, "Generic \"bare\" M68K machine", |
361 |
ARCH_M68K, MACHINE_BAREM68K, 1, 0); |
ARCH_M68K, MACHINE_BAREM68K); |
362 |
me->aliases[0] = "barem68k"; |
|
363 |
machine_entry_add(me, ARCH_M68K); |
machine_entry_add_alias(me, "barem68k"); |
364 |
} |
} |
365 |
|
|
366 |
|
|
367 |
MACHINE_REGISTER(testm68k) |
MACHINE_REGISTER(testm68k) |
368 |
{ |
{ |
369 |
MR_DEFAULT(testm68k, "Test-machine for M68K", |
MR_DEFAULT(testm68k, "Test-machine for M68K", |
370 |
ARCH_M68K, MACHINE_TESTM68K, 1, 0); |
ARCH_M68K, MACHINE_TESTM68K); |
371 |
me->aliases[0] = "testm68k"; |
|
372 |
machine_entry_add(me, ARCH_M68K); |
machine_entry_add_alias(me, "testm68k"); |
373 |
} |
} |
374 |
|
|
375 |
|
|
402 |
machine->stable = 1; |
machine->stable = 1; |
403 |
cpu->byte_order = EMUL_BIG_ENDIAN; |
cpu->byte_order = EMUL_BIG_ENDIAN; |
404 |
|
|
405 |
snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%llx irq=2", |
snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%"PRIx64" irq=2", |
406 |
(long long)DEV_CONS_ADDRESS); |
(uint64_t) DEV_CONS_ADDRESS); |
407 |
machine->main_console_handle = (size_t)device_add(machine, tmpstr); |
machine->main_console_handle = (size_t)device_add(machine, tmpstr); |
408 |
|
|
409 |
snprintf(tmpstr, sizeof(tmpstr), "mp addr=0x%llx", |
snprintf(tmpstr, sizeof(tmpstr), "mp addr=0x%"PRIx64, |
410 |
(long long)DEV_MP_ADDRESS); |
(uint64_t) DEV_MP_ADDRESS); |
411 |
device_add(machine, tmpstr); |
device_add(machine, tmpstr); |
412 |
|
|
413 |
dev_fb_init(machine, machine->memory, DEV_FB_ADDRESS, VFB_GENERIC, |
snprintf(tmpstr, sizeof(tmpstr), "fbctrl addr=0x%"PRIx64, |
414 |
640,480, 640,480, 24, "testmips generic"); |
(uint64_t) DEV_FBCTRL_ADDRESS); |
415 |
|
device_add(machine, tmpstr); |
416 |
|
|
417 |
snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%llx", |
snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%"PRIx64, |
418 |
(long long)DEV_DISK_ADDRESS); |
(uint64_t) DEV_DISK_ADDRESS); |
419 |
device_add(machine, tmpstr); |
device_add(machine, tmpstr); |
420 |
|
|
421 |
snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%llx irq=3", |
snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%"PRIx64" irq=3", |
422 |
(long long)DEV_ETHER_ADDRESS); |
(uint64_t) DEV_ETHER_ADDRESS); |
423 |
device_add(machine, tmpstr); |
device_add(machine, tmpstr); |
424 |
} |
} |
425 |
|
|
426 |
|
|
427 |
MACHINE_DEFAULT_CPU(baremips) |
MACHINE_DEFAULT_CPU(baremips) |
428 |
{ |
{ |
429 |
machine->cpu_name = strdup("R4000"); |
machine->cpu_name = strdup("5Kc"); |
430 |
} |
} |
431 |
|
|
432 |
|
|
433 |
MACHINE_DEFAULT_CPU(testmips) |
MACHINE_DEFAULT_CPU(testmips) |
434 |
{ |
{ |
435 |
machine->cpu_name = strdup("R4000"); |
machine->cpu_name = strdup("5Kc"); |
436 |
} |
} |
437 |
|
|
438 |
|
|
439 |
MACHINE_REGISTER(baremips) |
MACHINE_REGISTER(baremips) |
440 |
{ |
{ |
441 |
MR_DEFAULT(baremips, "Generic \"bare\" MIPS machine", |
MR_DEFAULT(baremips, "Generic \"bare\" MIPS machine", |
442 |
ARCH_MIPS, MACHINE_BAREMIPS, 1, 0); |
ARCH_MIPS, MACHINE_BAREMIPS); |
443 |
me->aliases[0] = "baremips"; |
|
444 |
machine_entry_add(me, ARCH_MIPS); |
machine_entry_add_alias(me, "baremips"); |
445 |
} |
} |
446 |
|
|
447 |
|
|
448 |
MACHINE_REGISTER(testmips) |
MACHINE_REGISTER(testmips) |
449 |
{ |
{ |
450 |
MR_DEFAULT(testmips, "Test-machine for MIPS", |
MR_DEFAULT(testmips, "Test-machine for MIPS", |
451 |
ARCH_MIPS, MACHINE_TESTMIPS, 1, 0); |
ARCH_MIPS, MACHINE_TESTMIPS); |
452 |
me->aliases[0] = "testmips"; |
|
453 |
machine_entry_add(me, ARCH_MIPS); |
machine_entry_add_alias(me, "testmips"); |
454 |
} |
} |
455 |
|
|
456 |
|
|
487 |
MACHINE_REGISTER(bareppc) |
MACHINE_REGISTER(bareppc) |
488 |
{ |
{ |
489 |
MR_DEFAULT(bareppc, "Generic \"bare\" PPC machine", |
MR_DEFAULT(bareppc, "Generic \"bare\" PPC machine", |
490 |
ARCH_PPC, MACHINE_BAREPPC, 1, 0); |
ARCH_PPC, MACHINE_BAREPPC); |
491 |
me->aliases[0] = "bareppc"; |
|
492 |
machine_entry_add(me, ARCH_PPC); |
machine_entry_add_alias(me, "bareppc"); |
493 |
} |
} |
494 |
|
|
495 |
|
|
496 |
MACHINE_REGISTER(testppc) |
MACHINE_REGISTER(testppc) |
497 |
{ |
{ |
498 |
MR_DEFAULT(testppc, "Test-machine for PPC", |
MR_DEFAULT(testppc, "Test-machine for PPC", ARCH_PPC, MACHINE_TESTPPC); |
499 |
ARCH_PPC, MACHINE_TESTPPC, 1, 0); |
|
500 |
me->aliases[0] = "testppc"; |
machine_entry_add_alias(me, "testppc"); |
|
machine_entry_add(me, ARCH_PPC); |
|
501 |
} |
} |
502 |
|
|
503 |
|
|
534 |
MACHINE_REGISTER(baresh) |
MACHINE_REGISTER(baresh) |
535 |
{ |
{ |
536 |
MR_DEFAULT(baresh, "Generic \"bare\" SH machine", |
MR_DEFAULT(baresh, "Generic \"bare\" SH machine", |
537 |
ARCH_SH, MACHINE_BARESH, 1, 0); |
ARCH_SH, MACHINE_BARESH); |
538 |
me->aliases[0] = "baresh"; |
|
539 |
machine_entry_add(me, ARCH_SH); |
machine_entry_add_alias(me, "baresh"); |
540 |
} |
} |
541 |
|
|
542 |
|
|
543 |
MACHINE_REGISTER(testsh) |
MACHINE_REGISTER(testsh) |
544 |
{ |
{ |
545 |
MR_DEFAULT(testsh, "Test-machine for SH", |
MR_DEFAULT(testsh, "Test-machine for SH", ARCH_SH, MACHINE_TESTSH); |
546 |
ARCH_SH, MACHINE_TESTSH, 1, 0); |
|
547 |
me->aliases[0] = "testsh"; |
machine_entry_add_alias(me, "testsh"); |
|
machine_entry_add(me, ARCH_SH); |
|
548 |
} |
} |
549 |
|
|
550 |
|
|
568 |
|
|
569 |
MACHINE_DEFAULT_CPU(baresparc) |
MACHINE_DEFAULT_CPU(baresparc) |
570 |
{ |
{ |
571 |
machine->cpu_name = strdup("SPARCv9"); |
machine->cpu_name = strdup("UltraSPARC"); |
572 |
} |
} |
573 |
|
|
574 |
|
|
575 |
MACHINE_DEFAULT_CPU(testsparc) |
MACHINE_DEFAULT_CPU(testsparc) |
576 |
{ |
{ |
577 |
machine->cpu_name = strdup("SPARCv9"); |
machine->cpu_name = strdup("UltraSPARC"); |
578 |
} |
} |
579 |
|
|
580 |
|
|
581 |
MACHINE_REGISTER(baresparc) |
MACHINE_REGISTER(baresparc) |
582 |
{ |
{ |
583 |
MR_DEFAULT(baresparc, "Generic \"bare\" SPARC machine", |
MR_DEFAULT(baresparc, "Generic \"bare\" SPARC machine", |
584 |
ARCH_SPARC, MACHINE_BARESPARC, 1, 0); |
ARCH_SPARC, MACHINE_BARESPARC); |
585 |
me->aliases[0] = "baresparc"; |
|
586 |
machine_entry_add(me, ARCH_SPARC); |
machine_entry_add_alias(me, "baresparc"); |
587 |
} |
} |
588 |
|
|
589 |
|
|
590 |
MACHINE_REGISTER(testsparc) |
MACHINE_REGISTER(testsparc) |
591 |
{ |
{ |
592 |
MR_DEFAULT(testsparc, "Test-machine for SPARC", |
MR_DEFAULT(testsparc, "Test-machine for SPARC", |
593 |
ARCH_SPARC, MACHINE_TESTSPARC, 1, 0); |
ARCH_SPARC, MACHINE_TESTSPARC); |
594 |
me->aliases[0] = "testsparc"; |
|
595 |
machine_entry_add(me, ARCH_SPARC); |
machine_entry_add_alias(me, "testsparc"); |
596 |
|
} |
597 |
|
|
598 |
|
|
599 |
|
MACHINE_SETUP(baretransputer) |
600 |
|
{ |
601 |
|
machine->machine_name = "Generic \"bare\" Transputer machine"; |
602 |
|
machine->stable = 1; |
603 |
|
} |
604 |
|
|
605 |
|
|
606 |
|
MACHINE_DEFAULT_CPU(baretransputer) |
607 |
|
{ |
608 |
|
machine->cpu_name = strdup("T800"); |
609 |
|
} |
610 |
|
|
611 |
|
|
612 |
|
MACHINE_REGISTER(baretransputer) |
613 |
|
{ |
614 |
|
MR_DEFAULT(baretransputer, "Generic \"bare\" Transputer machine", |
615 |
|
ARCH_TRANSPUTER, MACHINE_BARETRANSPUTER); |
616 |
|
|
617 |
|
machine_entry_add_alias(me, "baretransputer"); |
618 |
} |
} |
619 |
|
|