[PATCH] m68k: lvalues abuse in mac8390

Cast is not an lvalue

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Al Viro and committed by Linus Torvalds 09cc07a5 0efb7134

+14 -17
+14 -17
drivers/net/mac8390.c
··· 559 559 /* directly from daynaport.c by Alan Cox */ 560 560 static void dayna_memcpy_fromcard(struct net_device *dev, void *to, int from, int count) 561 561 { 562 - volatile unsigned short *ptr; 563 - unsigned short *target=to; 562 + volatile unsigned char *ptr; 563 + unsigned char *target=to; 564 564 from<<=1; /* word, skip overhead */ 565 - ptr=(unsigned short *)(dev->mem_start+from); 565 + ptr=(unsigned char *)(dev->mem_start+from); 566 566 /* Leading byte? */ 567 567 if (from&2) { 568 - *((char *)target)++ = *(((char *)ptr++)-1); 568 + *target++ = ptr[-1]; 569 + ptr += 2; 569 570 count--; 570 571 } 571 572 while(count>=2) 572 573 { 573 - *target++=*ptr++; /* Copy and */ 574 - ptr++; /* skip cruft */ 574 + *(unsigned short *)target = *(unsigned short volatile *)ptr; 575 + ptr += 4; /* skip cruft */ 576 + target += 2; 575 577 count-=2; 576 578 } 577 579 /* Trailing byte? */ 578 580 if(count) 579 - { 580 - /* Big endian */ 581 - unsigned short v=*ptr; 582 - *((char *)target)=v>>8; 583 - } 581 + *target = *ptr; 584 582 } 585 583 586 584 static void dayna_memcpy_tocard(struct net_device *dev, int to, const void *from, int count) 587 585 { 588 586 volatile unsigned short *ptr; 589 - const unsigned short *src=from; 587 + const unsigned char *src=from; 590 588 to<<=1; /* word, skip overhead */ 591 589 ptr=(unsigned short *)(dev->mem_start+to); 592 590 /* Leading byte? */ 593 591 if (to&2) { /* avoid a byte write (stomps on other data) */ 594 - ptr[-1] = (ptr[-1]&0xFF00)|*((unsigned char *)src)++; 592 + ptr[-1] = (ptr[-1]&0xFF00)|*src++; 595 593 ptr++; 596 594 count--; 597 595 } 598 596 while(count>=2) 599 597 { 600 - *ptr++=*src++; /* Copy and */ 598 + *ptr++=*(unsigned short *)src; /* Copy and */ 601 599 ptr++; /* skip cruft */ 600 + src += 2; 602 601 count-=2; 603 602 } 604 603 /* Trailing byte? */ 605 604 if(count) 606 605 { 607 - /* Big endian */ 608 - unsigned short v=*src; 609 606 /* card doesn't like byte writes */ 610 - *ptr=(*ptr&0x00FF)|(v&0xFF00); 607 + *ptr=(*ptr&0x00FF)|(*src << 8); 611 608 } 612 609 } 613 610