예제 #1
0
/*
 * Mimic the NIOT;H BUG command (except for `P-Address' field), adding our
 * own driver names.
 */
void
display_ethernet()
{
	struct mvmeprom_brdid *brdid;
	int i;

	brdid = mvmeprom_brdid();

	printf("Network Controllers/Nodes Supported\n");
	printf("Driver CLUN  DLUN  Name      Address    Ethernet Address\n");

	for (i = 0; i < nie_config; i++) {
		printf("ie%d       %x     0  VME%x",
		    i, ie_config[i].clun, brdid->model);
		/* @#$%! MVME8120 - and I don't even have one to test (miod) */
		if (brdid->model < 0x1000)
			printf(" ");
		printf("   $%x  %s\n",
		    ie_config[i].phys_addr, ether_sprintf(ie_config[i].eaddr));
	}

	for (i = 0; i < nle_config; i++) {
		printf("le%d       %x     0  VME376    $%x  %s\n",
		    i, le_config[i].clun, le_config[i].phys_addr,
		    ether_sprintf(le_config[i].eaddr));
	}
}
예제 #2
0
_start()
{
	register int dev_lun asm (MVMEPROM_REG_DEVLUN);
	register int ctrl_lun asm (MVMEPROM_REG_CTRLLUN);
	register int flags asm (MVMEPROM_REG_SCSUPP);
	register int ctrl_addr asm (MVMEPROM_REG_CTRLADDR);
	register int entry asm (MVMEPROM_REG_ENTRY);
	register int conf_blk asm (MVMEPROM_REG_IPA);
	register char *arg_start asm (MVMEPROM_REG_ARGSTART);
	register char *arg_end asm (MVMEPROM_REG_ARGEND);
	register char *nbarg_start asm (MVMEPROM_REG_NBARGSTART);
	register char *nbarg_end asm (MVMEPROM_REG_NBARGEND);
	extern int edata, end;
	struct mvmeprom_brdid *id, *mvmeprom_brdid();

	bugargs.dev_lun = dev_lun;
	bugargs.ctrl_lun = ctrl_lun;
	bugargs.flags = flags;
	bugargs.ctrl_addr = ctrl_addr;
	bugargs.entry = entry;
	bugargs.conf_blk = conf_blk;
	bugargs.arg_start = arg_start;
	bugargs.arg_end = arg_end;
	bugargs.nbarg_start = nbarg_start;
	bugargs.nbarg_end = nbarg_end;
	*bugargs.arg_end = 0;      
	*bugargs.nbarg_end = 0;      

	id = mvmeprom_brdid();
	bugargs.cputyp = id->model;

	memset(&edata, 0, ((int)&end - (int)&edata));

	asm  ("#	main()");
	main();
	mvmeprom_return();
	/* NOTREACHED */
}
예제 #3
0
/*
 * Figure out what devices are available.
 */
int
probe_ethernet()
{
	struct mvmeprom_brdid *brdid;
	uint n;

	brdid = mvmeprom_brdid();

	/* On-board Ethernet */
	switch (brdid->model) {
	case BRD_187:
	case BRD_197:
	case BRD_8120:
		ie_config[nie_config].clun = 0;
		ie_config[nie_config].phys_addr = INTEL_REG_ADDR;
		bcopy(brdid->etheraddr, ie_config[nie_config].eaddr, 6);
		add_if(&ie_driver);
		nie_config++;
		break;
	}
	
	/* MVME376 */
	for (n = 0; n < sizeof(vle_addr) / sizeof(vle_addr[0]); n++) {
		if (badaddr((void *)vle_addr[n], 2) == 0) {
			le_config[nle_config].clun = 2 + n;
			le_config[nle_config].phys_addr = vle_addr[n];
			le_config[nle_config].buf_addr =
			    VLEMEMBASE - n * VLEMEMSIZE;
			le_config[nle_config].buf_size = VLEMEMSIZE;
			le_read_etheraddr(vle_addr[n],
			    le_config[nle_config].eaddr);
			add_if(&le_driver);
			nle_config++;
		}
	}

	return nie_config + nle_config;
}