OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [m68k/] [cf-isrs.c] - Blame information for rev 857

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 jeremybenn
/*
2
 * cf-isv.c --
3
 *
4
 * Copyright (c) 2006 CodeSourcery Inc
5
 *
6
 * The authors hereby grant permission to use, copy, modify, distribute,
7
 * and license this software and its documentation for any purpose, provided
8
 * that existing copyright notices are retained in all copies and that this
9
 * notice is included verbatim in any distributions. No written agreement,
10
 * license, or royalty fee is required for any of the authorized uses.
11
 * Modifications to this software may be copyrighted by their authors
12
 * and need not follow the licensing terms described here, provided that
13
 * the new terms are clearly indicated on the first page of each file where
14
 * they apply.
15
 */
16
 
17
/* This file contains default interrupt handlers code for the
18
   interrupt vector.  All but one of the interrupts are user
19
   replaceable.
20
 
21
   These interrupt handlers are entered whenever the associated
22
   interrupt occurs.  All they do is stop the debugger to give the user
23
   the opportunity to determine where the problem was.  */
24
 
25
 
26
/* Each ISR is a loop containing a halt instruction  */
27
#define ISR_DEFINE(NAME)                                        \
28
void __attribute__((interrupt_handler)) NAME (void)             \
29
{                                                               \
30
  while (1)                                                     \
31
    __asm__ __volatile__ ("halt" ::: "memory");                 \
32
}                                                               \
33
struct eat_trailing_semicolon
34
 
35
#if defined (L_other_interrupt)
36
static ISR_DEFINE (__other_interrupt);
37
#define ALIAS __other_interrupt
38
#define PREFIX interrupt
39
#define ALIASES A(6) A(7) \
40
        A(15) A(16) A(17) A(18) A(19) A(20) A(21) A(22) A(23) \
41
        A(25) A(26) A(27) A(28) A(29) A(30) A(31) \
42
        A(56) A(57) A(58) A(59) A(60) A(62) A(63) \
43
        A(64) A(65) A(66) A(67) A(68) A(69) A(70) A(71) \
44
        A(72) A(73) A(74) A(75) A(76) A(77) A(78) A(79) \
45
        A(80) A(81) A(82) A(83) A(84) A(85) A(86) A(87) \
46
        A(88) A(89) A(90) A(91) A(92) A(93) A(94) A(95) \
47
        A(96) A(97) A(98) A(99) A(100) A(101) A(102) A(103) \
48
        A(104) A(105) A(106) A(107) A(108) A(109) A(110) A(111) \
49
        A(112) A(113) A(114) A(115) A(116) A(117) A(118) A(119) \
50
        A(120) A(121) A(122) A(123) A(124) A(125) A(126) A(127) \
51
        A(128) A(129) A(130) A(131) A(132) A(133) A(134) A(135) \
52
        A(136) A(137) A(138) A(139) A(140) A(141) A(142) A(143) \
53
        A(144) A(145) A(146) A(147) A(148) A(149) A(150) A(151) \
54
        A(152) A(153) A(154) A(155) A(156) A(157) A(158) A(159) \
55
        A(160) A(161) A(162) A(163) A(164) A(165) A(166) A(167) \
56
        A(168) A(169) A(170) A(171) A(172) A(173) A(174) A(175) \
57
        A(176) A(177) A(178) A(179) A(180) A(181) A(182) A(183) \
58
        A(184) A(185) A(186) A(187) A(188) A(189) A(190) A(191) \
59
        A(192) A(193) A(194) A(195) A(196) A(197) A(198) A(199) \
60
        A(200) A(201) A(202) A(203) A(204) A(205) A(206) A(207) \
61
        A(208) A(209) A(210) A(211) A(212) A(213) A(214) A(215) \
62
        A(216) A(217) A(218) A(219) A(220) A(221) A(222) A(223) \
63
        A(224) A(225) A(226) A(227) A(228) A(229) A(230) A(231) \
