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: Greg Ungerer <gerg@uclinux.org>
This commit is contained in:
parent
f4a5437333
commit
622e9472dd
9 changed files with 13 additions and 24 deletions
|
@ -22,7 +22,6 @@ extern e_vector vectors[];
|
|||
asmlinkage void auto_inthandler(void);
|
||||
asmlinkage void user_inthandler(void);
|
||||
asmlinkage void bad_inthandler(void);
|
||||
extern void init_vectors(void);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -60,10 +60,6 @@ static char const * const vec_names[] = {
|
|||
"MMU CONFIGURATION ERROR"
|
||||
};
|
||||
|
||||
void __init trap_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
void die_if_kernel(char *str, struct pt_regs *fp, int nr)
|
||||
{
|
||||
if (!(fp->sr & PS_S))
|
||||
|
|
|
@ -162,8 +162,6 @@ void __init init_IRQ(void)
|
|||
{
|
||||
int irq, edge;
|
||||
|
||||
init_vectors();
|
||||
|
||||
/* Mask all interrupt sources */
|
||||
writel(0x88888888, MCF_MBAR + MCFSIM_ICR1);
|
||||
writel(0x88888888, MCF_MBAR + MCFSIM_ICR2);
|
||||
|
|
|
@ -155,7 +155,7 @@ static struct irq_chip intc_irq_chip = {
|
|||
* This function should be called during kernel startup to initialize
|
||||
* the machine vector table.
|
||||
*/
|
||||
void __init init_IRQ(void)
|
||||
void __init trap_init(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -172,6 +172,11 @@ void __init init_IRQ(void)
|
|||
_ramvec[69] = (e_vector) inthandler5;
|
||||
_ramvec[70] = (e_vector) inthandler6;
|
||||
_ramvec[71] = (e_vector) inthandler7;
|
||||
}
|
||||
|
||||
void __init init_IRQ(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
IVR = 0x40; /* Set DragonBall IVR (interrupt base) to 64 */
|
||||
|
||||
|
|
|
@ -63,9 +63,8 @@ static struct irq_chip intc_irq_chip = {
|
|||
* This function should be called during kernel startup to initialize
|
||||
* the vector table.
|
||||
*/
|
||||
void init_IRQ(void)
|
||||
void __init trap_init(void)
|
||||
{
|
||||
int i;
|
||||
int vba = (CPM_VECTOR_BASE<<4);
|
||||
|
||||
/* set up the vectors */
|
||||
|
@ -130,6 +129,11 @@ void init_IRQ(void)
|
|||
|
||||
/* turn off all CPM interrupts */
|
||||
pquicc->intr_cimr = 0x00000000;
|
||||
}
|
||||
|
||||
void init_IRQ(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; (i < NR_IRQS); i++) {
|
||||
irq_set_chip(i, &intc_irq_chip);
|
||||
|
|
|
@ -194,8 +194,6 @@ void __init init_IRQ(void)
|
|||
{
|
||||
int irq;
|
||||
|
||||
init_vectors();
|
||||
|
||||
/* Mask all interrupt sources */
|
||||
__raw_writel(0x1, MCFICM_INTC0 + MCFINTC_IMRL);
|
||||
#ifdef MCFICM_INTC1
|
||||
|
|
|
@ -171,8 +171,6 @@ void __init init_IRQ(void)
|
|||
{
|
||||
int irq, eirq;
|
||||
|
||||
init_vectors();
|
||||
|
||||
/* Mask all interrupt sources */
|
||||
__raw_writeb(0xff, MCFINTC0_SIMR);
|
||||
if (MCFINTC1_SIMR)
|
||||
|
|
|
@ -139,7 +139,6 @@ void __init init_IRQ(void)
|
|||
{
|
||||
int irq;
|
||||
|
||||
init_vectors();
|
||||
mcf_maskimr(0xffffffff);
|
||||
|
||||
for (irq = 0; (irq < NR_IRQS); irq++) {
|
||||
|
|
|
@ -35,21 +35,13 @@ asmlinkage void dbginterrupt_c(struct frame *fp)
|
|||
|
||||
extern e_vector *_ramvec;
|
||||
|
||||
void set_evector(int vecnum, void (*handler)(void))
|
||||
{
|
||||
if (vecnum >= 0 && vecnum <= 255)
|
||||
_ramvec[vecnum] = handler;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
/* Assembler routines */
|
||||
asmlinkage void buserr(void);
|
||||
asmlinkage void trap(void);
|
||||
asmlinkage void system_call(void);
|
||||
asmlinkage void inthandler(void);
|
||||
|
||||
void __init init_vectors(void)
|
||||
void __init trap_init(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
Loading…
Reference in a new issue