summaryrefslogtreecommitdiffstats
path: root/libgloss/m68k/cf-isrs.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2007-01-04 18:05:56 +0000
committerJeff Johnston <jjohnstn@redhat.com>2007-01-04 18:05:56 +0000
commit9d507d4d4b1a39677da09aebd8b1e7fb4e348aea (patch)
tree334e5bfdab5d9e1185d26b468b4e763cce1b593f /libgloss/m68k/cf-isrs.c
parent0a9e977f62696470a24ec8aca12b1a4b434fa2a6 (diff)
downloadcygnal-9d507d4d4b1a39677da09aebd8b1e7fb4e348aea.tar.gz
cygnal-9d507d4d4b1a39677da09aebd8b1e7fb4e348aea.tar.bz2
cygnal-9d507d4d4b1a39677da09aebd8b1e7fb4e348aea.zip
2007-01-04 Kazu Hirata <kazu@codesourcery.com>
Merge from newlib-csl-20060320-branch: 2006-12-22 Nathan Sidwell <nathan@codesourcery.com> libgloss/ * m68k/Makefile.in (CF_ISRS): Remove now shared routines. * m68k/cf-crt0.S (__reset): Define here. * m68k/cf-isrs.c: Share some ISRS. Add aliases for each IRQ slot. * m68k/cf-isv.S: Move to .interrupt_vector section. Make each slot a unique routine. * m68k/cf.sc: Adjust for .interrupt_vector section. libgloss/ * m68k/Makefile.in (m5273c3): Rename to ... (m5272c3): ... here to fix typo. (m5249c3): New. (CF_BOARDS): Add it.
Diffstat (limited to 'libgloss/m68k/cf-isrs.c')
-rw-r--r--libgloss/m68k/cf-isrs.c186
1 files changed, 80 insertions, 106 deletions
diff --git a/libgloss/m68k/cf-isrs.c b/libgloss/m68k/cf-isrs.c
index e9846e237..34dcf2caa 100644
--- a/libgloss/m68k/cf-isrs.c
+++ b/libgloss/m68k/cf-isrs.c
@@ -33,157 +33,131 @@ void __attribute__((interrupt_handler)) NAME (void) \
struct eat_trailing_semicolon
#if defined (L_other_interrupt)
-ISR_DEFINE (__other_interrupt);
-#endif
-
-#if defined (L_reset)
-ISR_DEFINE (__reset);
+static ISR_DEFINE (__other_interrupt);
+#define ALIAS __other_interrupt
+#define PREFIX interrupt
+#define ALIASES A(6) A(7) \
+ A(15) A(16) A(17) A(18) A(19) A(20) A(21) A(22) A(23) \
+ A(25) A(26) A(27) A(28) A(29) A(30) A(31) \
+ A(56) A(57) A(58) A(59) A(60) A(62) A(63) \
+ A(64) A(65) A(66) A(67) A(68) A(69) A(70) A(71) \
+ A(72) A(73) A(74) A(75) A(76) A(77) A(78) A(79) \
+ A(80) A(81) A(82) A(83) A(84) A(85) A(86) A(87) \
+ A(88) A(89) A(90) A(91) A(92) A(93) A(94) A(95) \
+ A(96) A(97) A(98) A(99) A(100) A(101) A(102) A(103) \
+ A(104) A(105) A(106) A(107) A(108) A(109) A(110) A(111) \
+ A(112) A(113) A(114) A(115) A(116) A(117) A(118) A(119) \
+ A(120) A(121) A(122) A(123) A(124) A(125) A(126) A(127) \
+ A(128) A(129) A(130) A(131) A(132) A(133) A(134) A(135) \
+ A(136) A(137) A(138) A(139) A(140) A(141) A(142) A(143) \
+ A(144) A(145) A(146) A(147) A(148) A(149) A(150) A(151) \
+ A(152) A(153) A(154) A(155) A(156) A(157) A(158) A(159) \
+ A(160) A(161) A(162) A(163) A(164) A(165) A(166) A(167) \
+ A(168) A(169) A(170) A(171) A(172) A(173) A(174) A(175) \
+ A(176) A(177) A(178) A(179) A(180) A(181) A(182) A(183) \
+ A(184) A(185) A(186) A(187) A(188) A(189) A(190) A(191) \
+ A(192) A(193) A(194) A(195) A(196) A(197) A(198) A(199) \
+ A(200) A(201) A(202) A(203) A(204) A(205) A(206) A(207) \
+ A(208) A(209) A(210) A(211) A(212) A(213) A(214) A(215) \
+ A(216) A(217) A(218) A(219) A(220) A(221) A(222) A(223) \
+ A(224) A(225) A(226) A(227) A(228) A(229) A(230) A(231) \
+ A(232) A(233) A(234) A(235) A(236) A(237) A(238) A(239) \
+ A(240) A(241) A(242) A(243) A(244) A(245) A(246) A(247) \
+ A(248) A(249) A(250) A(251) A(252) A(253) A(254) A(255)
#endif
#if defined (L_access_error)
ISR_DEFINE (__access_error);
+#define DEFINED __access_error
#endif
#if defined (L_address_error)
ISR_DEFINE (__address_error);
+#define DEFINED __address_error
#endif
#if defined (L_illegal_instruction)
ISR_DEFINE (__illegal_instruction);
+#define DEFINED __illegal_instruction
#endif
#if defined (L_divide_by_zero)
ISR_DEFINE (__divide_by_zero);
+#define DEFINED __divide_by_zero
#endif
#if defined (L_privilege_violation)
ISR_DEFINE (__privilege_violation);
+#define DEFINED __privilege_violation
#endif
#if defined (L_trace)
ISR_DEFINE (__trace);
+#define DEFINED __trace
#endif
-#if defined (L_unimplemented_line_a_opcode)
-ISR_DEFINE (__unimplemented_line_a_opcode);
-#endif
-
-#if defined (L_unimplemented_line_f_opcode)
-ISR_DEFINE (__unimplemented_line_f_opcode);
+#if defined (L_unimplemented_opcode)
+static ISR_DEFINE (__unimplemented_opcode);
+#define ALIAS __unimplemented_opcode
+#define PREFIX unimplemented_
+#define SUFFIX _opcode
+#define ALIASES A(line_a) A(line_f)
#endif
-#if defined (L_non_pc_breakpoint_debug_interrupt)
-ISR_DEFINE (__non_pc_breakpoint_debug_interrupt);
-#endif
-
-#if defined (L_pc_breakpoint_debug_interrupt)
-ISR_DEFINE (__pc_breakpoint_debug_interrupt);
+#if defined (L_breakpoint_debug_interrupt)
+static ISR_DEFINE (__breakpoint_debug_interrupt);
+#define ALIAS __breakpoint_debug_interrupt
+#define SUFFIX _breakpoint_debug_interrupt
+#define ALIASES A(non_pc) A(pc)
#endif
#if defined (L_format_error)
ISR_DEFINE (__format_error);
+#define DEFINED __format_error
#endif
#if defined (L_spurious_interrupt)
ISR_DEFINE (__spurious_interrupt);
+#define DEFINED __spurious_interrupt
#endif
-#if defined (L_trap0)
-ISR_DEFINE (__trap0);
+#if defined (L_trap_interrupt)
+static ISR_DEFINE (__trap_interrupt);
+#define ALIAS __trap_interrupt
+#define PREFIX trap
+#define ALIASES A(0) A(1) A(2) A(3) A(4) A(5) A(6) A(7) \
+ A(8) A(9) A(10) A(11) A(12) A(13) A(14) A(15)
#endif
-#if defined (L_trap1)
-ISR_DEFINE (__trap1);
+#if defined (L_fp_interrupt)
+static ISR_DEFINE (__fp_interrupt);
+#define ALIAS __fp_interrupt
+#define PREFIX fp_
+#define ALIASES A(branch_unordered) A(inexact_result) A(divide_by_zero) \
+ A(underflow) A(operand_error) A(overflow) A(input_not_a_number) \
+ A(input_denormalized_number)
#endif
-#if defined (L_trap2)
-ISR_DEFINE (__trap2);
-#endif
-
-#if defined (L_trap3)
-ISR_DEFINE (__trap3);
-#endif
-
-#if defined (L_trap4)
-ISR_DEFINE (__trap4);
-#endif
-
-#if defined (L_trap5)
-ISR_DEFINE (__trap5);
-#endif
-
-#if defined (L_trap6)
-ISR_DEFINE (__trap6);
-#endif
-
-#if defined (L_trap7)
-ISR_DEFINE (__trap7);
-#endif
-
-#if defined (L_trap8)
-ISR_DEFINE (__trap8);
-#endif
-
-#if defined (L_trap9)
-ISR_DEFINE (__trap9);
-#endif
-
-#if defined (L_trap10)
-ISR_DEFINE (__trap10);
-#endif
-
-#if defined (L_trap11)
-ISR_DEFINE (__trap11);
-#endif
-
-#if defined (L_trap12)
-ISR_DEFINE (__trap12);
-#endif
-
-#if defined (L_trap13)
-ISR_DEFINE (__trap13);
-#endif
-
-#if defined (L_trap14)
-ISR_DEFINE (__trap14);
-#endif
-
-#if defined (L_trap15)
-ISR_DEFINE (__trap15);
-#endif
-
-#if defined (L_fp_branch_unordered)
-ISR_DEFINE (__fp_branch_unordered);
-#endif
-
-#if defined (L_fp_inexact_result)
-ISR_DEFINE (__fp_inexact_result);
-#endif
-
-#if defined (L_fp_divide_by_zero)
-ISR_DEFINE (__fp_divide_by_zero);
-#endif
-
-#if defined (L_fp_underflow)
-ISR_DEFINE (__fp_underflow);
-#endif
-
-#if defined (L_fp_operand_error)
-ISR_DEFINE (__fp_operand_error);
+#if defined (L_unsupported_instruction)
+ISR_DEFINE (__unsupported_instruction);
+#define DEFINED __unsupported_instruction
#endif
-#if defined (L_fp_overflow)
-ISR_DEFINE (__fp_overflow);
+#if defined(ALIAS)
+#ifndef PREFIX
+#define PREFIX
#endif
-
-#if defined (L_fp_input_not_a_number)
-ISR_DEFINE (__fp_input_not_a_number);
+#ifndef SUFFIX
+#define SUFFIX
#endif
-
-#if defined (L_fp_input_denormalized_number)
-ISR_DEFINE (__fp_input_denormalized_number);
+#define STRING_(a) #a
+#define STRING(a) STRING_(a)
+#define PASTE4_(a,b,c,d) a##b##c##d
+#define PASTE4(a,b,c,d) PASTE4_(a,b,c,d)
+#define A(N) \
+ void __attribute__((weak, alias(STRING(ALIAS)))) PASTE4(__,PREFIX,N,SUFFIX) (void);
+ALIASES
+#elif !defined(DEFINED)
+#error "No interrupt routine requested"
#endif
-#if defined (L_unsupported_instruction)
-ISR_DEFINE (__unsupported_instruction);
-#endif