Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 18115
b: refs/heads/master
c: 09cc07a
h: refs/heads/master
i:
  18113: 93d650b
  18111: bc3487d
v: v3
  • Loading branch information
Al Viro authored and Linus Torvalds committed Jan 12, 2006
1 parent 3354411 commit caa2e12
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0efb71348249903c54e71f26927cfc94ba186dfb
refs/heads/master: 09cc07a5c7996192cc19c79c8aac5a4a22528059
31 changes: 14 additions & 17 deletions trunk/drivers/net/mac8390.c
Original file line number Diff line number Diff line change
Expand Up @@ -559,55 +559,52 @@ static void mac8390_no_reset(struct net_device *dev)
/* directly from daynaport.c by Alan Cox */
static void dayna_memcpy_fromcard(struct net_device *dev, void *to, int from, int count)
{
volatile unsigned short *ptr;
unsigned short *target=to;
volatile unsigned char *ptr;
unsigned char *target=to;
from<<=1; /* word, skip overhead */
ptr=(unsigned short *)(dev->mem_start+from);
ptr=(unsigned char *)(dev->mem_start+from);
/* Leading byte? */
if (from&2) {
*((char *)target)++ = *(((char *)ptr++)-1);
*target++ = ptr[-1];
ptr += 2;
count--;
}
while(count>=2)
{
*target++=*ptr++; /* Copy and */
ptr++; /* skip cruft */
*(unsigned short *)target = *(unsigned short volatile *)ptr;
ptr += 4; /* skip cruft */
target += 2;
count-=2;
}
/* Trailing byte? */
if(count)
{
/* Big endian */
unsigned short v=*ptr;
*((char *)target)=v>>8;
}
*target = *ptr;
}

static void dayna_memcpy_tocard(struct net_device *dev, int to, const void *from, int count)
{
volatile unsigned short *ptr;
const unsigned short *src=from;
const unsigned char *src=from;
to<<=1; /* word, skip overhead */
ptr=(unsigned short *)(dev->mem_start+to);
/* Leading byte? */
if (to&2) { /* avoid a byte write (stomps on other data) */
ptr[-1] = (ptr[-1]&0xFF00)|*((unsigned char *)src)++;
ptr[-1] = (ptr[-1]&0xFF00)|*src++;
ptr++;
count--;
}
while(count>=2)
{
*ptr++=*src++; /* Copy and */
*ptr++=*(unsigned short *)src; /* Copy and */
ptr++; /* skip cruft */
src += 2;
count-=2;
}
/* Trailing byte? */
if(count)
{
/* Big endian */
unsigned short v=*src;
/* card doesn't like byte writes */
*ptr=(*ptr&0x00FF)|(v&0xFF00);
*ptr=(*ptr&0x00FF)|(*src << 8);
}
}

Expand Down

0 comments on commit caa2e12

Please sign in to comment.