From f67080884a81f58cf95e25c284e30cbed21122a3 Mon Sep 17 00:00:00 2001 From: Roman Zippel Date: Tue, 18 Nov 2008 21:25:17 +0100 Subject: m68k: Use base_trap_init() to initialize vectors So basic initialization is all in one place. Signed-off-by: Roman Zippel Signed-off-by: Geert Uytterhoeven --- arch/m68k/kernel/traps.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'arch/m68k/kernel/traps.c') diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index ada4f4cca81..cd802d49f7e 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c @@ -48,10 +48,7 @@ asmlinkage void nmihandler(void); asmlinkage void fpu_emu(void); #endif -e_vector vectors[256] = { - [VEC_BUSERR] = buserr, - [VEC_SYS] = system_call, -}; +e_vector vectors[256]; /* nmi handler for the Amiga */ asm(".text\n" @@ -64,7 +61,7 @@ asm(".text\n" */ void __init base_trap_init(void) { - if(MACH_IS_SUN3X) { + if (MACH_IS_SUN3X) { extern e_vector *sun3x_prom_vbr; __asm__ volatile ("movec %%vbr, %0" : "=r" (sun3x_prom_vbr)); @@ -79,6 +76,9 @@ void __init base_trap_init(void) vectors[VEC_UNIMPII] = unimp_vec; } + + vectors[VEC_BUSERR] = buserr; + vectors[VEC_SYS] = system_call; } void __init trap_init (void) -- cgit v1.2.3 From cf6da575ad8d86afa591dd78114067bbff448c36 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Tue, 18 Nov 2008 21:25:17 +0100 Subject: m68k: Allow all kernel traps to be handled via exception fixups This will be needed by the ARAnyM Native Feature initialization code. Also document that the VEC_TRACE check is needed for 68020/30. Signed-off-by: Andreas Schwab Signed-off-by: Geert Uytterhoeven --- arch/m68k/kernel/traps.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'arch/m68k/kernel/traps.c') diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index cd802d49f7e..4022bbc2887 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c @@ -58,6 +58,7 @@ asm(".text\n" /* * this must be called very early as the kernel might * use some instruction that are emulated on the 060 + * and so we're prepared for early probe attempts (e.g. nf_init). */ void __init base_trap_init(void) { @@ -78,6 +79,7 @@ void __init base_trap_init(void) } vectors[VEC_BUSERR] = buserr; + vectors[VEC_ILLEGAL] = trap; vectors[VEC_SYS] = system_call; } @@ -1055,9 +1057,11 @@ asmlinkage void trap_c(struct frame *fp) siginfo_t info; if (fp->ptregs.sr & PS_S) { - if ((fp->ptregs.vector >> 2) == VEC_TRACE) { - /* traced a trapping instruction */ - } else + if (fp->ptregs.vector == VEC_TRACE << 2) { + /* traced a trapping instruction on a 68020/30, + * real exception will be executed afterwards. + */ + } else if (!handle_kernel_fault(&fp->ptregs)) bad_super_trap(fp); return; } -- cgit v1.2.3