summaryrefslogtreecommitdiff
path: root/arch/alpha/lib
diff options
context:
space:
mode:
authorRichard Henderson <rth@kanga.twiddle.home>2004-03-07 22:58:28 -0800
committerRichard Henderson <rth@kanga.twiddle.home>2004-03-07 22:58:28 -0800
commit370d7089b57d855e8a7a2a2eb902bcb5aef683b4 (patch)
tree579c99b522ba56e5e8361702e034bd7f9e447f84 /arch/alpha/lib
parent47f766a2c0228a4d98b11b515ba58f417de2de54 (diff)
[ALPHA] Fix gcc 3.4 build problems.
Diffstat (limited to 'arch/alpha/lib')
-rw-r--r--arch/alpha/lib/io.c94
1 files changed, 48 insertions, 46 deletions
diff --git a/arch/alpha/lib/io.c b/arch/alpha/lib/io.c
index 05b3ada7e34c..dedc5186916f 100644
--- a/arch/alpha/lib/io.c
+++ b/arch/alpha/lib/io.c
@@ -143,7 +143,7 @@ void insb (unsigned long port, void *dst, unsigned long count)
return;
count--;
*(unsigned char *) dst = inb(port);
- ((unsigned char *) dst)++;
+ dst += 1;
}
while (count >= 4) {
@@ -154,13 +154,13 @@ void insb (unsigned long port, void *dst, unsigned long count)
w |= inb(port) << 16;
w |= inb(port) << 24;
*(unsigned int *) dst = w;
- ((unsigned int *) dst)++;
+ dst += 4;
}
while (count) {
--count;
*(unsigned char *) dst = inb(port);
- ((unsigned char *) dst)++;
+ dst += 1;
}
}
@@ -181,8 +181,8 @@ void insw (unsigned long port, void *dst, unsigned long count)
if (!count)
return;
count--;
- *(unsigned short* ) dst = inw(port);
- ((unsigned short *) dst)++;
+ *(unsigned short *) dst = inw(port);
+ dst += 2;
}
while (count >= 2) {
@@ -191,7 +191,7 @@ void insw (unsigned long port, void *dst, unsigned long count)
w = inw(port);
w |= inw(port) << 16;
*(unsigned int *) dst = w;
- ((unsigned int *) dst)++;
+ dst += 4;
}
if (count) {
@@ -209,70 +209,72 @@ void insw (unsigned long port, void *dst, unsigned long count)
void insl (unsigned long port, void *dst, unsigned long count)
{
unsigned int l = 0, l2;
-
+
if (!count)
return;
-
+
switch (((unsigned long) dst) & 0x3)
{
case 0x00: /* Buffer 32-bit aligned */
while (count--)
{
*(unsigned int *) dst = inl(port);
- ((unsigned int *) dst)++;
+ dst += 4;
}
break;
-
+
/* Assuming little endian Alphas in cases 0x01 -- 0x03 ... */
-
+
case 0x02: /* Buffer 16-bit aligned */
--count;
-
+
l = inl(port);
*(unsigned short *) dst = l;
- ((unsigned short *) dst)++;
-
+ dst += 2;
+
while (count--)
{
l2 = inl(port);
*(unsigned int *) dst = l >> 16 | l2 << 16;
- ((unsigned int *) dst)++;
+ dst += 4;
l = l2;
}
*(unsigned short *) dst = l >> 16;
break;
+
case 0x01: /* Buffer 8-bit aligned */
--count;
-
+
l = inl(port);
*(unsigned char *) dst = l;
- ((unsigned char *) dst)++;
+ dst += 1;
*(unsigned short *) dst = l >> 8;
- ((unsigned short *) dst)++;
+ dst += 2;
while (count--)
{
l2 = inl(port);
*(unsigned int *) dst = l >> 24 | l2 << 8;
- ((unsigned int *) dst)++;
+ dst += 4;
l = l2;
}
*(unsigned char *) dst = l >> 24;
break;
+
case 0x03: /* Buffer 8-bit aligned */
--count;
-
+
l = inl(port);
*(unsigned char *) dst = l;
- ((unsigned char *) dst)++;
+ dst += 1;
while (count--)
{
l2 = inl(port);
*(unsigned int *) dst = l << 24 | l2 >> 8;
- ((unsigned int *) dst)++;
+ dst += 4;
l = l2;
}
*(unsigned short *) dst = l >> 8;
- ((unsigned short *) dst)++;
+ dst += 2;
*(unsigned char *) dst = l >> 24;
break;
}
@@ -290,7 +292,7 @@ void outsb(unsigned long port, const void * src, unsigned long count)
while (count) {
count--;
outb(*(char *)src, port);
- ((char *) src)++;
+ src += 1;
}
}
@@ -307,7 +309,7 @@ void outsw (unsigned long port, const void *src, unsigned long count)
panic("outsw: memory not short aligned");
}
outw(*(unsigned short*)src, port);
- ((unsigned short *) src)++;
+ src += 2;
--count;
}
@@ -315,7 +317,7 @@ void outsw (unsigned long port, const void *src, unsigned long count)
unsigned int w;
count -= 2;
w = *(unsigned int *) src;
- ((unsigned int *) src)++;
+ src += 4;
outw(w >> 0, port);
outw(w >> 16, port);
}
@@ -335,69 +337,69 @@ void outsw (unsigned long port, const void *src, unsigned long count)
void outsl (unsigned long port, const void *src, unsigned long count)
{
unsigned int l = 0, l2;
-
+
if (!count)
return;
-
+
switch (((unsigned long) src) & 0x3)
{
case 0x00: /* Buffer 32-bit aligned */
while (count--)
{
outl(*(unsigned int *) src, port);
- ((unsigned int *) src)++;
+ src += 4;
}
break;
-
- /* Assuming little endian Alphas in cases 0x01 -- 0x03 ... */
-
+
case 0x02: /* Buffer 16-bit aligned */
--count;
-
+
l = *(unsigned short *) src << 16;
- ((unsigned short *) src)++;
-
+ src += 2;
+
while (count--)
{
l2 = *(unsigned int *) src;
- ((unsigned int *) src)++;
+ src += 4;
outl (l >> 16 | l2 << 16, port);
l = l2;
}
l2 = *(unsigned short *) src;
outl (l >> 16 | l2 << 16, port);
break;
+
case 0x01: /* Buffer 8-bit aligned */
--count;
-
+
l = *(unsigned char *) src << 8;
- ((unsigned char *) src)++;
+ src += 1;
l |= *(unsigned short *) src << 16;
- ((unsigned short *) src)++;
+ src += 2;
while (count--)
{
l2 = *(unsigned int *) src;
- ((unsigned int *) src)++;
+ src += 4;
outl (l >> 8 | l2 << 24, port);
l = l2;
}
l2 = *(unsigned char *) src;
outl (l >> 8 | l2 << 24, port);
break;
+
case 0x03: /* Buffer 8-bit aligned */
--count;
-
+
l = *(unsigned char *) src << 24;
- ((unsigned char *) src)++;
+ src += 1;
while (count--)
{
l2 = *(unsigned int *) src;
- ((unsigned int *) src)++;
+ src += 4;
outl (l >> 24 | l2 << 8, port);
l = l2;
}
l2 = *(unsigned short *) src;
- ((unsigned short *) src)++;
+ src += 2;
l2 |= *(unsigned char *) src << 16;
outl (l >> 24 | l2 << 8, port);
break;
@@ -435,7 +437,7 @@ void _memcpy_fromio(void * to, unsigned long from, long count)
} while (count >= 0);
count += 4;
}
-
+
if (count >= 2 && ((unsigned long)to & 1) == (from & 1)) {
count -= 2;
do {
@@ -486,7 +488,7 @@ void _memcpy_toio(unsigned long to, const void * from, long count)
} while (count >= 0);
count += 4;
}
-
+
if (count >= 2 && (to & 1) == ((unsigned long)from & 1)) {
count -= 2;
do {