Messages in this thread Patch in this message | | | Date | Sun, 24 Oct 2004 14:43:29 +0400 | From | Ivan Kokshaysky <> | Subject | Re: linux 2.6.9 on alpha noritake |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |