Re: linux 2.6.9 on alpha noritake
From: Ivan Kokshaysky
Date: Sun Oct 24 2004 - 05:48:14 EST
On Sat, Oct 23, 2004 at 10:58:11AM -0700, Richard Henderson wrote:
> > pc is at __raw_readw+0x4c/0x60
> > ra is at vgacon_startup+0x4ec/0x750
>
> I'll have a look. Why are you using fbcon anyway?
Ouch. The high order bits of the address in cia_ioXXX routines get
cleared out too early, so that addr >= CIA_DENSE_MEM clause
is always false.
Ivan.
--- 2.9/include/asm-alpha/core_cia.h Tue Oct 19 01:54:30 2004
+++ linux/include/asm-alpha/core_cia.h Sun Oct 24 14:16:17 2004
@@ -347,14 +347,14 @@ __EXTERN_INLINE unsigned int cia_ioread8
unsigned long addr = (unsigned long) xaddr;
unsigned long result, base_and_type;
- /* We can use CIA_MEM_R1_MASK for io ports too, since it is large
- enough to cover all io ports, and smaller than CIA_IO. */
- addr &= CIA_MEM_R1_MASK;
if (addr >= CIA_DENSE_MEM)
base_and_type = CIA_SPARSE_MEM + 0x00;
else
base_and_type = CIA_IO + 0x00;
+ /* We can use CIA_MEM_R1_MASK for io ports too, since it is large
+ enough to cover all io ports, and smaller than CIA_IO. */
+ addr &= CIA_MEM_R1_MASK;
result = *(vip) ((addr << 5) + base_and_type);
return __kernel_extbl(result, addr & 3);
}
@@ -379,12 +379,12 @@ __EXTERN_INLINE unsigned int cia_ioread1
unsigned long addr = (unsigned long) xaddr;
unsigned long result, base_and_type;
- addr &= CIA_MEM_R1_MASK;
if (addr >= CIA_DENSE_MEM)
base_and_type = CIA_SPARSE_MEM + 0x08;
else
base_and_type = CIA_IO + 0x08;
+ addr &= CIA_MEM_R1_MASK;
result = *(vip) ((addr << 5) + base_and_type);
return __kernel_extwl(result, addr & 3);
}
@@ -394,12 +394,12 @@ __EXTERN_INLINE void cia_iowrite16(u16 b
unsigned long addr = (unsigned long) xaddr;
unsigned long w, base_and_type;
- addr &= CIA_MEM_R1_MASK;
if (addr >= CIA_DENSE_MEM)
base_and_type = CIA_SPARSE_MEM + 0x08;
else
base_and_type = CIA_IO + 0x08;
+ addr &= CIA_MEM_R1_MASK;
w = __kernel_inswl(b, addr & 3);
*(vuip) ((addr << 5) + base_and_type) = w;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/