Commit 622e9472 authored by Greg Ungerer's avatar Greg Ungerer

m68knommu: correctly use trap_init

Currently trap_init() is an empty function for m68knommu. Instead
the vectors are being setup as part of the IRQ initialization.
This is inconsistent with m68k and other architectures.

Change the local init_vectors() to be trap_init(), and init the
vectors at the correct time during startup. This will help merge of
m68k and m68knommu trap code in the furture.
Signed-off-by: default avatarGreg Ungerer <gerg@uclinux.org>
parent f4a54373
...@@ -22,7 +22,6 @@ extern e_vector vectors[]; ...@@ -22,7 +22,6 @@ extern e_vector vectors[];
asmlinkage void auto_inthandler(void); asmlinkage void auto_inthandler(void);
asmlinkage void user_inthandler(void); asmlinkage void user_inthandler(void);
asmlinkage void bad_inthandler(void); asmlinkage void bad_inthandler(void);
extern void init_vectors(void);
#endif #endif
......
...@@ -60,10 +60,6 @@ static char const * const vec_names[] = { ...@@ -60,10 +60,6 @@ static char const * const vec_names[] = {
"MMU CONFIGURATION ERROR" "MMU CONFIGURATION ERROR"
}; };
void __init trap_init(void)
{
}
void die_if_kernel(char *str, struct pt_regs *fp, int nr) void die_if_kernel(char *str, struct pt_regs *fp, int nr)
{ {
if (!(fp->sr & PS_S)) if (!(fp->sr & PS_S))
......
...@@ -162,8 +162,6 @@ void __init init_IRQ(void) ...@@ -162,8 +162,6 @@ void __init init_IRQ(void)
{ {
int irq, edge; int irq, edge;
init_vectors();
/* Mask all interrupt sources */ /* Mask all interrupt sources */
writel(0x88888888, MCF_MBAR + MCFSIM_ICR1); writel(0x88888888, MCF_MBAR + MCFSIM_ICR1);
writel(0x88888888, MCF_MBAR + MCFSIM_ICR2); writel(0x88888888, MCF_MBAR + MCFSIM_ICR2);
......
...@@ -155,7 +155,7 @@ static struct irq_chip intc_irq_chip = { ...@@ -155,7 +155,7 @@ static struct irq_chip intc_irq_chip = {
* This function should be called during kernel startup to initialize * This function should be called during kernel startup to initialize
* the machine vector table. * the machine vector table.
*/ */
void __init init_IRQ(void) void __init trap_init(void)
{ {
int i; int i;
...@@ -172,6 +172,11 @@ void __init init_IRQ(void) ...@@ -172,6 +172,11 @@ void __init init_IRQ(void)
_ramvec[69] = (e_vector) inthandler5; _ramvec[69] = (e_vector) inthandler5;
_ramvec[70] = (e_vector) inthandler6; _ramvec[70] = (e_vector) inthandler6;
_ramvec[71] = (e_vector) inthandler7; _ramvec[71] = (e_vector) inthandler7;
}
void __init init_IRQ(void)
{
int i;
IVR = 0x40; /* Set DragonBall IVR (interrupt base) to 64 */ IVR = 0x40; /* Set DragonBall IVR (interrupt base) to 64 */
......
...@@ -63,9 +63,8 @@ static struct irq_chip intc_irq_chip = { ...@@ -63,9 +63,8 @@ static struct irq_chip intc_irq_chip = {
* This function should be called during kernel startup to initialize * This function should be called during kernel startup to initialize
* the vector table. * the vector table.
*/ */
void init_IRQ(void) void __init trap_init(void)
{ {
int i;
int vba = (CPM_VECTOR_BASE<<4); int vba = (CPM_VECTOR_BASE<<4);
/* set up the vectors */ /* set up the vectors */
...@@ -130,6 +129,11 @@ void init_IRQ(void) ...@@ -130,6 +129,11 @@ void init_IRQ(void)
/* turn off all CPM interrupts */ /* turn off all CPM interrupts */
pquicc->intr_cimr = 0x00000000; pquicc->intr_cimr = 0x00000000;
}
void init_IRQ(void)
{
int i;
for (i = 0; (i < NR_IRQS); i++) { for (i = 0; (i < NR_IRQS); i++) {
irq_set_chip(i, &intc_irq_chip); irq_set_chip(i, &intc_irq_chip);
......
...@@ -194,8 +194,6 @@ void __init init_IRQ(void) ...@@ -194,8 +194,6 @@ void __init init_IRQ(void)
{ {
int irq; int irq;
init_vectors();
/* Mask all interrupt sources */ /* Mask all interrupt sources */
__raw_writel(0x1, MCFICM_INTC0 + MCFINTC_IMRL); __raw_writel(0x1, MCFICM_INTC0 + MCFINTC_IMRL);
#ifdef MCFICM_INTC1 #ifdef MCFICM_INTC1
......
...@@ -171,8 +171,6 @@ void __init init_IRQ(void) ...@@ -171,8 +171,6 @@ void __init init_IRQ(void)
{ {
int irq, eirq; int irq, eirq;
init_vectors();
/* Mask all interrupt sources */ /* Mask all interrupt sources */
__raw_writeb(0xff, MCFINTC0_SIMR); __raw_writeb(0xff, MCFINTC0_SIMR);
if (MCFINTC1_SIMR) if (MCFINTC1_SIMR)
......
...@@ -139,7 +139,6 @@ void __init init_IRQ(void) ...@@ -139,7 +139,6 @@ void __init init_IRQ(void)
{ {
int irq; int irq;
init_vectors();
mcf_maskimr(0xffffffff); mcf_maskimr(0xffffffff);
for (irq = 0; (irq < NR_IRQS); irq++) { for (irq = 0; (irq < NR_IRQS); irq++) {
......
...@@ -35,21 +35,13 @@ asmlinkage void dbginterrupt_c(struct frame *fp) ...@@ -35,21 +35,13 @@ asmlinkage void dbginterrupt_c(struct frame *fp)
extern e_vector *_ramvec; extern e_vector *_ramvec;
void set_evector(int vecnum, void (*handler)(void))
{
if (vecnum >= 0 && vecnum <= 255)
_ramvec[vecnum] = handler;
}
/***************************************************************************/
/* Assembler routines */ /* Assembler routines */
asmlinkage void buserr(void); asmlinkage void buserr(void);
asmlinkage void trap(void); asmlinkage void trap(void);
asmlinkage void system_call(void); asmlinkage void system_call(void);
asmlinkage void inthandler(void); asmlinkage void inthandler(void);
void __init init_vectors(void) void __init trap_init(void)
{ {
int i; int i;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment