4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
25 * Copyright 2018 Joyent, Inc.
29 * Companion to kdi_idt.c - the implementation of the trap and interrupt
30 * handlers. For the most part, these handlers do the same thing - they
31 * push a trap number onto the stack, followed by a jump to kdi_cmnint.
32 * Each trap and interrupt has its own handler because each one pushes a
36 #include <sys/asm_linkage.h>
37 #include <sys/kdi_regs.h>
39 /* Nothing in this file is of interest to lint. */
43 * The default ASM_ENTRY_ALIGN (16) wastes far too much space. Pay no
44 * attention to the fleet of nop's we're adding to each handler.
46 #undef ASM_ENTRY_ALIGN
47 #define ASM_ENTRY_ALIGN 8
50 * Generic trap and interrupt handlers.
53 #if defined(__xpv) && defined(__amd64)
56 * The hypervisor places r11 and rcx on the stack.
59 #define TRAP_NOERR(trapno) \
64 #define TRAP_ERR(trapno) \
72 #define TRAP_NOERR(trapno) \
75 #define TRAP_ERR(trapno) \
79 #endif /* __xpv && __amd64 */
83 ENTRY_NP
(kdi_ivct
/**/n
/**/); \
86 SET_SIZE
(kdi_ivct
/**/n
/**/)
88 #define MKTRAPHDLR(n) \
89 ENTRY_NP
(kdi_trap
/**/n
); \
92 SET_SIZE
(kdi_trap
/**/n
/**/)
94 #define MKTRAPERRHDLR(n) \
95 ENTRY_NP
(kdi_traperr
/**/n
); \
98 SET_SIZE
(kdi_traperr
/**/n
)
101 ENTRY_NP
(kdi_int2
); \
106 #define MKINVALHDLR \
107 ENTRY_NP
(kdi_invaltrap
); \
110 SET_SIZE
(kdi_invaltrap
)
113 * The handlers themselves
142 .NWORD [kdi_ivct33-kdi_ivct32]
144 /* 10 billion and one interrupt handlers */
146 MKIVCT
(32); MKIVCT
(33); MKIVCT
(34); MKIVCT
(35);
147 MKIVCT
(36); MKIVCT
(37); MKIVCT
(38); MKIVCT
(39);
148 MKIVCT
(40); MKIVCT
(41); MKIVCT
(42); MKIVCT
(43);
149 MKIVCT
(44); MKIVCT
(45); MKIVCT
(46); MKIVCT
(47);
150 MKIVCT
(48); MKIVCT
(49); MKIVCT
(50); MKIVCT
(51);
151 MKIVCT
(52); MKIVCT
(53); MKIVCT
(54); MKIVCT
(55);
152 MKIVCT
(56); MKIVCT
(57); MKIVCT
(58); MKIVCT
(59);
153 MKIVCT
(60); MKIVCT
(61); MKIVCT
(62); MKIVCT
(63);
154 MKIVCT
(64); MKIVCT
(65); MKIVCT
(66); MKIVCT
(67);
155 MKIVCT
(68); MKIVCT
(69); MKIVCT
(70); MKIVCT
(71);
156 MKIVCT
(72); MKIVCT
(73); MKIVCT
(74); MKIVCT
(75);
157 MKIVCT
(76); MKIVCT
(77); MKIVCT
(78); MKIVCT
(79);
158 MKIVCT
(80); MKIVCT
(81); MKIVCT
(82); MKIVCT
(83);
159 MKIVCT
(84); MKIVCT
(85); MKIVCT
(86); MKIVCT
(87);
160 MKIVCT
(88); MKIVCT
(89); MKIVCT
(90); MKIVCT
(91);
161 MKIVCT
(92); MKIVCT
(93); MKIVCT
(94); MKIVCT
(95);
162 MKIVCT
(96); MKIVCT
(97); MKIVCT
(98); MKIVCT
(99);
163 MKIVCT
(100); MKIVCT
(101); MKIVCT
(102); MKIVCT
(103);
164 MKIVCT
(104); MKIVCT
(105); MKIVCT
(106); MKIVCT
(107);
165 MKIVCT
(108); MKIVCT
(109); MKIVCT
(110); MKIVCT
(111);
166 MKIVCT
(112); MKIVCT
(113); MKIVCT
(114); MKIVCT
(115);
167 MKIVCT
(116); MKIVCT
(117); MKIVCT
(118); MKIVCT
(119);
168 MKIVCT
(120); MKIVCT
(121); MKIVCT
(122); MKIVCT
(123);
169 MKIVCT
(124); MKIVCT
(125); MKIVCT
(126); MKIVCT
(127);
170 MKIVCT
(128); MKIVCT
(129); MKIVCT
(130); MKIVCT
(131);
171 MKIVCT
(132); MKIVCT
(133); MKIVCT
(134); MKIVCT
(135);
172 MKIVCT
(136); MKIVCT
(137); MKIVCT
(138); MKIVCT
(139);
173 MKIVCT
(140); MKIVCT
(141); MKIVCT
(142); MKIVCT
(143);
174 MKIVCT
(144); MKIVCT
(145); MKIVCT
(146); MKIVCT
(147);
175 MKIVCT
(148); MKIVCT
(149); MKIVCT
(150); MKIVCT
(151);
176 MKIVCT
(152); MKIVCT
(153); MKIVCT
(154); MKIVCT
(155);
177 MKIVCT
(156); MKIVCT
(157); MKIVCT
(158); MKIVCT
(159);
178 MKIVCT
(160); MKIVCT
(161); MKIVCT
(162); MKIVCT
(163);
179 MKIVCT
(164); MKIVCT
(165); MKIVCT
(166); MKIVCT
(167);
180 MKIVCT
(168); MKIVCT
(169); MKIVCT
(170); MKIVCT
(171);
181 MKIVCT
(172); MKIVCT
(173); MKIVCT
(174); MKIVCT
(175);
182 MKIVCT
(176); MKIVCT
(177); MKIVCT
(178); MKIVCT
(179);
183 MKIVCT
(180); MKIVCT
(181); MKIVCT
(182); MKIVCT
(183);
184 MKIVCT
(184); MKIVCT
(185); MKIVCT
(186); MKIVCT
(187);
185 MKIVCT
(188); MKIVCT
(189); MKIVCT
(190); MKIVCT
(191);
186 MKIVCT
(192); MKIVCT
(193); MKIVCT
(194); MKIVCT
(195);
187 MKIVCT
(196); MKIVCT
(197); MKIVCT
(198); MKIVCT
(199);
188 MKIVCT
(200); MKIVCT
(201); MKIVCT
(202); MKIVCT
(203);
189 MKIVCT
(204); MKIVCT
(205); MKIVCT
(206); MKIVCT
(207);
190 MKIVCT
(208); MKIVCT
(209); MKIVCT
(210); MKIVCT
(211);
191 MKIVCT
(212); MKIVCT
(213); MKIVCT
(214); MKIVCT
(215);
192 MKIVCT
(216); MKIVCT
(217); MKIVCT
(218); MKIVCT
(219);
193 MKIVCT
(220); MKIVCT
(221); MKIVCT
(222); MKIVCT
(223);
194 MKIVCT
(224); MKIVCT
(225); MKIVCT
(226); MKIVCT
(227);
195 MKIVCT
(228); MKIVCT
(229); MKIVCT
(230); MKIVCT
(231);
196 MKIVCT
(232); MKIVCT
(233); MKIVCT
(234); MKIVCT
(235);
197 MKIVCT
(236); MKIVCT
(237); MKIVCT
(238); MKIVCT
(239);
198 MKIVCT
(240); MKIVCT
(241); MKIVCT
(242); MKIVCT
(243);
199 MKIVCT
(244); MKIVCT
(245); MKIVCT
(246); MKIVCT
(247);
200 MKIVCT
(248); MKIVCT
(249); MKIVCT
(250); MKIVCT
(251);
201 MKIVCT
(252); MKIVCT
(253); MKIVCT
(254); MKIVCT
(255);