vectors.c (1743B)
1// SPDX-License-Identifier: GPL-2.0 2/***************************************************************************/ 3 4/* 5 * vectors.c -- high level trap setup for ColdFire 6 * 7 * Copyright (C) 1999-2007, Greg Ungerer <gerg@snapgear.com> 8 */ 9 10/***************************************************************************/ 11 12#include <linux/kernel.h> 13#include <linux/init.h> 14#include <linux/irq.h> 15#include <asm/traps.h> 16#include <asm/machdep.h> 17#include <asm/coldfire.h> 18#include <asm/mcfsim.h> 19#include <asm/mcfwdebug.h> 20 21/***************************************************************************/ 22 23#ifdef TRAP_DBG_INTERRUPT 24 25asmlinkage void dbginterrupt_c(struct frame *fp) 26{ 27 extern void dump(struct pt_regs *fp); 28 printk(KERN_DEBUG "%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__); 29 dump((struct pt_regs *) fp); 30 asm("halt"); 31} 32 33#endif 34 35/***************************************************************************/ 36 37/* Assembler routines */ 38asmlinkage void buserr(void); 39asmlinkage void trap(void); 40asmlinkage void system_call(void); 41asmlinkage void inthandler(void); 42 43void __init trap_init(void) 44{ 45 int i; 46 47 /* 48 * There is a common trap handler and common interrupt 49 * handler that handle almost every vector. We treat 50 * the system call and bus error special, they get their 51 * own first level handlers. 52 */ 53 for (i = 3; (i <= 23); i++) 54 _ramvec[i] = trap; 55 for (i = 33; (i <= 63); i++) 56 _ramvec[i] = trap; 57 for (i = 24; (i <= 31); i++) 58 _ramvec[i] = inthandler; 59 for (i = 64; (i < 255); i++) 60 _ramvec[i] = inthandler; 61 _ramvec[255] = 0; 62 63 _ramvec[2] = buserr; 64 _ramvec[32] = system_call; 65 66#ifdef TRAP_DBG_INTERRUPT 67 _ramvec[12] = dbginterrupt; 68#endif 69} 70 71/***************************************************************************/