From 1efac8015419924cd647727a34606e075769f08c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Benedikt=20Kr=C3=BCger?= Date: Tue, 28 Jun 2011 14:42:32 +0200 Subject: [PATCH] ... --- drivers/net/mmnif.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/net/mmnif.c b/drivers/net/mmnif.c index 5e9a9754..eff1d773 100644 --- a/drivers/net/mmnif.c +++ b/drivers/net/mmnif.c @@ -262,7 +262,9 @@ __inline uint8_t mmnif_read_rx_queue(uint32_t dest_ip) while(!ReadProcessMemory(hProc,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr),NULL)); return hdr.queued; #else - return *(uint8_t*)(mpb_start_address + (dest_ip -1 ) * mpb_size ); + mm_rx_buffer_t hdr; + memcpy(&hdr,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr)); + return hdr.queued; #endif }; @@ -279,7 +281,9 @@ __inline uint8_t mmnif_read_rx_pos(uint32_t dest_ip) while(!ReadProcessMemory(hProc,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr),NULL)); return hdr.pos; #else - return *(uint8_t*)(mpb_start_address + (dest_ip -1 ) * mpb_size +1); + mm_rx_buffer_t hdr; + memcpy(&hdr,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr)); + return hdr.pos; #endif }; @@ -296,7 +300,9 @@ __inline uint8_t mmnif_read_rx_inv_intr(uint32_t dest_ip) while(!ReadProcessMemory(hProc,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr),NULL)); return hdr.iv_intr; #else - return *(uint8_t*)(mpb_start_address + (dest_ip -1 ) * mpb_size +2); + mm_rx_buffer_t hdr; + memcpy(&hdr,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr)); + return hdr.iv_intr; #endif }; @@ -313,7 +319,9 @@ __inline uint8_t mmnif_read_rx_pending(uint32_t dest_ip) while(!ReadProcessMemory(hProc,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr),NULL)); return hdr.pending; #else - return *(uint8_t*)(mpb_start_address + (dest_ip -1 ) * mpb_size +2); + mm_rx_buffer_t hdr; + memcpy(&hdr,(char*)mpb_start_address + ( dest_ip -1 ) * mpb_size,&hdr,sizeof(hdr)); + return hdr.pending; #endif }; @@ -332,7 +340,7 @@ __inline int mmnif_write_rx_buff(uint32_t dest_ip, uint32_t pos,void* data) return nr_of_bytes_written; #else uint16_t length = *((uint16_t*)data); - memcpy(mpb_start_address + (dest_ip -1 ) * mpb_size +2,data,length+2); + memcpy((char*)mpb_start_address +(dest_ip -1 ) * mpb_size + sizeof(mm_rx_buffer_t)+ pos * MMNIF_RX_BUFFERLEN,data,length+2); return 1; #endif }; @@ -389,7 +397,7 @@ __inline int mmnif_write_rx_pending(uint32_t dest_ip,uint8_t pending) return nr_of_bytes_written; #else - memcpy((char*)mpb_start_address + ( dest_ip -1 ) * mpb_size, &pending,1); + memcpy((char*)mpb_start_address + ( dest_ip -1 ) * mpb_size + 2 , &pending,1); return 1; #endif