dev_ether.cc Source File
Back to the index.
Go to the documentation of this file.
49 #define DEV_ETHER_TICK_SHIFT 14
85 memcpy(d->
buf + relative_addr,
data, len);
87 memcpy(
data, d->
buf + relative_addr, len);
96 uint64_t idata = 0, odata = 0;
97 unsigned char *incoming_ptr;
114 fatal(
"[ ether: WARNING: write to status ]\n");
121 if ((int64_t)idata < 0) {
122 fatal(
"[ ether: ERROR: packet len too"
123 " short (%i bytes) ]\n", (
int)idata);
124 idata = (uint64_t) -1;
127 fatal(
"[ ether: ERROR: packet len too"
128 " large (%i bytes) ]\n", (
int)idata);
137 fatal(
"[ ether: WARNING: read from command ]\n");
146 fatal(
"[ ether: RECEIVE but no net? ]\n");
150 d, &incoming_ptr, &incoming_len)) {
156 memcpy(d->
buf, incoming_ptr,
162 dev_ether_tick(
cpu, d);
167 fatal(
"[ ether: SEND but no net? ]\n");
172 dev_ether_tick(
cpu, d);
175 default:
fatal(
"[ ether: UNIMPLEMENTED command 0x"
183 fatal(
"[ ether: read of MAC is not allowed! ]\n");
192 fatal(
"[ ether: unimplemented write to "
193 "offset 0x%x: data=0x%x ]\n", (
int)
194 relative_addr, (
int)idata);
196 fatal(
"[ ether: unimplemented read from "
197 "offset 0x%x ]\n", (
int)relative_addr);
225 snprintf(tmp,
sizeof(tmp),
"%02x:%02x:%02x:%02x:%02x:%02x",
229 snprintf(n2, nlen,
"%s [%s, control]",
devinit->
name, tmp);
#define INTERRUPT_CONNECT(name, istruct)
#define INTERRUPT_ASSERT(istruct)
#define DEV_ETHER_STATUS_PACKET_RECEIVED
void memory_device_register(struct memory *mem, const char *, uint64_t baseaddr, uint64_t len, int(*f)(struct cpu *, struct memory *, uint64_t, unsigned char *, size_t, int, void *), void *extra, int flags, unsigned char *dyntrans_data)
int net_ethernet_rx(struct net *net, void *extra, unsigned char **packetp, int *lenp)
#define DEV_ETHER_TICK_SHIFT
#define DEV_ETHER_COMMAND_RX
#define DEV_ETHER_BUFFER_SIZE
#define DM_DYNTRANS_WRITE_OK
void machine_add_tickfunction(struct machine *machine, void(*func)(struct cpu *, void *), void *extra, int clockshift)
void COMBINE() strlen(struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
void fatal(const char *fmt,...)
uint64_t memory_readmax64(struct cpu *cpu, unsigned char *buf, int len)
void net_generate_unique_mac(struct machine *, unsigned char *macbuf)
void net_ethernet_tx(struct net *net, void *extra, unsigned char *packet, int len)
void net_add_nic(struct net *net, void *extra, unsigned char *macaddr)
#define DEV_ETHER_COMMAND
int net_ethernet_rx_avail(struct net *net, void *extra)
#define DM_READS_HAVE_NO_SIDE_EFFECTS
#define DEV_ETHER_PACKETLENGTH
#define INTERRUPT_DEASSERT(istruct)
unsigned char buf[DEV_ETHER_BUFFER_SIZE]
void memory_writemax64(struct cpu *cpu, unsigned char *buf, int len, uint64_t data)
#define DEV_ETHER_COMMAND_TX
int(* memory_rw)(struct cpu *cpu, struct memory *mem, uint64_t vaddr, unsigned char *data, size_t len, int writeflag, int cache_flags)
#define DEV_ETHER_STATUS_MORE_PACKETS_AVAILABLE
#define CHECK_ALLOCATION(ptr)
Generated on Tue Aug 25 2020 19:25:06 for GXemul by
1.8.18