--- trunk/src/machines/machine_test.c 2007/10/08 16:19:37 22 +++ trunk/src/machines/machine_test.c 2007/10/08 16:21:53 38 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2006 Anders Gavare. All rights reserved. + * Copyright (C) 2005-2007 Anders Gavare. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -25,7 +25,7 @@ * SUCH DAMAGE. * * - * $Id: machine_test.c,v 1.1 2006/01/01 20:41:25 debug Exp $ + * $Id: machine_test.c,v 1.31 2007/04/10 17:26:20 debug Exp $ * * Various "test" machines (bare machines with just a CPU, or a bare machine * plus some experimental devices). @@ -36,33 +36,44 @@ #include "cpu.h" #include "device.h" -#include "devices.h" #include "machine.h" #include "memory.h" #include "misc.h" -#include "mp.h" + +#include "testmachine/dev_cons.h" +#include "testmachine/dev_disk.h" +#include "testmachine/dev_ether.h" +#include "testmachine/dev_fb.h" +#include "testmachine/dev_mp.h" +#include "testmachine/dev_rtc.h" static void default_test(struct machine *machine, struct cpu *cpu) { char tmpstr[1000]; - snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%llx irq=0", - (long long)DEV_CONS_ADDRESS); + + snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%"PRIx64" irq=none", + (uint64_t) DEV_CONS_ADDRESS); machine->main_console_handle = (size_t)device_add(machine, tmpstr); - snprintf(tmpstr, sizeof(tmpstr), "mp addr=0x%llx", - (long long)DEV_MP_ADDRESS); + snprintf(tmpstr, sizeof(tmpstr), "mp addr=0x%"PRIx64, + (uint64_t) DEV_MP_ADDRESS); + device_add(machine, tmpstr); + + snprintf(tmpstr, sizeof(tmpstr), "fbctrl addr=0x%"PRIx64, + (uint64_t) DEV_FBCTRL_ADDRESS); device_add(machine, tmpstr); - dev_fb_init(machine, machine->memory, DEV_FB_ADDRESS, VFB_GENERIC, - 640,480, 640,480, 24, "testalpha generic"); + snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%"PRIx64, + (uint64_t) DEV_DISK_ADDRESS); + device_add(machine, tmpstr); - snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%llx", - (long long)DEV_DISK_ADDRESS); + snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%"PRIx64" irq=none", + (uint64_t) DEV_ETHER_ADDRESS); device_add(machine, tmpstr); - snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%llx irq=0", - (long long)DEV_ETHER_ADDRESS); + snprintf(tmpstr, sizeof(tmpstr), "rtc addr=0x%"PRIx64" irq=none", + (uint64_t) DEV_RTC_ADDRESS); device_add(machine, tmpstr); } @@ -87,31 +98,31 @@ MACHINE_DEFAULT_CPU(barealpha) { - machine->cpu_name = strdup("Alpha"); + machine->cpu_name = strdup("21264"); } MACHINE_DEFAULT_CPU(testalpha) { - machine->cpu_name = strdup("Alpha"); + machine->cpu_name = strdup("21264"); } MACHINE_REGISTER(barealpha) { MR_DEFAULT(barealpha, "Generic \"bare\" Alpha machine", - ARCH_ALPHA, MACHINE_BAREALPHA, 1, 0); - me->aliases[0] = "barealpha"; - machine_entry_add(me, ARCH_ALPHA); + ARCH_ALPHA, MACHINE_BAREALPHA); + + machine_entry_add_alias(me, "barealpha"); } MACHINE_REGISTER(testalpha) { MR_DEFAULT(testalpha, "Test-machine for Alpha", - ARCH_ALPHA, MACHINE_TESTALPHA, 1, 0); - me->aliases[0] = "testalpha"; - machine_entry_add(me, ARCH_ALPHA); + ARCH_ALPHA, MACHINE_TESTALPHA); + + machine_entry_add_alias(me, "testalpha"); } @@ -159,187 +170,20 @@ MACHINE_REGISTER(barearm) { MR_DEFAULT(barearm, "Generic \"bare\" ARM machine", - ARCH_ARM, MACHINE_BAREARM, 1, 0); - me->aliases[0] = "barearm"; - machine_entry_add(me, ARCH_ARM); -} - - -MACHINE_REGISTER(testarm) -{ - MR_DEFAULT(testarm, "Test-machine for ARM", - ARCH_ARM, MACHINE_TESTARM, 1, 0); - me->aliases[0] = "testarm"; - machine_entry_add(me, ARCH_ARM); -} - - - -MACHINE_SETUP(bareavr) -{ - machine->machine_name = "Generic \"bare\" AVR machine"; - machine->stable = 1; -} - - -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); -} - - -MACHINE_SETUP(barehppa) -{ - machine->machine_name = "Generic \"bare\" HPPA machine"; - machine->stable = 1; -} - - -MACHINE_SETUP(testhppa) -{ - machine->machine_name = "HPPA test machine"; - machine->stable = 1; - - /* TODO: interrupt for HPPA? */ - - default_test(machine, cpu); -} - - -MACHINE_DEFAULT_CPU(barehppa) -{ - machine->cpu_name = strdup("HPPA"); -} - - -MACHINE_DEFAULT_CPU(testhppa) -{ - machine->cpu_name = strdup("HPPA"); -} - - -MACHINE_REGISTER(barehppa) -{ - MR_DEFAULT(barehppa, "Generic \"bare\" HPPA machine", - ARCH_HPPA, MACHINE_BAREHPPA, 1, 0); - me->aliases[0] = "barehppa"; - machine_entry_add(me, ARCH_HPPA); -} - - -MACHINE_REGISTER(testhppa) -{ - MR_DEFAULT(testhppa, "Test-machine for HPPA", - ARCH_HPPA, MACHINE_TESTHPPA, 1, 0); - me->aliases[0] = "testhppa"; - machine_entry_add(me, ARCH_HPPA); -} - - -MACHINE_SETUP(barei960) -{ - machine->machine_name = "Generic \"bare\" i960 machine"; - machine->stable = 1; -} + ARCH_ARM, MACHINE_BAREARM); - -MACHINE_SETUP(testi960) -{ - machine->machine_name = "i960 test machine"; - machine->stable = 1; - - /* TODO: interrupt for i960? */ - - default_test(machine, cpu); -} - - -MACHINE_DEFAULT_CPU(barei960) -{ - machine->cpu_name = strdup("i960"); -} - - -MACHINE_DEFAULT_CPU(testi960) -{ - machine->cpu_name = strdup("i960"); + machine_entry_add_alias(me, "barearm"); } -MACHINE_REGISTER(barei960) -{ - MR_DEFAULT(barei960, "Generic \"bare\" i960 machine", - ARCH_I960, MACHINE_BAREI960, 1, 0); - me->aliases[0] = "barei960"; - machine_entry_add(me, ARCH_I960); -} - - -MACHINE_REGISTER(testi960) -{ - MR_DEFAULT(testi960, "Test-machine for i960", - ARCH_I960, MACHINE_TESTI960, 1, 0); - me->aliases[0] = "testi960"; - machine_entry_add(me, ARCH_I960); -} - - -MACHINE_SETUP(bareia64) -{ - machine->machine_name = "Generic \"bare\" IA64 machine"; - machine->stable = 1; -} - - -MACHINE_SETUP(testia64) -{ - machine->machine_name = "IA64 test machine"; - machine->stable = 1; - - /* TODO: interrupt for IA64? */ - - default_test(machine, cpu); -} - - -MACHINE_DEFAULT_CPU(bareia64) -{ - machine->cpu_name = strdup("IA64"); -} - - -MACHINE_DEFAULT_CPU(testia64) +MACHINE_REGISTER(testarm) { - machine->cpu_name = strdup("IA64"); -} + MR_DEFAULT(testarm, "Test-machine for ARM", ARCH_ARM, MACHINE_TESTARM); - -MACHINE_REGISTER(bareia64) -{ - MR_DEFAULT(bareia64, "Generic \"bare\" IA64 machine", - ARCH_IA64, MACHINE_BAREIA64, 1, 0); - me->aliases[0] = "bareia64"; - machine_entry_add(me, ARCH_IA64); + machine_entry_add_alias(me, "testarm"); } -MACHINE_REGISTER(testia64) -{ - MR_DEFAULT(testia64, "Test-machine for IA64", - ARCH_IA64, MACHINE_TESTIA64, 1, 0); - me->aliases[0] = "testia64"; - machine_entry_add(me, ARCH_IA64); -} - MACHINE_SETUP(barem68k) { @@ -374,18 +218,18 @@ MACHINE_REGISTER(barem68k) { MR_DEFAULT(barem68k, "Generic \"bare\" M68K machine", - ARCH_M68K, MACHINE_BAREM68K, 1, 0); - me->aliases[0] = "barem68k"; - machine_entry_add(me, ARCH_M68K); + ARCH_M68K, MACHINE_BAREM68K); + + machine_entry_add_alias(me, "barem68k"); } MACHINE_REGISTER(testm68k) { MR_DEFAULT(testm68k, "Test-machine for M68K", - ARCH_M68K, MACHINE_TESTM68K, 1, 0); - me->aliases[0] = "testm68k"; - machine_entry_add(me, ARCH_M68K); + ARCH_M68K, MACHINE_TESTM68K); + + machine_entry_add_alias(me, "testm68k"); } @@ -400,72 +244,82 @@ MACHINE_SETUP(testmips) { /* - * A MIPS test machine (which happens to work with the - * code in my master's thesis). :-) + * A MIPS test machine. Originally, this was created as a way for + * me to test my master's thesis code; since then it has both + * evolved to support new things, and suffered bit rot so that it + * no longer can run my thesis code. Well, well... * * IRQ map: * 7 CPU counter * 6 SMP IPIs * 5 not used yet - * 4 not used yet + * 4 rtc * 3 ethernet * 2 serial console */ - char tmpstr[1000]; + char tmpstr[300]; machine->machine_name = "MIPS test machine"; machine->stable = 1; cpu->byte_order = EMUL_BIG_ENDIAN; - snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%llx irq=2", - (long long)DEV_CONS_ADDRESS); + snprintf(tmpstr, sizeof(tmpstr), "cons addr=0x%"PRIx64" irq=%s." + "cpu[%i].2", (uint64_t) DEV_CONS_ADDRESS, machine->path, + machine->bootstrap_cpu); machine->main_console_handle = (size_t)device_add(machine, tmpstr); - snprintf(tmpstr, sizeof(tmpstr), "mp addr=0x%llx", - (long long)DEV_MP_ADDRESS); + snprintf(tmpstr, sizeof(tmpstr), "mp irq=6 addr=0x%"PRIx64, + (uint64_t) DEV_MP_ADDRESS); + device_add(machine, tmpstr); + + snprintf(tmpstr, sizeof(tmpstr), "fbctrl addr=0x%"PRIx64, + (uint64_t) DEV_FBCTRL_ADDRESS); device_add(machine, tmpstr); - dev_fb_init(machine, machine->memory, DEV_FB_ADDRESS, VFB_GENERIC, - 640,480, 640,480, 24, "testmips generic"); + snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%"PRIx64, + (uint64_t) DEV_DISK_ADDRESS); + device_add(machine, tmpstr); - snprintf(tmpstr, sizeof(tmpstr), "disk addr=0x%llx", - (long long)DEV_DISK_ADDRESS); + snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%"PRIx64" irq=%s." + "cpu[%i].3", (uint64_t) DEV_ETHER_ADDRESS, machine->path, + machine->bootstrap_cpu); device_add(machine, tmpstr); - snprintf(tmpstr, sizeof(tmpstr), "ether addr=0x%llx irq=3", - (long long)DEV_ETHER_ADDRESS); + snprintf(tmpstr, sizeof(tmpstr), "rtc addr=0x%"PRIx64" irq=%s." + "cpu[%i].4", (uint64_t) DEV_RTC_ADDRESS, machine->path, + machine->bootstrap_cpu); device_add(machine, tmpstr); } MACHINE_DEFAULT_CPU(baremips) { - machine->cpu_name = strdup("R4000"); + machine->cpu_name = strdup("5KE"); } MACHINE_DEFAULT_CPU(testmips) { - machine->cpu_name = strdup("R4000"); + machine->cpu_name = strdup("5KE"); } MACHINE_REGISTER(baremips) { MR_DEFAULT(baremips, "Generic \"bare\" MIPS machine", - ARCH_MIPS, MACHINE_BAREMIPS, 1, 0); - me->aliases[0] = "baremips"; - machine_entry_add(me, ARCH_MIPS); + ARCH_MIPS, MACHINE_BAREMIPS); + + machine_entry_add_alias(me, "baremips"); } MACHINE_REGISTER(testmips) { MR_DEFAULT(testmips, "Test-machine for MIPS", - ARCH_MIPS, MACHINE_TESTMIPS, 1, 0); - me->aliases[0] = "testmips"; - machine_entry_add(me, ARCH_MIPS); + ARCH_MIPS, MACHINE_TESTMIPS); + + machine_entry_add_alias(me, "testmips"); } @@ -502,18 +356,17 @@ MACHINE_REGISTER(bareppc) { MR_DEFAULT(bareppc, "Generic \"bare\" PPC machine", - ARCH_PPC, MACHINE_BAREPPC, 1, 0); - me->aliases[0] = "bareppc"; - machine_entry_add(me, ARCH_PPC); + ARCH_PPC, MACHINE_BAREPPC); + + machine_entry_add_alias(me, "bareppc"); } MACHINE_REGISTER(testppc) { - MR_DEFAULT(testppc, "Test-machine for PPC", - ARCH_PPC, MACHINE_TESTPPC, 1, 0); - me->aliases[0] = "testppc"; - machine_entry_add(me, ARCH_PPC); + MR_DEFAULT(testppc, "Test-machine for PPC", ARCH_PPC, MACHINE_TESTPPC); + + machine_entry_add_alias(me, "testppc"); } @@ -537,31 +390,30 @@ MACHINE_DEFAULT_CPU(baresh) { - machine->cpu_name = strdup("SH"); + machine->cpu_name = strdup("SH7750"); } MACHINE_DEFAULT_CPU(testsh) { - machine->cpu_name = strdup("SH"); + machine->cpu_name = strdup("SH7750"); } MACHINE_REGISTER(baresh) { MR_DEFAULT(baresh, "Generic \"bare\" SH machine", - ARCH_SH, MACHINE_BARESH, 1, 0); - me->aliases[0] = "baresh"; - machine_entry_add(me, ARCH_SH); + ARCH_SH, MACHINE_BARESH); + + machine_entry_add_alias(me, "baresh"); } MACHINE_REGISTER(testsh) { - MR_DEFAULT(testsh, "Test-machine for SH", - ARCH_SH, MACHINE_TESTSH, 1, 0); - me->aliases[0] = "testsh"; - machine_entry_add(me, ARCH_SH); + MR_DEFAULT(testsh, "Test-machine for SH", ARCH_SH, MACHINE_TESTSH); + + machine_entry_add_alias(me, "testsh"); } @@ -585,30 +437,31 @@ MACHINE_DEFAULT_CPU(baresparc) { - machine->cpu_name = strdup("SPARCv9"); + machine->cpu_name = strdup("UltraSPARC"); } MACHINE_DEFAULT_CPU(testsparc) { - machine->cpu_name = strdup("SPARCv9"); + machine->cpu_name = strdup("UltraSPARC"); } MACHINE_REGISTER(baresparc) { MR_DEFAULT(baresparc, "Generic \"bare\" SPARC machine", - ARCH_SPARC, MACHINE_BARESPARC, 1, 0); - me->aliases[0] = "baresparc"; - machine_entry_add(me, ARCH_SPARC); + ARCH_SPARC, MACHINE_BARESPARC); + + machine_entry_add_alias(me, "baresparc"); } MACHINE_REGISTER(testsparc) { MR_DEFAULT(testsparc, "Test-machine for SPARC", - ARCH_SPARC, MACHINE_TESTSPARC, 1, 0); - me->aliases[0] = "testsparc"; - machine_entry_add(me, ARCH_SPARC); + ARCH_SPARC, MACHINE_TESTSPARC); + + machine_entry_add_alias(me, "testsparc"); } +