Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09cc07a5 authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

[PATCH] m68k: lvalues abuse in mac8390



Cast is not an lvalue

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 0efb7134
Loading
Loading
Loading
Loading
+14 −17
Original line number Diff line number Diff line
@@ -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);
	}
}