示例#1
0
文件: tnetw1130.c 项目: stweil/qemu
static int pci_tnetw1130_init(PCIDevice* pci_dev)
{
#if defined(DEBUG_TNETW1130)
    set_traceflags("DEBUG_TNETW1130");
#endif
    TRACE(TNETW, logout("\n"));
    return tnetw1130_init(pci_dev);
}
PCIDevice *pci_tnetw1130_init(PCIBus * bus, NICInfo * nd, int devfn)
{
    pci_tnetw1130_t *d = (pci_tnetw1130_t *) pci_register_device(bus, "TNETW1130",
                         sizeof(pci_tnetw1130_t),
                         -1, NULL, NULL);
#if defined(DEBUG_TNETW1130)
    set_traceflags("DEBUG_TNETW1130");
#endif
    TRACE(TNETW, logout("\n"));
    tnetw1130_init(d, nd);
    return (PCIDevice *)d;
}
示例#3
0
static int vlynq_tnetw1130_init(VLYNQDevice* vlynq_dev)
{
    vlynq_tnetw1130_t *d = DO_UPCAST(vlynq_tnetw1130_t, dev, vlynq_dev);
    //~ uint8_t *pci_conf = d->dev.config;
    tnetw1130_t *s = &d->tnetw1130;
#if defined(DEBUG_TNETW1130)
    set_traceflags("DEBUG_AR7");
#endif
    TRACE(TNETW, logout("\n"));
    /* TI TNETW1130 */
    //~ tnetw1130_pci_config(pci_conf);

    /* Handler for memory-mapped I/O */
    // TODO: Code is missing.
    logout("vlynq i/o is missing\n");
    //~ s->io_memory[0] =
        //~ cpu_register_io_memory(tnetw1130_region0_read, tnetw1130_region0_write,
                               //~ d, DEVICE_NATIVE_ENDIAN);
    //~ s->io_memory[1] =
        //~ cpu_register_io_memory(tnetw1130_region1_read, tnetw1130_region1_write,
                               //~ d, DEVICE_NATIVE_ENDIAN);

    TRACE(TNETW, logout("io_memory = 0x%08x, 0x%08x\n", s->io_memory[0], s->io_memory[1]));

    //~ memcpy(s->mem1 + 0x0001f000, pci_conf, 64);

    /* eCPU is halted. */
    reg_write16(s->mem0, TNETW1130_ECPU_CTRL, 1);

    //~ tnetw1130_mem_map(&d->dev, 0, 0x04000000, 0x22000, 0);  /* 0xf0000000 */
    //~ tnetw1130_mem_map(&d->dev, 1, 0x04022000, 0x40000, 0);  /* 0xc0000000 */
    //~ tnetw1130_mem_map(&d->dev, 1, 0x04000000, 0x40000, 0);
    //~ tnetw1130_mem_map(&d->dev, 0, 0x04040000, 0x22000, 0);
    tnetw1130_mem_map(&d->dev, 0, 0x04000000, TNETW1130_MEM0_SIZE, 0);
    tnetw1130_mem_map(&d->dev, 1, 0x04022000, TNETW1130_MEM1_SIZE, 0);
    return 0;
}
void vlynq_tnetw1130_init(void)
{
    pci_tnetw1130_t *d = &vlynq;
    uint8_t *pci_conf = d->dev.config;
    tnetw1130_t *s = &d->tnetw1130;
#if defined(DEBUG_TNETW1130)
    set_traceflags("DEBUG_AR7");
#endif
    TRACE(TNETW, logout("\n"));
    /* TI TNETW1130 */
    tnetw1130_pci_config(pci_conf);

    /* Handler for memory-mapped I/O */
    s->io_memory[0] =
        cpu_register_io_memory(0, tnetw1130_region0_read, tnetw1130_region0_write, d);
    s->io_memory[1] =
        cpu_register_io_memory(0, tnetw1130_region1_read, tnetw1130_region1_write, d);

    TRACE(TNETW, logout("io_memory = 0x%08x, 0x%08x\n", s->io_memory[0], s->io_memory[1]));

    pci_register_io_region(&d->dev, 0, TNETW1130_MEM0_SIZE,
                           PCI_ADDRESS_SPACE_MEM, tnetw1130_mem_map);
    pci_register_io_region(&d->dev, 1, TNETW1130_MEM1_SIZE,
                           PCI_ADDRESS_SPACE_MEM, tnetw1130_mem_map);

    memcpy(s->mem1 + 0x0001f000, pci_conf, 64);

    /* eCPU is halted. */
    reg_write16(s->mem0, TNETW1130_ECPU_CTRL, 1);

    //~ tnetw1130_mem_map(&d->dev, 0, 0x04000000, 0x22000, 0);  /* 0xf0000000 */
    //~ tnetw1130_mem_map(&d->dev, 1, 0x04022000, 0x40000, 0);  /* 0xc0000000 */
    //~ tnetw1130_mem_map(&d->dev, 1, 0x04000000, 0x40000, 0);
    //~ tnetw1130_mem_map(&d->dev, 0, 0x04040000, 0x22000, 0);
    tnetw1130_mem_map(&d->dev, 0, 0x04000000, TNETW1130_MEM0_SIZE, 0);
    tnetw1130_mem_map(&d->dev, 1, 0x04022000, TNETW1130_MEM1_SIZE, 0);
}
示例#5
0
文件: main.c 项目: alexleigh/sys161
int
main(int argc, char *argv[])
{
	int port = 2344;
	const char *config = "sys161.conf";
	const char *kernel = NULL;
	int usetcp=0;
	char *argstr = NULL;
	int j, opt;
	size_t argsize=0;
	int debugwait=0;
	int pass_signals=0;
#ifdef USE_TRACE
	int profiling=0;
#endif
	int use_second_console=0;
	const char *second_console = NULL;
	unsigned ncpus;

	/* This must come absolutely first so msg() can be used. */
	console_earlyinit();
	
	if (sizeof(u_int32_t)!=4) {
		/*
		 * Just in case.
		 */
		msg("sys161 requires sizeof(u_int32_t)==4");
		die();
	}

	while ((opt = mygetopt(argc, argv, "c:f:p:Pst:wk:"))!=-1) {
		switch (opt) {
		    case 'c': config = myoptarg; break;
		    case 'f':
#ifdef USE_TRACE
			set_tracefile(myoptarg);
#endif
			break;
		    case 'p': port = atoi(myoptarg); usetcp=1; break;
		    case 'P':
#ifdef USE_TRACE
			profiling = 1;
#endif
			break;
		    case 's': pass_signals = 1; break;
		    case 't': 
#ifdef USE_TRACE
			set_traceflags(myoptarg); 
#endif
			break;
		    case 'w': debugwait = 1; break;
		    case 'k':
		    use_second_console = 1;
		    second_console = myoptarg;
		    break;
		    default: usage(); break;
		}
	}
	if (myoptind==argc) {
		usage();
	}
	kernel = argv[myoptind++];
	
	for (j=myoptind; j<argc; j++) {
		argsize += strlen(argv[j])+1;
	}
	argstr = malloc(argsize+1);
	if (!argstr) {
		msg("malloc failed");
		die();
	}
	*argstr = 0;
	for (j=myoptind; j<argc; j++) {
		strcat(argstr, argv[j]);
		if (j<argc-1) strcat(argstr, " ");
	}

	/* This must come before bus_config in case a network card needs it */
	mkdir(".sockets", 0700);
	
	console_init(pass_signals, use_second_console, second_console);
	clock_init();
	ncpus = bus_config(config);

	initstats(ncpus);
	cpu_init(ncpus);

	if (usetcp) {
		gdb_inet_init(port);
	}
	else {
		unlink(".sockets/gdb");
		gdb_unix_init(".sockets/gdb");
	}

	unlink(".sockets/meter");
	meter_init(".sockets/meter");

	load_kernel(kernel, argstr);

	msg("System/161 %s, compiled %s %s", VERSION, __DATE__, __TIME__);
#ifdef USE_TRACE
	print_traceflags();
	if (profiling) {
		prof_setup();
	}
#endif

	if (debugwait) {
		stoploop();
	}
	
	run();

#ifdef USE_TRACE
	if (profiling) {
		prof_write();
	}
#endif

	bus_cleanup();
	console_cleanup();
	clock_cleanup();
	
	return 0;
}