64
        A(232) A(233) A(234) A(235) A(236) A(237) A(238) A(239) \
65
        A(240) A(241) A(242) A(243) A(244) A(245) A(246) A(247) \
66
        A(248) A(249) A(250) A(251) A(252) A(253) A(254) A(255)
67
#endif
68
 
69
#if defined (L_access_error)
70
ISR_DEFINE (__access_error);
71
#define DEFINED __access_error
72
#endif
73
 
74
#if defined (L_address_error)
75
ISR_DEFINE (__address_error);
76
#define DEFINED __address_error
77
#endif
78
 
79
#if defined (L_illegal_instruction)
80
ISR_DEFINE (__illegal_instruction);
81
#define DEFINED __illegal_instruction
82
#endif
83
 
84
#if defined (L_divide_by_zero)
85
ISR_DEFINE (__divide_by_zero);
86
#define DEFINED __divide_by_zero
87
#endif
88
 
89
#if defined (L_privilege_violation)
90
ISR_DEFINE (__privilege_violation);
91
#define DEFINED __privilege_violation
92
#endif
93
 
94
#if defined (L_trace)
95
ISR_DEFINE (__trace);
96
#define DEFINED __trace
97
#endif
98
 
99
#if defined (L_unimplemented_opcode)
100
static ISR_DEFINE (__unimplemented_opcode);
101
#define ALIAS __unimplemented_opcode
102
#define PREFIX unimplemented_
103
#define SUFFIX _opcode
104
#define ALIASES A(line_a) A(line_f)
105
#endif
106
 
107
#if defined (L_breakpoint_debug_interrupt)
108
static ISR_DEFINE (__breakpoint_debug_interrupt);
109
#define ALIAS __breakpoint_debug_interrupt
110
#define SUFFIX _breakpoint_debug_interrupt
111
#define ALIASES A(non_pc) A(pc)
112
#endif
113
 
114
#if defined (L_format_error)
115
ISR_DEFINE (__format_error);
116
#define DEFINED __format_error
117
#endif
118
 
119
#if defined (L_spurious_interrupt)
120
ISR_DEFINE (__spurious_interrupt);
121
#define DEFINED __spurious_interrupt
122
#endif
123
 
124
#if defined (L_trap_interrupt)
125
static ISR_DEFINE (__trap_interrupt);
126
#define ALIAS __trap_interrupt
127
#define PREFIX trap
128
#define ALIASES A(0) A(1) A(2) A(3) A(4) A(5) A(6) A(7) \
129
        A(8) A(9) A(10) A(11) A(12) A(13) A(14) A(15)
130
#endif
131
 
132
#if defined (L_fp_interrupt)
133
static ISR_DEFINE (__fp_interrupt);
134
#define ALIAS __fp_interrupt
135
#define PREFIX fp_
136
#define ALIASES A(branch_unordered) A(inexact_result) A(divide_by_zero) \
137
        A(underflow) A(operand_error) A(overflow) A(input_not_a_number) \
138
        A(input_denormalized_number)
139
#endif
140
 
141
#if defined (L_unsupported_instruction)
142
ISR_DEFINE (__unsupported_instruction);
143
#define DEFINED __unsupported_instruction
144
#endif
145
 
146
#if defined(ALIAS)
147
#ifndef PREFIX
148
#define PREFIX
149
#endif
150
#ifndef SUFFIX
151
#define SUFFIX
152
#endif
153
#define STRING_(a) #a
154
#define STRING(a) STRING_(a)
155
#define PASTE4_(a,b,c,d) a##b##c##d
156
#define PASTE4(a,b,c,d) PASTE4_(a,b,c,d)
157
#define A(N) \
158
  void __attribute__((weak, alias(STRING(ALIAS)))) PASTE4(__,PREFIX,N,SUFFIX) (void);
159
ALIASES
160
#elif !defined(DEFINED)
161
#error "No interrupt routine requested"
162
#endif
163
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.