Revision b1f9be31
b/linux-user/main.c | ||
---|---|---|
1537 | 1537 |
void usage(void) |
1538 | 1538 |
{ |
1539 | 1539 |
printf("qemu-" TARGET_ARCH " version " QEMU_VERSION ", Copyright (c) 2003-2007 Fabrice Bellard\n" |
1540 |
"usage: qemu-" TARGET_ARCH " [-h] [-g] [-d opts] [-L path] [-s size] program [arguments...]\n" |
|
1540 |
"usage: qemu-" TARGET_ARCH " [-h] [-g] [-d opts] [-L path] [-s size] [-cpu model] program [arguments...]\n"
|
|
1541 | 1541 |
"Linux CPU emulator (compiled for %s emulation)\n" |
1542 | 1542 |
"\n" |
1543 | 1543 |
"-h print this help\n" |
1544 | 1544 |
"-g port wait gdb connection to port\n" |
1545 | 1545 |
"-L path set the elf interpreter prefix (default=%s)\n" |
1546 | 1546 |
"-s size set the stack size in bytes (default=%ld)\n" |
1547 |
"-cpu model select CPU (-cpu ? for list)\n" |
|
1547 | 1548 |
"\n" |
1548 | 1549 |
"debug options:\n" |
1549 | 1550 |
#ifdef USE_CODE_COPY |
... | ... | |
1567 | 1568 |
int main(int argc, char **argv) |
1568 | 1569 |
{ |
1569 | 1570 |
const char *filename; |
1571 |
const char *cpu_model; |
|
1570 | 1572 |
struct target_pt_regs regs1, *regs = ®s1; |
1571 | 1573 |
struct image_info info1, *info = &info1; |
1572 | 1574 |
TaskState ts1, *ts = &ts1; |
... | ... | |
1581 | 1583 |
/* init debug */ |
1582 | 1584 |
cpu_set_log_filename(DEBUG_LOGFILE); |
1583 | 1585 |
|
1586 |
cpu_model = NULL; |
|
1584 | 1587 |
optind = 1; |
1585 | 1588 |
for(;;) { |
1586 | 1589 |
if (optind >= argc) |
... | ... | |
1631 | 1634 |
gdbstub_port = atoi(argv[optind++]); |
1632 | 1635 |
} else if (!strcmp(r, "r")) { |
1633 | 1636 |
qemu_uname_release = argv[optind++]; |
1637 |
} else if (!strcmp(r, "cpu")) { |
|
1638 |
cpu_model = argv[optind++]; |
|
1639 |
if (strcmp(cpu_model, "?") == 0) { |
|
1640 |
#if defined(TARGET_PPC) |
|
1641 |
ppc_cpu_list(stdout, &fprintf); |
|
1642 |
#elif defined(TARGET_ARM) |
|
1643 |
arm_cpu_list(); |
|
1644 |
#elif defined(TARGET_MIPS) |
|
1645 |
mips_cpu_list(stdout, &fprintf); |
|
1646 |
#endif |
|
1647 |
exit(1); |
|
1648 |
} |
|
1634 | 1649 |
} else |
1635 | 1650 |
#ifdef USE_CODE_COPY |
1636 | 1651 |
if (!strcmp(r, "no-code-copy")) { |
... | ... | |
1756 | 1771 |
#elif defined(TARGET_ARM) |
1757 | 1772 |
{ |
1758 | 1773 |
int i; |
1759 |
cpu_arm_set_model(env, "arm926"); |
|
1774 |
if (cpu_model == NULL) |
|
1775 |
cpu_model = "arm926"; |
|
1776 |
cpu_arm_set_model(env, cpu_model); |
|
1760 | 1777 |
cpsr_write(env, regs->uregs[16], 0xffffffff); |
1761 | 1778 |
for(i = 0; i < 16; i++) { |
1762 | 1779 |
env->regs[i] = regs->uregs[i]; |
... | ... | |
1783 | 1800 |
int i; |
1784 | 1801 |
|
1785 | 1802 |
/* Choose and initialise CPU */ |
1786 |
/* XXX: CPU model (or PVR) should be provided on command line */ |
|
1787 |
// ppc_find_by_name("750gx", &def); |
|
1788 |
// ppc_find_by_name("750fx", &def); |
|
1789 |
// ppc_find_by_name("750p", &def); |
|
1790 |
ppc_find_by_name("750", &def); |
|
1791 |
// ppc_find_by_name("G3", &def); |
|
1792 |
// ppc_find_by_name("604r", &def); |
|
1793 |
// ppc_find_by_name("604e", &def); |
|
1794 |
// ppc_find_by_name("604", &def); |
|
1803 |
if (cpu_model == NULL) |
|
1804 |
cpu_model = "750"; |
|
1805 |
ppc_find_by_name(cpu_model, &def); |
|
1795 | 1806 |
if (def == NULL) { |
1796 | 1807 |
cpu_abort(env, |
1797 | 1808 |
"Unable to find PowerPC CPU definition\n"); |
... | ... | |
1840 | 1851 |
{ |
1841 | 1852 |
int i; |
1842 | 1853 |
|
1854 |
/* XXX: set CPU model */ |
|
1843 | 1855 |
for(i = 0; i < 32; i++) { |
1844 | 1856 |
env->gpr[i] = regs->regs[i]; |
1845 | 1857 |
} |
Also available in: Unified diff