|
@@ -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);
|
|
|
}
|
|
|
}
|
|
|
|