add directory study
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#include "kernel.h"
|
||||
#include "minix/com.h"
|
||||
#include "dp8390.h"
|
||||
#include "internet.h"
|
||||
#include "etherformat.h"
|
||||
#include "etherplus.h"
|
||||
#include "dp8390info.h"
|
||||
#include "eplinfo.h"
|
||||
#include "assert.h"
|
||||
|
||||
/* macros for device I/O */
|
||||
|
||||
#define input(devaddr, ep_register) \
|
||||
in_byte((vir_bytes)&((struct eplusreg *) devaddr)->ep_register)
|
||||
#define output(devaddr, ep_register, value) \
|
||||
out_byte((vir_bytes)&((struct eplusreg *) devaddr)->ep_register, value)
|
||||
|
||||
epl_init() {
|
||||
register vir_bytes device;
|
||||
register sum;
|
||||
|
||||
device = eplinfo.epi_devaddr;
|
||||
assert((dp8390info.dpi_membase&0x81FFF)==0x80000);
|
||||
sum =
|
||||
input(device, epl_ea5) +
|
||||
input(device, epl_ea4) +
|
||||
input(device, epl_ea3) +
|
||||
input(device, epl_ea2) +
|
||||
input(device, epl_ea1) +
|
||||
input(device, epl_ea0) +
|
||||
input(device, epl_res2) +
|
||||
input(device, epl_chksum);
|
||||
if ((sum&0xFF) != 0xFF)
|
||||
panic("No ethernet board", NO_NUM);
|
||||
output(device, epl_ctlstatus, CTL_RESET);
|
||||
output(device, epl_ctlstatus, CTL_MENABLE|((dp8390info.dpi_membase>>13)&CTL_MEMADDR));
|
||||
}
|
||||
|
||||
|
||||
etheraddr(eaddr) Eth_addr *eaddr; {
|
||||
register vir_bytes device;
|
||||
|
||||
device = eplinfo.epi_devaddr;
|
||||
eaddr->e[0] = input(device, epl_ea0);
|
||||
eaddr->e[1] = input(device, epl_ea1);
|
||||
eaddr->e[2] = input(device, epl_ea2);
|
||||
eaddr->e[3] = input(device, epl_ea3);
|
||||
eaddr->e[4] = input(device, epl_ea4);
|
||||
eaddr->e[5] = input(device, epl_ea5);
|
||||
}
|
||||
Reference in New Issue
Block a user