Subject: having trouble installing exceptions

From: Mike Manchip <[email-masked]>
Date: Fri, 28 Sep 2001 13:54:43 +0100

Hi all

I'm currently trying to get the mips port to work on a galileo gt64115 board
with a rm5231 chip.

I'm OK right until the point when I'm installing exceptions into
non-cacheable space in arch/mips/kernel/traps.c

as soon as I memcpy except_vec3_generic to KSEG0 + 0x180 and flush the
instruction cache, my machine hangs, and I can't see why!

/* Copy the generic exception handler code to it's final destination. */
 memcpy((void *)(KSEG0 + 0x80), &except_vec1_generic, 0x80);
 memcpy((void *)(KSEG0 + 0x100), &except_vec2_generic, 0x80);
 memcpy((void *)(KSEG0 + 0x180), &except_vec3_generic, 0x80);
 flush_icache_range(KSEG0 + 0x80, KSEG0 + 0x200);

Is it possibly something to do with the monitor I'm using? I'm using both
PROM and in desperation, a vxworks one (it can see the ethernet card, thus
speeding up kernel loads tremendously).
How does the monitor do exceptions? Do I have to do something special with
exceptions when a monitor is present?

thanks
mike

---

From: Ralf Baechle <[email-masked]>
Date: Fri, 28 Sep 2001 16:48:05 +0200

> instruction cache, my machine hangs, and I can't see why!

KSEG0 is normally cached space.  If of some reason it's configured as
non-cachable and you're flushing caches funny things will happen.

> exceptions when a monitor is present?

So firmware is operating with BEV set, thus won't use the vectors at
KSEG0 at all.

  Ralf

---

From: Jun Sun <[email-masked]>
Date: Fri, 28 Sep 2001 10:51:54 -0700

> non-cacheable space in arch/mips/kernel/traps.c
What do you mean by "non-cachable space"?  KSEG0 is cacheable by default.

> instruction cache, my machine hangs, and I can't see why!

Most likely it hangs in flush_icache_range().  Put some printk there.

Jun