Linux-MIPS problem caused by forcing interrupt vector location to 0x91xx0200 instead of 0x80000200

Linux-MIPS problem caused by forcing interrupt vector location to 0x91xx0200 instead of 0x80000200

Post by Le » Sat, 16 Oct 2004 06:58:08



Hello buddies,

I am working on a MIPS4Kc based reference design board. For some
reason, I need to force the interrupt vector location to address
0x91xx0200 instead of 0x80000200 in arch/mips/kernel/traps.c. The
kernel was loaded to 0x91xxxxxx space as well.

The kernel hung just after the interrupt was first time opened, after
sti(), before calibrate_delay() in init/main.c. It was weird that I
didn't see any problem if I put interrupt vector to location
0x80000200 while all other exception vectors to 0x91xxxxxx.

Was interrupt vector location hardcode to the address 0x80000200? Or
some other place I need to change to walk around it.

Thanks a bunch for your comments.

Leo

 
 
 

Linux-MIPS problem caused by forcing interrupt vector location to 0x91xx0200 instead of 0x80000200

Post by Tauno Voipi » Sat, 16 Oct 2004 14:30:16



> Hello buddies,

> I am working on a MIPS4Kc based reference design board. For some
> reason, I need to force the interrupt vector location to address
> 0x91xx0200 instead of 0x80000200 in arch/mips/kernel/traps.c. The
> kernel was loaded to 0x91xxxxxx space as well.

> The kernel hung just after the interrupt was first time opened, after
> sti(), before calibrate_delay() in init/main.c. It was weird that I
> didn't see any problem if I put interrupt vector to location
> 0x80000200 while all other exception vectors to 0x91xxxxxx.

> Was interrupt vector location hardcode to the address 0x80000200? Or
> some other place I need to change to walk around it.

> Thanks a bunch for your comments.

Are you sure that the initialization code does not clobber
the kernel code with the interrupt tables?

It seems that your crash occurs at the interrupt vector
initialization time.

Tauno Voipio
tauno voipio (at) iki fi

 
 
 

1. Force v850 interrupt vector parts into their correct locations

Otherwise a if one them is partially empty, the following input section
can end up in the wrong place.

diff -ruN -X../cludes linux-2.5.62-uc0.orig/arch/v850/vmlinux.lds.S linux-2.5.62-uc0/arch/v850/vmlinux.lds.S
--- linux-2.5.62-uc0.orig/arch/v850/vmlinux.lds.S       2003-01-22 10:16:27.000000000 +0900

 /* Interrupt vectors.  */
 #define INTV_CONTENTS                                                        \
+               . = ALIGN (0x10) ;                                            \
                __intv_start = . ;                                            \
                        *(.intv.reset)  /* Reset vector */                    \
+               . = __intv_start + 0x10 ;                                     \
                        *(.intv.common) /* Vectors common to all v850e proc */\
+               . = __intv_start + 0x80 ;                                     \
                        *(.intv.mach)   /* Machine-specific int. vectors.  */ \
                __intv_end = . ;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

2. "pump" or "dhcpcp" for single machine ppp0 dialup

3. IBM T23; quirks force enable interrupts in APM set power state, causes crash on suspend

4. Apache Redirection and mod_rewrite

5. problem of interrupt vector table of linux in arm920t

6. How to get yesturday's date???

7. Pls Help - CPU Lock-up on Interrupt with Shared Interrupt Vector

8. mgetty and caller-id

9. Maya on Linux support instead of M$NT and Irix-MIPS

10. Q: Error building a cross compiler for mips-mips-linux

11. interrupt vector for assembly

12. Interrupts causing problems! (bad traps)

13. Hooking up interrupt vectors