Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/m68k/platform/coldfire/vectors.c
10818 views
1
/***************************************************************************/
2
3
/*
4
* linux/arch/m68knommu/platform/coldfire/vectors.c
5
*
6
* Copyright (C) 1999-2007, Greg Ungerer <[email protected]>
7
*/
8
9
/***************************************************************************/
10
11
#include <linux/kernel.h>
12
#include <linux/init.h>
13
#include <linux/irq.h>
14
#include <asm/traps.h>
15
#include <asm/machdep.h>
16
#include <asm/coldfire.h>
17
#include <asm/mcfsim.h>
18
#include <asm/mcfwdebug.h>
19
20
/***************************************************************************/
21
22
#ifdef TRAP_DBG_INTERRUPT
23
24
asmlinkage void dbginterrupt_c(struct frame *fp)
25
{
26
extern void dump(struct pt_regs *fp);
27
printk(KERN_DEBUG "%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__);
28
dump((struct pt_regs *) fp);
29
asm("halt");
30
}
31
32
#endif
33
34
/***************************************************************************/
35
36
extern e_vector *_ramvec;
37
38
void set_evector(int vecnum, void (*handler)(void))
39
{
40
if (vecnum >= 0 && vecnum <= 255)
41
_ramvec[vecnum] = handler;
42
}
43
44
/***************************************************************************/
45
46
/* Assembler routines */
47
asmlinkage void buserr(void);
48
asmlinkage void trap(void);
49
asmlinkage void system_call(void);
50
asmlinkage void inthandler(void);
51
52
void __init init_vectors(void)
53
{
54
int i;
55
56
/*
57
* There is a common trap handler and common interrupt
58
* handler that handle almost every vector. We treat
59
* the system call and bus error special, they get their
60
* own first level handlers.
61
*/
62
for (i = 3; (i <= 23); i++)
63
_ramvec[i] = trap;
64
for (i = 33; (i <= 63); i++)
65
_ramvec[i] = trap;
66
for (i = 24; (i <= 31); i++)
67
_ramvec[i] = inthandler;
68
for (i = 64; (i < 255); i++)
69
_ramvec[i] = inthandler;
70
_ramvec[255] = 0;
71
72
_ramvec[2] = buserr;
73
_ramvec[32] = system_call;
74
75
#ifdef TRAP_DBG_INTERRUPT
76
_ramvec[12] = dbginterrupt;
77
#endif
78
}
79
80
/***************************************************************************/
81
82