9210 remove KMDB branch debugging support
[unleashed.git] / usr / src / uts / intel / kdi / kdi_idthdl.s
blob359df2a8f8786fcf601f9ee0f825d8f973d56bcb
1 /*
2 * CDDL HEADER START
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]
19 * CDDL HEADER END
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
33 * different number.
36 #include <sys/asm_linkage.h>
37 #include <sys/kdi_regs.h>
39 /* Nothing in this file is of interest to lint. */
40 #if !defined(__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) \
60 popq %rcx; \
61 popq %r11; \
62 pushq $trapno
64 #define TRAP_ERR(trapno) \
65 popq %rcx; \
66 popq %r11; \
67 pushq $0; \
68 pushq $trapno
70 #else
72 #define TRAP_NOERR(trapno) \
73 push $trapno
75 #define TRAP_ERR(trapno) \
76 push $0; \
77 push $trapno
79 #endif /* __xpv && __amd64 */
82 #define MKIVCT(n) \
83 ENTRY_NP(kdi_ivct/**/n/**/); \
84 TRAP_ERR(n); \
85 jmp kdi_cmnint; \
86 SET_SIZE(kdi_ivct/**/n/**/)
88 #define MKTRAPHDLR(n) \
89 ENTRY_NP(kdi_trap/**/n); \
90 TRAP_ERR(n); \
91 jmp kdi_cmnint; \
92 SET_SIZE(kdi_trap/**/n/**/)
94 #define MKTRAPERRHDLR(n) \
95 ENTRY_NP(kdi_traperr/**/n); \
96 TRAP_NOERR(n); \
97 jmp kdi_cmnint; \
98 SET_SIZE(kdi_traperr/**/n)
100 #define MKNMIHDLR \
101 ENTRY_NP(kdi_int2); \
102 TRAP_NOERR(2); \
103 jmp kdi_nmiint; \
104 SET_SIZE(kdi_int2)
106 #define MKINVALHDLR \
107 ENTRY_NP(kdi_invaltrap); \
108 TRAP_NOERR(255); \
109 jmp kdi_cmnint; \
110 SET_SIZE(kdi_invaltrap)
113 * The handlers themselves
116 MKINVALHDLR
117 MKTRAPHDLR(0)
118 MKTRAPHDLR(1)
119 MKNMIHDLR/*2*/
120 MKTRAPHDLR(3)
121 MKTRAPHDLR(4)
122 MKTRAPHDLR(5)
123 MKTRAPHDLR(6)
124 MKTRAPHDLR(7)
125 MKTRAPHDLR(9)
126 MKTRAPHDLR(15)
127 MKTRAPHDLR(16)
128 MKTRAPHDLR(17)
129 MKTRAPHDLR(18)
130 MKTRAPHDLR(19)
131 MKTRAPHDLR(20)
133 MKTRAPERRHDLR(8)
134 MKTRAPERRHDLR(10)
135 MKTRAPERRHDLR(11)
136 MKTRAPERRHDLR(12)
137 MKTRAPERRHDLR(13)
138 MKTRAPERRHDLR(14)
140 .globl kdi_ivct_size
141 kdi_ivct_size:
142 .NWORD [kdi_ivct33-kdi_ivct32]
144 /* 10 billion and one interrupt handlers */
145 kdi_ivct_base:
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);
203 #endif