mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
// SPDX-License-Identifier: GPL-2.0 |
|
/***************************************************************************/ |
|
|
|
/* |
|
* vectors.c -- high level trap setup for ColdFire |
|
* |
|
* Copyright (C) 1999-2007, Greg Ungerer <[email protected]> |
|
*/ |
|
|
|
/***************************************************************************/ |
|
|
|
#include <linux/kernel.h> |
|
#include <linux/init.h> |
|
#include <linux/irq.h> |
|
#include <asm/traps.h> |
|
#include <asm/machdep.h> |
|
#include <asm/coldfire.h> |
|
#include <asm/mcfsim.h> |
|
#include <asm/mcfwdebug.h> |
|
|
|
/***************************************************************************/ |
|
|
|
#ifdef TRAP_DBG_INTERRUPT |
|
|
|
asmlinkage void dbginterrupt_c(struct frame *fp) |
|
{ |
|
extern void dump(struct pt_regs *fp); |
|
printk(KERN_DEBUG "%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__); |
|
dump((struct pt_regs *) fp); |
|
asm("halt"); |
|
} |
|
|
|
#endif |
|
|
|
/***************************************************************************/ |
|
|
|
/* Assembler routines */ |
|
asmlinkage void buserr(void); |
|
asmlinkage void trap(void); |
|
asmlinkage void system_call(void); |
|
asmlinkage void inthandler(void); |
|
|
|
void __init trap_init(void) |
|
{ |
|
int i; |
|
|
|
/* |
|
* There is a common trap handler and common interrupt |
|
* handler that handle almost every vector. We treat |
|
* the system call and bus error special, they get their |
|
* own first level handlers. |
|
*/ |
|
for (i = 3; (i <= 23); i++) |
|
_ramvec[i] = trap; |
|
for (i = 33; (i <= 63); i++) |
|
_ramvec[i] = trap; |
|
for (i = 24; (i <= 31); i++) |
|
_ramvec[i] = inthandler; |
|
for (i = 64; (i < 255); i++) |
|
_ramvec[i] = inthandler; |
|
_ramvec[255] = 0; |
|
|
|
_ramvec[2] = buserr; |
|
_ramvec[32] = system_call; |
|
|
|
#ifdef TRAP_DBG_INTERRUPT |
|
_ramvec[12] = dbginterrupt; |
|
#endif |
|
} |
|
|
|
/***************************************************************************/
|
|
|