xref: /titanic_53/usr/src/uts/sparc/ml/modstubs.s (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate/*
2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate *
4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate * with the License.
8*7c478bd9Sstevel@tonic-gate *
9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate *
14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate *
20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate */
22*7c478bd9Sstevel@tonic-gate/*
23*7c478bd9Sstevel@tonic-gate * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24*7c478bd9Sstevel@tonic-gate * Use is subject to license terms.
25*7c478bd9Sstevel@tonic-gate */
26*7c478bd9Sstevel@tonic-gate
27*7c478bd9Sstevel@tonic-gate#pragma ident	"%Z%%M%	%I%	%E% SMI"
28*7c478bd9Sstevel@tonic-gate
29*7c478bd9Sstevel@tonic-gate#if !defined(lint)
30*7c478bd9Sstevel@tonic-gate#include "assym.h"
31*7c478bd9Sstevel@tonic-gate#endif /* !lint */
32*7c478bd9Sstevel@tonic-gate
33*7c478bd9Sstevel@tonic-gate#include <sys/asm_linkage.h>
34*7c478bd9Sstevel@tonic-gate
35*7c478bd9Sstevel@tonic-gate#if defined(lint)
36*7c478bd9Sstevel@tonic-gate
37*7c478bd9Sstevel@tonic-gatechar stubs_base[1], stubs_end[1];
38*7c478bd9Sstevel@tonic-gate
39*7c478bd9Sstevel@tonic-gate#else	/* lint */
40*7c478bd9Sstevel@tonic-gate
41*7c478bd9Sstevel@tonic-gate/*
42*7c478bd9Sstevel@tonic-gate * WARNING: there is no check for forgetting to write END_MODULE,
43*7c478bd9Sstevel@tonic-gate * and if you do, the kernel will most likely crash.  Be careful
44*7c478bd9Sstevel@tonic-gate *
45*7c478bd9Sstevel@tonic-gate * This file assumes that all of the contributions to the data segment
46*7c478bd9Sstevel@tonic-gate * will be contiguous in the output file, even though they are separated
47*7c478bd9Sstevel@tonic-gate * by pieces of text.  This is safe for all assemblers I know of now...
48*7c478bd9Sstevel@tonic-gate */
49*7c478bd9Sstevel@tonic-gate
50*7c478bd9Sstevel@tonic-gate/*
51*7c478bd9Sstevel@tonic-gate * This file uses ansi preprocessor features:
52*7c478bd9Sstevel@tonic-gate *
53*7c478bd9Sstevel@tonic-gate * 1. 	#define mac(a) extra_ ## a     -->   mac(x) expands to extra_a
54*7c478bd9Sstevel@tonic-gate * The old version of this is
55*7c478bd9Sstevel@tonic-gate *      #define mac(a) extra_/.*.*./a
56*7c478bd9Sstevel@tonic-gate * but this fails if the argument has spaces "mac ( x )"
57*7c478bd9Sstevel@tonic-gate * (Ignore the dots above, I had to put them in to keep this a comment.)
58*7c478bd9Sstevel@tonic-gate *
59*7c478bd9Sstevel@tonic-gate * 2.   #define mac(a) #a             -->    mac(x) expands to "x"
60*7c478bd9Sstevel@tonic-gate * The old version is
61*7c478bd9Sstevel@tonic-gate *      #define mac(a) "a"
62*7c478bd9Sstevel@tonic-gate *
63*7c478bd9Sstevel@tonic-gate * For some reason, the 5.0 preprocessor isn't happy with the above usage.
64*7c478bd9Sstevel@tonic-gate * For now, we're not using these ansi features.
65*7c478bd9Sstevel@tonic-gate *
66*7c478bd9Sstevel@tonic-gate * The reason is that "the 5.0 ANSI preprocessor" is built into the compiler
67*7c478bd9Sstevel@tonic-gate * and is a tokenizing preprocessor. This means, when confronted by something
68*7c478bd9Sstevel@tonic-gate * other than C token generation rules, strange things occur. In this case,
69*7c478bd9Sstevel@tonic-gate * when confronted by an assembly file, it would turn the token ".globl" into
70*7c478bd9Sstevel@tonic-gate * two tokens "." and "globl". For this reason, the traditional, non-ANSI
71*7c478bd9Sstevel@tonic-gate * preprocessor is used on assembly files.
72*7c478bd9Sstevel@tonic-gate *
73*7c478bd9Sstevel@tonic-gate * It would be desirable to have a non-tokenizing cpp (accp?) to use for this.
74*7c478bd9Sstevel@tonic-gate */
75*7c478bd9Sstevel@tonic-gate
76*7c478bd9Sstevel@tonic-gate/*
77*7c478bd9Sstevel@tonic-gate * This file contains the stubs routines for modules which can be autoloaded.
78*7c478bd9Sstevel@tonic-gate */
79*7c478bd9Sstevel@tonic-gate
80*7c478bd9Sstevel@tonic-gate
81*7c478bd9Sstevel@tonic-gate/*
82*7c478bd9Sstevel@tonic-gate * See the 'struct mod_modinfo' definition to see what this structure
83*7c478bd9Sstevel@tonic-gate * is trying to achieve here.
84*7c478bd9Sstevel@tonic-gate */
85*7c478bd9Sstevel@tonic-gate/*
86*7c478bd9Sstevel@tonic-gate * XX64 - This still needs some repair.
87*7c478bd9Sstevel@tonic-gate * (a) define 'pointer alignment' and use it
88*7c478bd9Sstevel@tonic-gate * (b) define '.pword' or equivalent, and use it (to mean .word or .xword).
89*7c478bd9Sstevel@tonic-gate */
90*7c478bd9Sstevel@tonic-gate#define	MODULE(module,namespace)	\
91*7c478bd9Sstevel@tonic-gate	.seg	".data";		\
92*7c478bd9Sstevel@tonic-gatemodule/**/_modname:			\
93*7c478bd9Sstevel@tonic-gate	.ascii	"namespace/module";	\
94*7c478bd9Sstevel@tonic-gate	.byte	0;			\
95*7c478bd9Sstevel@tonic-gate	.align	CPTRSIZE;		\
96*7c478bd9Sstevel@tonic-gate	.global	module/**/_modinfo;	\
97*7c478bd9Sstevel@tonic-gate	.type	module/**/_modinfo, #object;	\
98*7c478bd9Sstevel@tonic-gate	.size	module/**/_modinfo, 16;	\
99*7c478bd9Sstevel@tonic-gatemodule/**/_modinfo:			\
100*7c478bd9Sstevel@tonic-gate	.word 0;			\
101*7c478bd9Sstevel@tonic-gate	.word module/**/_modname;	\
102*7c478bd9Sstevel@tonic-gate	.word 0;			\
103*7c478bd9Sstevel@tonic-gate	.word 0;
104*7c478bd9Sstevel@tonic-gate
105*7c478bd9Sstevel@tonic-gate#define	END_MODULE(module)		\
106*7c478bd9Sstevel@tonic-gate	.align 8; .word 0; .word 0	/* FIXME: .xword 0 */
107*7c478bd9Sstevel@tonic-gate
108*7c478bd9Sstevel@tonic-gate
109*7c478bd9Sstevel@tonic-gate#define STUB(module, fcnname, retfcn)	\
110*7c478bd9Sstevel@tonic-gate    STUB_COMMON(module, fcnname, mod_hold_stub, retfcn, 0)
111*7c478bd9Sstevel@tonic-gate
112*7c478bd9Sstevel@tonic-gate/*
113*7c478bd9Sstevel@tonic-gate * "weak stub", don't load on account of this call
114*7c478bd9Sstevel@tonic-gate */
115*7c478bd9Sstevel@tonic-gate#define WSTUB(module, fcnname, retfcn)	\
116*7c478bd9Sstevel@tonic-gate    STUB_COMMON(module, fcnname, retfcn, retfcn, MODS_WEAK)
117*7c478bd9Sstevel@tonic-gate
118*7c478bd9Sstevel@tonic-gate/*
119*7c478bd9Sstevel@tonic-gate * "non-unloadable stub", don't bother 'holding' module if it's already loaded
120*7c478bd9Sstevel@tonic-gate * since the module cannot be unloaded.
121*7c478bd9Sstevel@tonic-gate *
122*7c478bd9Sstevel@tonic-gate * User *MUST* guarantee the module is not unloadable (no _fini routine).
123*7c478bd9Sstevel@tonic-gate */
124*7c478bd9Sstevel@tonic-gate#define NO_UNLOAD_STUB(module, fcnname, retfcn)	\
125*7c478bd9Sstevel@tonic-gate    STUB_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD)
126*7c478bd9Sstevel@tonic-gate
127*7c478bd9Sstevel@tonic-gate/*
128*7c478bd9Sstevel@tonic-gate * Macro for modstubbed system calls whose modules are not unloadable.
129*7c478bd9Sstevel@tonic-gate *
130*7c478bd9Sstevel@tonic-gate * System call modstubs needs special handling for the case where
131*7c478bd9Sstevel@tonic-gate * the modstub is a system call, because %fp comes from user frame.
132*7c478bd9Sstevel@tonic-gate */
133*7c478bd9Sstevel@tonic-gate#define	SCALL_NU_STUB(module, fcnname, retfcn)	\
134*7c478bd9Sstevel@tonic-gate    SCALL_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD)
135*7c478bd9Sstevel@tonic-gate/* "weak stub" for non-unloadable module, don't load on account of this call */
136*7c478bd9Sstevel@tonic-gate#define NO_UNLOAD_WSTUB(module, fcnname, retfcn) \
137*7c478bd9Sstevel@tonic-gate    STUB_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD|MODS_WEAK)
138*7c478bd9Sstevel@tonic-gate
139*7c478bd9Sstevel@tonic-gate#define	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)		\
140*7c478bd9Sstevel@tonic-gate	.seg	".data";						\
141*7c478bd9Sstevel@tonic-gate	.align	8;							\
142*7c478bd9Sstevel@tonic-gatefcnname/**/_info:							\
143*7c478bd9Sstevel@tonic-gate	.word	0;			/* 0 */				\
144*7c478bd9Sstevel@tonic-gate	.word	install_fcn;		/* 4 */				\
145*7c478bd9Sstevel@tonic-gate	.word	0;			/* 8 */				\
146*7c478bd9Sstevel@tonic-gate	.word	module/**/_modinfo;	/* c */				\
147*7c478bd9Sstevel@tonic-gate	.word	0;			/* 10 */			\
148*7c478bd9Sstevel@tonic-gate	.word	fcnname;		/* 14 */			\
149*7c478bd9Sstevel@tonic-gate	.word	0;			/* 18 */			\
150*7c478bd9Sstevel@tonic-gate	.word	retfcn;			/* 1c */			\
151*7c478bd9Sstevel@tonic-gate	.word   weak			/* 20 */
152*7c478bd9Sstevel@tonic-gate
153*7c478bd9Sstevel@tonic-gate/*
154*7c478bd9Sstevel@tonic-gate * The flag MODS_INSTALLED is stored in the stub data and is used to
155*7c478bd9Sstevel@tonic-gate * indicate if a module is installed and initialized.  This flag is used
156*7c478bd9Sstevel@tonic-gate * instead of the mod_stub_info->mods_modinfo->mod_installed flag
157*7c478bd9Sstevel@tonic-gate * to minimize the number of pointer de-references for each function
158*7c478bd9Sstevel@tonic-gate * call (and also to avoid possible TLB misses which could be induced
159*7c478bd9Sstevel@tonic-gate * by dereferencing these pointers.)
160*7c478bd9Sstevel@tonic-gate */
161*7c478bd9Sstevel@tonic-gate
162*7c478bd9Sstevel@tonic-gate#define STUB_COMMON(module, fcnname, install_fcn, retfcn, weak)		\
163*7c478bd9Sstevel@tonic-gate	ENTRY_NP(fcnname);						\
164*7c478bd9Sstevel@tonic-gate	save	%sp, -SA(MINFRAME), %sp;/* new window */		\
165*7c478bd9Sstevel@tonic-gate	set	fcnname/**/_info, %l5;					\
166*7c478bd9Sstevel@tonic-gate	ld	[%l5 + MODS_FLAG], %l1;	/* weak?? */			\
167*7c478bd9Sstevel@tonic-gate	cmp	%l1, 0;							\
168*7c478bd9Sstevel@tonic-gate	be,a	1f;			/* not weak */			\
169*7c478bd9Sstevel@tonic-gate	restore;							\
170*7c478bd9Sstevel@tonic-gate	btst	MODS_INSTALLED, %l1;	/* installed?? */		\
171*7c478bd9Sstevel@tonic-gate 	bne,a,pt %xcc, 1f;		/* yes, do mod_hold thing */	\
172*7c478bd9Sstevel@tonic-gate 	restore;							\
173*7c478bd9Sstevel@tonic-gate 	ldn	[%l5 + MODS_RETFCN], %g1;				\
174*7c478bd9Sstevel@tonic-gate	jmp	%g1;			/* no, just jump to retfcn */	\
175*7c478bd9Sstevel@tonic-gate	restore;							\
176*7c478bd9Sstevel@tonic-gate1:	sub	%sp, %fp, %g1;	/* get (-)size of callers stack */	\
177*7c478bd9Sstevel@tonic-gate	save	%sp, %g1, %sp;	/* create new frame same size */	\
178*7c478bd9Sstevel@tonic-gate	sub	%g0, %g1, %l4;  /* size of stack frame */		\
179*7c478bd9Sstevel@tonic-gate	sethi	%hi(fcnname/**/_info), %l5;				\
180*7c478bd9Sstevel@tonic-gate	b	stubs_common_code;					\
181*7c478bd9Sstevel@tonic-gate	or	%l5, %lo(fcnname/**/_info), %l5;			\
182*7c478bd9Sstevel@tonic-gate	SET_SIZE(fcnname);						\
183*7c478bd9Sstevel@tonic-gate	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)
184*7c478bd9Sstevel@tonic-gate
185*7c478bd9Sstevel@tonic-gate#define STUB_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)	\
186*7c478bd9Sstevel@tonic-gate	ENTRY_NP(fcnname);						\
187*7c478bd9Sstevel@tonic-gate	save	%sp, -SA(MINFRAME), %sp;	/* new window */	\
188*7c478bd9Sstevel@tonic-gate	set	fcnname/**/_info, %l5;					\
189*7c478bd9Sstevel@tonic-gate	ld	[%l5 + MODS_FLAG], %l1;					\
190*7c478bd9Sstevel@tonic-gate	btst	MODS_INSTALLED, %l1;		/* installed?? */	\
191*7c478bd9Sstevel@tonic-gate	bne,a	%xcc, 1f;			/* yes */		\
192*7c478bd9Sstevel@tonic-gate	ldn	[%l5], %g1;						\
193*7c478bd9Sstevel@tonic-gate	btst	MODS_WEAK, %l1;			/* weak?? */		\
194*7c478bd9Sstevel@tonic-gate	be,a	2f;				/* no, load module */	\
195*7c478bd9Sstevel@tonic-gate	restore;							\
196*7c478bd9Sstevel@tonic-gate	ldn	[%l5 + MODS_RETFCN], %g1;				\
197*7c478bd9Sstevel@tonic-gate1:	jmp	%g1;				/* off we go */		\
198*7c478bd9Sstevel@tonic-gate	restore;							\
199*7c478bd9Sstevel@tonic-gate2:	sub	%sp, %fp, %g1;	/* get (-)size of callers frame */	\
200*7c478bd9Sstevel@tonic-gate	save	%sp, %g1, %sp;	/* create new frame same size */	\
201*7c478bd9Sstevel@tonic-gate	sub	%g0, %g1, %l4;  /* size of stack frame */		\
202*7c478bd9Sstevel@tonic-gate	sethi	%hi(fcnname/**/_info), %l5;				\
203*7c478bd9Sstevel@tonic-gate	b	stubs_common_code;					\
204*7c478bd9Sstevel@tonic-gate	or	%l5, %lo(fcnname/**/_info), %l5;			\
205*7c478bd9Sstevel@tonic-gate	SET_SIZE(fcnname);						\
206*7c478bd9Sstevel@tonic-gate	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)
207*7c478bd9Sstevel@tonic-gate
208*7c478bd9Sstevel@tonic-gate#define SCALL_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)	\
209*7c478bd9Sstevel@tonic-gate	ENTRY_NP(fcnname);						\
210*7c478bd9Sstevel@tonic-gate	save	%sp, -SA(MINFRAME), %sp;	/* new window */	\
211*7c478bd9Sstevel@tonic-gate	set	fcnname/**/_info, %l5;					\
212*7c478bd9Sstevel@tonic-gate	ld	[%l5 + MODS_FLAG], %l1;		/* installed?? */	\
213*7c478bd9Sstevel@tonic-gate	btst	MODS_INSTALLED, %l1;					\
214*7c478bd9Sstevel@tonic-gate	be,a	%xcc, 1f;			/* no, load module */	\
215*7c478bd9Sstevel@tonic-gate	restore;							\
216*7c478bd9Sstevel@tonic-gate 	ldn	[%l5], %g1;						\
217*7c478bd9Sstevel@tonic-gate	jmp	%g1;				/* yes, off we go */	\
218*7c478bd9Sstevel@tonic-gate	restore;							\
219*7c478bd9Sstevel@tonic-gate1:	save	%sp, -SA(MINFRAME), %sp;/* new frame */			\
220*7c478bd9Sstevel@tonic-gate	sub	%g0, -SA(MINFRAME), %l4;/* size of stack frame */	\
221*7c478bd9Sstevel@tonic-gate	sethi	%hi(fcnname/**/_info), %l5;				\
222*7c478bd9Sstevel@tonic-gate	b	stubs_common_code;					\
223*7c478bd9Sstevel@tonic-gate	or	%l5, %lo(fcnname/**/_info), %l5;			\
224*7c478bd9Sstevel@tonic-gate	SET_SIZE(fcnname);						\
225*7c478bd9Sstevel@tonic-gate	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)
226*7c478bd9Sstevel@tonic-gate
227*7c478bd9Sstevel@tonic-gate	.section	".text"
228*7c478bd9Sstevel@tonic-gate
229*7c478bd9Sstevel@tonic-gate	/*
230*7c478bd9Sstevel@tonic-gate	 * We branch here with the fcnname_info pointer in l5
231*7c478bd9Sstevel@tonic-gate	 * and the frame size in %l4.
232*7c478bd9Sstevel@tonic-gate	 */
233*7c478bd9Sstevel@tonic-gate	ENTRY_NP(stubs_common_code)
234*7c478bd9Sstevel@tonic-gate	cmp	%l4, SA(MINFRAME)
235*7c478bd9Sstevel@tonic-gate	ble,a,pn %xcc, 2f
236*7c478bd9Sstevel@tonic-gate	nop
237*7c478bd9Sstevel@tonic-gate
238*7c478bd9Sstevel@tonic-gate	sub	%l4, 0x80, %l4		/* skip locals and outs */
239*7c478bd9Sstevel@tonic-gate	add	%sp, 0x80, %l0
240*7c478bd9Sstevel@tonic-gate	add	%fp, 0x80, %l1		/* get original sp before save */
241*7c478bd9Sstevel@tonic-gate1:
242*7c478bd9Sstevel@tonic-gate	/* Copy stack frame */
243*7c478bd9Sstevel@tonic-gate	ldn	[%l1 + STACK_BIAS], %l2
244*7c478bd9Sstevel@tonic-gate	inc	8, %l1
245*7c478bd9Sstevel@tonic-gate	stn	%l2, [%l0 + STACK_BIAS]
246*7c478bd9Sstevel@tonic-gate	deccc	8, %l4
247*7c478bd9Sstevel@tonic-gate	bg,a	1b
248*7c478bd9Sstevel@tonic-gate	inc	8, %l0
249*7c478bd9Sstevel@tonic-gate2:
250*7c478bd9Sstevel@tonic-gate	call	mod_hold_stub		/* Hold the module */
251*7c478bd9Sstevel@tonic-gate	mov	%l5, %o0
252*7c478bd9Sstevel@tonic-gate	cmp	%o0, -1			/* if error then return error */
253*7c478bd9Sstevel@tonic-gate	bne,a	1f
254*7c478bd9Sstevel@tonic-gate	nop
255*7c478bd9Sstevel@tonic-gate	ldn	[%l5 + MODS_RETFCN], %i0
256*7c478bd9Sstevel@tonic-gate	call	%i0
257*7c478bd9Sstevel@tonic-gate	nop
258*7c478bd9Sstevel@tonic-gate	ret
259*7c478bd9Sstevel@tonic-gate	restore	%o0, 0, %o0
260*7c478bd9Sstevel@tonic-gate1:
261*7c478bd9Sstevel@tonic-gate	ldn	[%l5], %g1
262*7c478bd9Sstevel@tonic-gate	mov	%i0, %o0	/* copy over incoming args, if number of */
263*7c478bd9Sstevel@tonic-gate	mov	%i1, %o1	/* args is > 6 then we copied them above */
264*7c478bd9Sstevel@tonic-gate	mov	%i2, %o2
265*7c478bd9Sstevel@tonic-gate	mov	%i3, %o3
266*7c478bd9Sstevel@tonic-gate	mov	%i4, %o4
267*7c478bd9Sstevel@tonic-gate	call	%g1		/* jump to the stub function */
268*7c478bd9Sstevel@tonic-gate	mov	%i5, %o5
269*7c478bd9Sstevel@tonic-gate	mov	%o0, %i0	/* copy any return values */
270*7c478bd9Sstevel@tonic-gate	mov	%o1, %i1
271*7c478bd9Sstevel@tonic-gate	call	mod_release_stub	/* release hold on module */
272*7c478bd9Sstevel@tonic-gate	mov	%l5, %o0
273*7c478bd9Sstevel@tonic-gate	ret			/* return to caller */
274*7c478bd9Sstevel@tonic-gate	restore
275*7c478bd9Sstevel@tonic-gate	SET_SIZE(stubs_common_code)
276*7c478bd9Sstevel@tonic-gate
277*7c478bd9Sstevel@tonic-gate! this is just a marker for the area of text that contains stubs
278*7c478bd9Sstevel@tonic-gate	.seg ".text"
279*7c478bd9Sstevel@tonic-gate	.global stubs_base
280*7c478bd9Sstevel@tonic-gatestubs_base:
281*7c478bd9Sstevel@tonic-gate	nop
282*7c478bd9Sstevel@tonic-gate
283*7c478bd9Sstevel@tonic-gate/*
284*7c478bd9Sstevel@tonic-gate * WARNING WARNING WARNING!!!!!!
285*7c478bd9Sstevel@tonic-gate *
286*7c478bd9Sstevel@tonic-gate * On the MODULE macro you MUST NOT use any spaces!!! They are
287*7c478bd9Sstevel@tonic-gate * significant to the preprocessor.  With ansi c there is a way around this
288*7c478bd9Sstevel@tonic-gate * but for some reason (yet to be investigated) ansi didn't work for other
289*7c478bd9Sstevel@tonic-gate * reasons!
290*7c478bd9Sstevel@tonic-gate *
291*7c478bd9Sstevel@tonic-gate * When zero is used as the return function, the system will call
292*7c478bd9Sstevel@tonic-gate * panic if the stub can't be resolved.
293*7c478bd9Sstevel@tonic-gate */
294*7c478bd9Sstevel@tonic-gate
295*7c478bd9Sstevel@tonic-gate/*
296*7c478bd9Sstevel@tonic-gate * Stubs for devfs. A non-unloadable module.
297*7c478bd9Sstevel@tonic-gate */
298*7c478bd9Sstevel@tonic-gate#ifndef DEVFS_MODULE
299*7c478bd9Sstevel@tonic-gate	MODULE(devfs,fs);
300*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(devfs, devfs_clean,		nomod_minus_one);
301*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(devfs, devfs_lookupname,		nomod_minus_one);
302*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(devfs, devfs_walk,		nomod_minus_one);
303*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(devfs, devfs_devpolicy,		nomod_minus_one);
304*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(devfs, devfs_reset_perm,		nomod_minus_one);
305*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(devfs, devfs_remdrv_cleanup,	nomod_minus_one);
306*7c478bd9Sstevel@tonic-gate	END_MODULE(devfs);
307*7c478bd9Sstevel@tonic-gate#endif
308*7c478bd9Sstevel@tonic-gate
309*7c478bd9Sstevel@tonic-gate/*
310*7c478bd9Sstevel@tonic-gate * Stubs for specfs. A non-unloadable module.
311*7c478bd9Sstevel@tonic-gate */
312*7c478bd9Sstevel@tonic-gate
313*7c478bd9Sstevel@tonic-gate#ifndef SPEC_MODULE
314*7c478bd9Sstevel@tonic-gate	MODULE(specfs,fs);
315*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, common_specvp,  	nomod_zero);
316*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, makectty,		nomod_zero);
317*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, makespecvp,      	nomod_zero);
318*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, smark,           	nomod_zero);
319*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_segmap,     	nomod_einval);
320*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, specfind,        	nomod_zero);
321*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, specvp,          	nomod_zero);
322*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, devi_stillreferenced,	nomod_zero);
323*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_getvnodeops,	nomod_zero);
324*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_char_map,		nomod_zero);
325*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, specvp_devfs,  		nomod_zero);
326*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_assoc_vp_with_devi,	nomod_void);
327*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_hold_devi_by_vp,	nomod_zero);
328*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_snode_walk,		nomod_void);
329*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_devi_open_count,	nomod_minus_one);
330*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_is_clone,		nomod_zero);
331*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(specfs, spec_is_selfclone,	nomod_zero);
332*7c478bd9Sstevel@tonic-gate	END_MODULE(specfs);
333*7c478bd9Sstevel@tonic-gate#endif
334*7c478bd9Sstevel@tonic-gate
335*7c478bd9Sstevel@tonic-gate
336*7c478bd9Sstevel@tonic-gate/*
337*7c478bd9Sstevel@tonic-gate * Stubs for sockfs. A non-unloadable module.
338*7c478bd9Sstevel@tonic-gate */
339*7c478bd9Sstevel@tonic-gate#ifndef SOCK_MODULE
340*7c478bd9Sstevel@tonic-gate	MODULE(sockfs, fs);
341*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, so_socket,  	nomod_zero);
342*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, so_socketpair,	nomod_zero);
343*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, bind,  		nomod_zero);
344*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, listen,  		nomod_zero);
345*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, accept,  		nomod_zero);
346*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, connect,  	nomod_zero);
347*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, shutdown,  	nomod_zero);
348*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, recv,  		nomod_zero);
349*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, recvfrom,  	nomod_zero);
350*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, recvmsg,  	nomod_zero);
351*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, send,  		nomod_zero);
352*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, sendmsg,  	nomod_zero);
353*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, sendto, 		nomod_zero);
354*7c478bd9Sstevel@tonic-gate#ifdef _SYSCALL32_IMPL
355*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, recv32,  		nomod_zero);
356*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, recvfrom32,  	nomod_zero);
357*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, send32,  		nomod_zero);
358*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, sendto32, 	nomod_zero);
359*7c478bd9Sstevel@tonic-gate#endif /* _SYSCALL32_IMPL */
360*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, getpeername,  	nomod_zero);
361*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, getsockname,  	nomod_zero);
362*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, getsockopt,  	nomod_zero);
363*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, setsockopt,  	nomod_zero);
364*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, sockconfig,  	nomod_zero);
365*7c478bd9Sstevel@tonic-gate	SCALL_NU_STUB(sockfs, nca_sendfilev,  	nomod_zero);
366*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sockfs, sock_getmsg,  	nomod_zero);
367*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sockfs, sock_putmsg,  	nomod_zero);
368*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sockfs, sosendfile64,  	nomod_zero);
369*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sockfs, sock_getfasync,  nomod_zero);
370*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sockfs, nl7c_sendfilev,  nomod_zero);
371*7c478bd9Sstevel@tonic-gate	END_MODULE(sockfs);
372*7c478bd9Sstevel@tonic-gate#endif
373*7c478bd9Sstevel@tonic-gate
374*7c478bd9Sstevel@tonic-gate/*
375*7c478bd9Sstevel@tonic-gate * IPsec stubs.
376*7c478bd9Sstevel@tonic-gate */
377*7c478bd9Sstevel@tonic-gate
378*7c478bd9Sstevel@tonic-gate#ifndef	IPSECAH_MODULE
379*7c478bd9Sstevel@tonic-gate	MODULE(ipsecah,drv);
380*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	ipsec_construct_inverse_acquire,	nomod_zero);
381*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	sadb_acquire,		nomod_zero);
382*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	sadb_ill_download,	nomod_zero);
383*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	ipsecah_algs_changed,	nomod_zero);
384*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	sadb_alg_update,	nomod_zero);
385*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	sadb_unlinkassoc,	nomod_zero);
386*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	sadb_insertassoc,	nomod_zero);
387*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	ipsecah_rl_strlog,	nomod_zero);
388*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	ipsecah_in_assocfailure,	nomod_zero);
389*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	sadb_set_lpkt,		nomod_zero);
390*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecah,	ipsecah_icmp_error,	nomod_zero);
391*7c478bd9Sstevel@tonic-gate	END_MODULE(ipsecah);
392*7c478bd9Sstevel@tonic-gate#endif
393*7c478bd9Sstevel@tonic-gate
394*7c478bd9Sstevel@tonic-gate#ifndef	IPSECESP_MODULE
395*7c478bd9Sstevel@tonic-gate	MODULE(ipsecesp,drv);
396*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecesp,	ipsecesp_fill_defs,	nomod_zero);
397*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecesp,	ipsecesp_algs_changed,	nomod_zero);
398*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecesp, ipsecesp_in_assocfailure,	nomod_zero);
399*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecesp, ipsecesp_init_funcs,	nomod_zero);
400*7c478bd9Sstevel@tonic-gate	WSTUB(ipsecesp,	ipsecesp_icmp_error,	nomod_zero);
401*7c478bd9Sstevel@tonic-gate	END_MODULE(ipsecesp);
402*7c478bd9Sstevel@tonic-gate#endif
403*7c478bd9Sstevel@tonic-gate
404*7c478bd9Sstevel@tonic-gate#ifndef KEYSOCK_MODULE
405*7c478bd9Sstevel@tonic-gate	MODULE(keysock,drv);
406*7c478bd9Sstevel@tonic-gate	WSTUB(keysock,	keysock_plumb_ipsec,	nomod_zero);
407*7c478bd9Sstevel@tonic-gate	WSTUB(keysock,	keysock_extended_reg,	nomod_zero);
408*7c478bd9Sstevel@tonic-gate	WSTUB(keysock,	keysock_next_seq,	nomod_zero);
409*7c478bd9Sstevel@tonic-gate	END_MODULE(keysock);
410*7c478bd9Sstevel@tonic-gate#endif
411*7c478bd9Sstevel@tonic-gate
412*7c478bd9Sstevel@tonic-gate#ifndef SPDSOCK_MODULE
413*7c478bd9Sstevel@tonic-gate	MODULE(spdsock,drv);
414*7c478bd9Sstevel@tonic-gate	WSTUB(spdsock,	spdsock_update_pending_algs,	nomod_zero);
415*7c478bd9Sstevel@tonic-gate	END_MODULE(spdsock);
416*7c478bd9Sstevel@tonic-gate#endif
417*7c478bd9Sstevel@tonic-gate
418*7c478bd9Sstevel@tonic-gate#ifndef UDP_MODULE
419*7c478bd9Sstevel@tonic-gate	MODULE(udp,drv);
420*7c478bd9Sstevel@tonic-gate	WSTUB(udp, udp_compute_checksum, nomod_zero);
421*7c478bd9Sstevel@tonic-gate	END_MODULE(udp);
422*7c478bd9Sstevel@tonic-gate#endif
423*7c478bd9Sstevel@tonic-gate
424*7c478bd9Sstevel@tonic-gate#ifndef NATTYMOD_MODULE
425*7c478bd9Sstevel@tonic-gate	MODULE(nattymod, strmod);
426*7c478bd9Sstevel@tonic-gate	WSTUB(nattymod, nattymod_clean_ipif, nomod_zero);
427*7c478bd9Sstevel@tonic-gate	END_MODULE(nattymod);
428*7c478bd9Sstevel@tonic-gate#endif
429*7c478bd9Sstevel@tonic-gate
430*7c478bd9Sstevel@tonic-gate/*
431*7c478bd9Sstevel@tonic-gate * Stubs for nfs common code.
432*7c478bd9Sstevel@tonic-gate * XXX nfs_getvnodeops should go away with removal of kludge in vnode.c
433*7c478bd9Sstevel@tonic-gate */
434*7c478bd9Sstevel@tonic-gate#ifndef NFS_MODULE
435*7c478bd9Sstevel@tonic-gate	MODULE(nfs,fs);
436*7c478bd9Sstevel@tonic-gate	WSTUB(nfs,	nfs_getvnodeops,	nomod_zero);
437*7c478bd9Sstevel@tonic-gate	WSTUB(nfs,	nfs_perror,		nomod_zero);
438*7c478bd9Sstevel@tonic-gate	WSTUB(nfs,	nfs_cmn_err,		nomod_zero);
439*7c478bd9Sstevel@tonic-gate	WSTUB(nfs,	clcleanup_zone,		nomod_zero);
440*7c478bd9Sstevel@tonic-gate	WSTUB(nfs,	clcleanup4_zone,	nomod_zero);
441*7c478bd9Sstevel@tonic-gate	END_MODULE(nfs);
442*7c478bd9Sstevel@tonic-gate#endif
443*7c478bd9Sstevel@tonic-gate
444*7c478bd9Sstevel@tonic-gate/*
445*7c478bd9Sstevel@tonic-gate * Stubs for nfs_dlboot (diskless booting).
446*7c478bd9Sstevel@tonic-gate */
447*7c478bd9Sstevel@tonic-gate#ifndef NFS_DLBOOT_MODULE
448*7c478bd9Sstevel@tonic-gate	MODULE(nfs_dlboot,misc);
449*7c478bd9Sstevel@tonic-gate	STUB(nfs_dlboot,	mount_root,	nomod_minus_one);
450*7c478bd9Sstevel@tonic-gate	STUB(nfs_dlboot,        dhcpinit,       nomod_minus_one);
451*7c478bd9Sstevel@tonic-gate	END_MODULE(nfs_dlboot);
452*7c478bd9Sstevel@tonic-gate#endif
453*7c478bd9Sstevel@tonic-gate
454*7c478bd9Sstevel@tonic-gate/*
455*7c478bd9Sstevel@tonic-gate * Stubs for nfs server-only code.
456*7c478bd9Sstevel@tonic-gate */
457*7c478bd9Sstevel@tonic-gate#ifndef NFSSRV_MODULE
458*7c478bd9Sstevel@tonic-gate	MODULE(nfssrv,misc);
459*7c478bd9Sstevel@tonic-gate	STUB(nfssrv,		lm_nfs3_fhtovp,	nomod_minus_one);
460*7c478bd9Sstevel@tonic-gate	STUB(nfssrv,		lm_fhtovp,	nomod_minus_one);
461*7c478bd9Sstevel@tonic-gate	STUB(nfssrv,		exportfs,	nomod_minus_one);
462*7c478bd9Sstevel@tonic-gate	STUB(nfssrv,		nfs_getfh,	nomod_minus_one);
463*7c478bd9Sstevel@tonic-gate	STUB(nfssrv,		nfsl_flush,	nomod_minus_one);
464*7c478bd9Sstevel@tonic-gate	STUB(nfssrv,		rfs4_check_delegated, nomod_zero) ;
465*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(nfssrv,	rdma_start,	nomod_zero);
466*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(nfssrv,	nfs_svc,	nomod_zero);
467*7c478bd9Sstevel@tonic-gate	END_MODULE(nfssrv);
468*7c478bd9Sstevel@tonic-gate#endif
469*7c478bd9Sstevel@tonic-gate
470*7c478bd9Sstevel@tonic-gate/*
471*7c478bd9Sstevel@tonic-gate * Stubs for kernel lock manager.
472*7c478bd9Sstevel@tonic-gate */
473*7c478bd9Sstevel@tonic-gate#ifndef KLM_MODULE
474*7c478bd9Sstevel@tonic-gate	MODULE(klmmod,misc);
475*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_svc,		nomod_zero);
476*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_shutdown,	nomod_zero);
477*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_unexport,	nomod_zero);
478*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_cprresume,	nomod_zero);
479*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_cprsuspend,	nomod_zero);
480*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_safelock, nomod_zero);
481*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_safemap, nomod_zero);
482*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_has_sleep, nomod_zero);
483*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_free_config, nomod_zero);
484*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_vp_active, nomod_zero);
485*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_get_sysid, nomod_zero);
486*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_rel_sysid, nomod_zero);
487*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_alloc_sysidt, nomod_minus_one);
488*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_free_sysidt, nomod_zero);
489*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmmod, lm_sysidt, nomod_minus_one);
490*7c478bd9Sstevel@tonic-gate	END_MODULE(klmmod);
491*7c478bd9Sstevel@tonic-gate#endif
492*7c478bd9Sstevel@tonic-gate
493*7c478bd9Sstevel@tonic-gate#ifndef KLMOPS_MODULE
494*7c478bd9Sstevel@tonic-gate	MODULE(klmops,misc);
495*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm_frlock,	nomod_zero);
496*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm4_frlock,	nomod_zero);
497*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm_shrlock,	nomod_zero);
498*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm4_shrlock,	nomod_zero);
499*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm_nlm_dispatch,	nomod_zero);
500*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm_nlm4_dispatch,	nomod_zero);
501*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm_nlm_reclaim,	nomod_zero);
502*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm_nlm4_reclaim,	nomod_zero);
503*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(klmops, lm_register_lock_locally, nomod_zero);
504*7c478bd9Sstevel@tonic-gate	END_MODULE(klmops);
505*7c478bd9Sstevel@tonic-gate#endif
506*7c478bd9Sstevel@tonic-gate
507*7c478bd9Sstevel@tonic-gate/*
508*7c478bd9Sstevel@tonic-gate * Stubs for kernel TLI module
509*7c478bd9Sstevel@tonic-gate *   XXX currently we never allow this to unload
510*7c478bd9Sstevel@tonic-gate */
511*7c478bd9Sstevel@tonic-gate#ifndef TLI_MODULE
512*7c478bd9Sstevel@tonic-gate	MODULE(tlimod,misc);
513*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kopen,		nomod_minus_one);
514*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kunbind,  	nomod_zero);
515*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kadvise,  	nomod_zero);
516*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_krcvudata,  	nomod_zero);
517*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_ksndudata,  	nomod_zero);
518*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kalloc,  	nomod_zero);
519*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kbind,  	nomod_zero);
520*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kclose,  	nomod_zero);
521*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kspoll,  	nomod_zero);
522*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tlimod, t_kfree,  	nomod_zero);
523*7c478bd9Sstevel@tonic-gate	END_MODULE(tlimod);
524*7c478bd9Sstevel@tonic-gate#endif
525*7c478bd9Sstevel@tonic-gate
526*7c478bd9Sstevel@tonic-gate/*
527*7c478bd9Sstevel@tonic-gate * Stubs for kernel RPC module
528*7c478bd9Sstevel@tonic-gate *   XXX currently we never allow this to unload
529*7c478bd9Sstevel@tonic-gate */
530*7c478bd9Sstevel@tonic-gate#ifndef RPC_MODULE
531*7c478bd9Sstevel@tonic-gate	MODULE(rpcmod,strmod);
532*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcmod, clnt_tli_kcreate,	nomod_minus_one);
533*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcmod, svc_tli_kcreate,		nomod_minus_one);
534*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcmod, bindresvport,		nomod_minus_one);
535*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcmod, rdma_register_mod,	nomod_minus_one);
536*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcmod, rdma_unregister_mod,	nomod_minus_one);
537*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcmod, svc_queuereq,		nomod_minus_one);
538*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcmod, clist_add,		nomod_minus_one);
539*7c478bd9Sstevel@tonic-gate	END_MODULE(rpcmod);
540*7c478bd9Sstevel@tonic-gate#endif
541*7c478bd9Sstevel@tonic-gate
542*7c478bd9Sstevel@tonic-gate/*
543*7c478bd9Sstevel@tonic-gate * Stubs for des
544*7c478bd9Sstevel@tonic-gate */
545*7c478bd9Sstevel@tonic-gate#ifndef DES_MODULE
546*7c478bd9Sstevel@tonic-gate	MODULE(des,misc);
547*7c478bd9Sstevel@tonic-gate	STUB(des, cbc_crypt, 	 	nomod_zero);
548*7c478bd9Sstevel@tonic-gate	STUB(des, ecb_crypt, 		nomod_zero);
549*7c478bd9Sstevel@tonic-gate	STUB(des, _des_crypt,		nomod_zero);
550*7c478bd9Sstevel@tonic-gate	END_MODULE(des);
551*7c478bd9Sstevel@tonic-gate#endif
552*7c478bd9Sstevel@tonic-gate
553*7c478bd9Sstevel@tonic-gate/*
554*7c478bd9Sstevel@tonic-gate * Stubs for procfs. A non-unloadable module.
555*7c478bd9Sstevel@tonic-gate */
556*7c478bd9Sstevel@tonic-gate#ifndef PROC_MODULE
557*7c478bd9Sstevel@tonic-gate	MODULE(procfs,fs);
558*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prfree,		nomod_zero);
559*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prexit,		nomod_zero);
560*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prlwpfree,	nomod_zero);
561*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prlwpexit,	nomod_zero);
562*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prinvalidate,	nomod_zero);
563*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prnsegs,		nomod_zero);
564*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetcred,	nomod_zero);
565*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetpriv,	nomod_zero);
566*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetprivsize,	nomod_zero);
567*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetstatus,	nomod_zero);
568*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetlwpstatus,	nomod_zero);
569*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetpsinfo,	nomod_zero);
570*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetlwpsinfo,	nomod_zero);
571*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, oprgetstatus,	nomod_zero);
572*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, oprgetpsinfo,	nomod_zero);
573*7c478bd9Sstevel@tonic-gate#ifdef _SYSCALL32_IMPL
574*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetstatus32,	nomod_zero);
575*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetlwpstatus32, nomod_zero);
576*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetpsinfo32,	nomod_zero);
577*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prgetlwpsinfo32,	nomod_zero);
578*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, oprgetstatus32,	nomod_zero);
579*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, oprgetpsinfo32,	nomod_zero);
580*7c478bd9Sstevel@tonic-gate#endif	/* _SYSCALL32_IMPL */
581*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prnotify,	nomod_zero);
582*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prexecstart,	nomod_zero);
583*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prexecend,	nomod_zero);
584*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prrelvm,		nomod_zero);
585*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, prbarrier,	nomod_zero);
586*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, estimate_msacct,	nomod_zero);
587*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, pr_getprot,	nomod_zero);
588*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, pr_getprot_done,	nomod_zero);
589*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, pr_getsegsize,	nomod_zero);
590*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, pr_isobject,	nomod_zero);
591*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, pr_isself,	nomod_zero);
592*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, pr_allstopped,	nomod_zero);
593*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(procfs, pr_free_watched_pages, nomod_zero);
594*7c478bd9Sstevel@tonic-gate	END_MODULE(procfs);
595*7c478bd9Sstevel@tonic-gate#endif
596*7c478bd9Sstevel@tonic-gate
597*7c478bd9Sstevel@tonic-gate/*
598*7c478bd9Sstevel@tonic-gate * Stubs for fifofs
599*7c478bd9Sstevel@tonic-gate */
600*7c478bd9Sstevel@tonic-gate#ifndef FIFO_MODULE
601*7c478bd9Sstevel@tonic-gate	MODULE(fifofs,fs);
602*7c478bd9Sstevel@tonic-gate	STUB(fifofs, fifovp,      	0);
603*7c478bd9Sstevel@tonic-gate	STUB(fifofs, fifo_getinfo,	0);
604*7c478bd9Sstevel@tonic-gate	STUB(fifofs, fifo_vfastoff,	0);
605*7c478bd9Sstevel@tonic-gate	END_MODULE(fifofs);
606*7c478bd9Sstevel@tonic-gate#endif
607*7c478bd9Sstevel@tonic-gate
608*7c478bd9Sstevel@tonic-gate/*
609*7c478bd9Sstevel@tonic-gate * Stubs for ufs
610*7c478bd9Sstevel@tonic-gate *
611*7c478bd9Sstevel@tonic-gate * This is needed to support the old quotactl system call.
612*7c478bd9Sstevel@tonic-gate * When the old sysent stuff goes away, this will need to be revisited.
613*7c478bd9Sstevel@tonic-gate */
614*7c478bd9Sstevel@tonic-gate#ifndef UFS_MODULE
615*7c478bd9Sstevel@tonic-gate	MODULE(ufs,fs);
616*7c478bd9Sstevel@tonic-gate	STUB(ufs, quotactl, nomod_minus_one);
617*7c478bd9Sstevel@tonic-gate	STUB(ufs, ufs_remountroot, 0);
618*7c478bd9Sstevel@tonic-gate	END_MODULE(ufs);
619*7c478bd9Sstevel@tonic-gate#endif
620*7c478bd9Sstevel@tonic-gate
621*7c478bd9Sstevel@tonic-gate/*
622*7c478bd9Sstevel@tonic-gate * Stubs for namefs
623*7c478bd9Sstevel@tonic-gate */
624*7c478bd9Sstevel@tonic-gate#ifndef NAMEFS_MODULE
625*7c478bd9Sstevel@tonic-gate	MODULE(namefs,fs);
626*7c478bd9Sstevel@tonic-gate	STUB(namefs, nm_unmountall, 	0);
627*7c478bd9Sstevel@tonic-gate	END_MODULE(namefs);
628*7c478bd9Sstevel@tonic-gate#endif
629*7c478bd9Sstevel@tonic-gate
630*7c478bd9Sstevel@tonic-gate/*
631*7c478bd9Sstevel@tonic-gate * Stubs for ts_dptbl
632*7c478bd9Sstevel@tonic-gate */
633*7c478bd9Sstevel@tonic-gate#ifndef TS_DPTBL_MODULE
634*7c478bd9Sstevel@tonic-gate	MODULE(TS_DPTBL,sched);
635*7c478bd9Sstevel@tonic-gate	STUB(TS_DPTBL, ts_getdptbl,		0);
636*7c478bd9Sstevel@tonic-gate	STUB(TS_DPTBL, ts_getkmdpris,		0);
637*7c478bd9Sstevel@tonic-gate	STUB(TS_DPTBL, ts_getmaxumdpri,	0);
638*7c478bd9Sstevel@tonic-gate	END_MODULE(TS_DPTBL);
639*7c478bd9Sstevel@tonic-gate#endif
640*7c478bd9Sstevel@tonic-gate
641*7c478bd9Sstevel@tonic-gate/*
642*7c478bd9Sstevel@tonic-gate * Stubs for rt_dptbl
643*7c478bd9Sstevel@tonic-gate */
644*7c478bd9Sstevel@tonic-gate#ifndef RT_DPTBL_MODULE
645*7c478bd9Sstevel@tonic-gate	MODULE(RT_DPTBL,sched);
646*7c478bd9Sstevel@tonic-gate	STUB(RT_DPTBL, rt_getdptbl,		0);
647*7c478bd9Sstevel@tonic-gate	END_MODULE(RT_DPTBL);
648*7c478bd9Sstevel@tonic-gate#endif
649*7c478bd9Sstevel@tonic-gate
650*7c478bd9Sstevel@tonic-gate/*
651*7c478bd9Sstevel@tonic-gate * Stubs for ia_dptbl
652*7c478bd9Sstevel@tonic-gate */
653*7c478bd9Sstevel@tonic-gate#ifndef IA_DPTBL_MODULE
654*7c478bd9Sstevel@tonic-gate	MODULE(IA_DPTBL,sched);
655*7c478bd9Sstevel@tonic-gate	STUB(IA_DPTBL, ia_getdptbl,		0);
656*7c478bd9Sstevel@tonic-gate	STUB(IA_DPTBL, ia_getkmdpris,		0);
657*7c478bd9Sstevel@tonic-gate	STUB(IA_DPTBL, ia_getmaxumdpri,	0);
658*7c478bd9Sstevel@tonic-gate	END_MODULE(IA_DPTBL);
659*7c478bd9Sstevel@tonic-gate#endif
660*7c478bd9Sstevel@tonic-gate
661*7c478bd9Sstevel@tonic-gate/*
662*7c478bd9Sstevel@tonic-gate * Stubs for FSS scheduler
663*7c478bd9Sstevel@tonic-gate */
664*7c478bd9Sstevel@tonic-gate#ifndef	FSS_MODULE
665*7c478bd9Sstevel@tonic-gate	MODULE(FSS,sched);
666*7c478bd9Sstevel@tonic-gate	WSTUB(FSS, fss_allocbuf,		nomod_zero);
667*7c478bd9Sstevel@tonic-gate	WSTUB(FSS, fss_freebuf,			nomod_zero);
668*7c478bd9Sstevel@tonic-gate	WSTUB(FSS, fss_changeproj,		nomod_zero);
669*7c478bd9Sstevel@tonic-gate	WSTUB(FSS, fss_changepset,		nomod_zero);
670*7c478bd9Sstevel@tonic-gate	END_MODULE(FSS);
671*7c478bd9Sstevel@tonic-gate#endif
672*7c478bd9Sstevel@tonic-gate
673*7c478bd9Sstevel@tonic-gate/*
674*7c478bd9Sstevel@tonic-gate * Stubs for fx_dptbl
675*7c478bd9Sstevel@tonic-gate */
676*7c478bd9Sstevel@tonic-gate#ifndef FX_DPTBL_MODULE
677*7c478bd9Sstevel@tonic-gate	MODULE(FX_DPTBL,sched);
678*7c478bd9Sstevel@tonic-gate	STUB(FX_DPTBL, fx_getdptbl,		0);
679*7c478bd9Sstevel@tonic-gate	STUB(FX_DPTBL, fx_getmaxumdpri,		0);
680*7c478bd9Sstevel@tonic-gate	END_MODULE(FX_DPTBL);
681*7c478bd9Sstevel@tonic-gate#endif
682*7c478bd9Sstevel@tonic-gate
683*7c478bd9Sstevel@tonic-gate/*
684*7c478bd9Sstevel@tonic-gate * Stubs for kb (only needed for 'win')
685*7c478bd9Sstevel@tonic-gate */
686*7c478bd9Sstevel@tonic-gate#ifndef KB_MODULE
687*7c478bd9Sstevel@tonic-gate	MODULE(kb,strmod);
688*7c478bd9Sstevel@tonic-gate	STUB(kb, strsetwithdecimal,	0);
689*7c478bd9Sstevel@tonic-gate	END_MODULE(kb);
690*7c478bd9Sstevel@tonic-gate#endif
691*7c478bd9Sstevel@tonic-gate
692*7c478bd9Sstevel@tonic-gate/*
693*7c478bd9Sstevel@tonic-gate * Stubs for swapgeneric
694*7c478bd9Sstevel@tonic-gate */
695*7c478bd9Sstevel@tonic-gate#ifndef SWAPGENERIC_MODULE
696*7c478bd9Sstevel@tonic-gate	MODULE(swapgeneric,misc);
697*7c478bd9Sstevel@tonic-gate	STUB(swapgeneric, rootconf,     0);
698*7c478bd9Sstevel@tonic-gate	STUB(swapgeneric, svm_rootconf, 0);
699*7c478bd9Sstevel@tonic-gate	STUB(swapgeneric, getfstype,    0);
700*7c478bd9Sstevel@tonic-gate	STUB(swapgeneric, getrootdev,   0);
701*7c478bd9Sstevel@tonic-gate	STUB(swapgeneric, getfsname,    0);
702*7c478bd9Sstevel@tonic-gate	STUB(swapgeneric, loadrootmodules, 0);
703*7c478bd9Sstevel@tonic-gate	END_MODULE(swapgeneric);
704*7c478bd9Sstevel@tonic-gate#endif
705*7c478bd9Sstevel@tonic-gate
706*7c478bd9Sstevel@tonic-gate/*
707*7c478bd9Sstevel@tonic-gate * Stubs for bootdev
708*7c478bd9Sstevel@tonic-gate */
709*7c478bd9Sstevel@tonic-gate#ifndef BOOTDEV_MODULE
710*7c478bd9Sstevel@tonic-gate	MODULE(bootdev,misc);
711*7c478bd9Sstevel@tonic-gate	STUB(bootdev, i_devname_to_promname, 0);
712*7c478bd9Sstevel@tonic-gate	STUB(bootdev, i_promname_to_devname, 0);
713*7c478bd9Sstevel@tonic-gate	STUB(bootdev, i_convert_boot_device_name, 0);
714*7c478bd9Sstevel@tonic-gate	END_MODULE(bootdev);
715*7c478bd9Sstevel@tonic-gate#endif
716*7c478bd9Sstevel@tonic-gate
717*7c478bd9Sstevel@tonic-gate/*
718*7c478bd9Sstevel@tonic-gate * stubs for strplumb...
719*7c478bd9Sstevel@tonic-gate */
720*7c478bd9Sstevel@tonic-gate#ifndef STRPLUMB_MODULE
721*7c478bd9Sstevel@tonic-gate	MODULE(strplumb,misc);
722*7c478bd9Sstevel@tonic-gate	STUB(strplumb, strplumb,     0);
723*7c478bd9Sstevel@tonic-gate	STUB(strplumb, strplumb_load, 0);
724*7c478bd9Sstevel@tonic-gate	END_MODULE(strplumb);
725*7c478bd9Sstevel@tonic-gate#endif
726*7c478bd9Sstevel@tonic-gate
727*7c478bd9Sstevel@tonic-gate/*
728*7c478bd9Sstevel@tonic-gate * Stubs for console configuration module
729*7c478bd9Sstevel@tonic-gate */
730*7c478bd9Sstevel@tonic-gate#ifndef CONSCONFIG_MODULE
731*7c478bd9Sstevel@tonic-gate	MODULE(consconfig,misc);
732*7c478bd9Sstevel@tonic-gate	STUB(consconfig, consconfig,	0);
733*7c478bd9Sstevel@tonic-gate	STUB(consconfig, consconfig_get_usb_kb_path,	0);
734*7c478bd9Sstevel@tonic-gate	STUB(consconfig, consconfig_get_usb_ms_path,	0);
735*7c478bd9Sstevel@tonic-gate	END_MODULE(consconfig);
736*7c478bd9Sstevel@tonic-gate#endif
737*7c478bd9Sstevel@tonic-gate
738*7c478bd9Sstevel@tonic-gate/*
739*7c478bd9Sstevel@tonic-gate * Stubs for zs (uart) module
740*7c478bd9Sstevel@tonic-gate */
741*7c478bd9Sstevel@tonic-gate#ifndef ZS_MODULE
742*7c478bd9Sstevel@tonic-gate	MODULE(zs,drv);
743*7c478bd9Sstevel@tonic-gate	STUB(zs, zsgetspeed,		0);
744*7c478bd9Sstevel@tonic-gate	END_MODULE(zs);
745*7c478bd9Sstevel@tonic-gate#endif
746*7c478bd9Sstevel@tonic-gate
747*7c478bd9Sstevel@tonic-gate/*
748*7c478bd9Sstevel@tonic-gate * Stubs for accounting.
749*7c478bd9Sstevel@tonic-gate */
750*7c478bd9Sstevel@tonic-gate#ifndef SYSACCT_MODULE
751*7c478bd9Sstevel@tonic-gate	MODULE(sysacct,sys);
752*7c478bd9Sstevel@tonic-gate	WSTUB(sysacct, acct,  		nomod_zero);
753*7c478bd9Sstevel@tonic-gate	WSTUB(sysacct, acct_fs_in_use,	nomod_zero);
754*7c478bd9Sstevel@tonic-gate	END_MODULE(sysacct);
755*7c478bd9Sstevel@tonic-gate#endif
756*7c478bd9Sstevel@tonic-gate
757*7c478bd9Sstevel@tonic-gate/*
758*7c478bd9Sstevel@tonic-gate * Stubs for semaphore routines. sem.c
759*7c478bd9Sstevel@tonic-gate */
760*7c478bd9Sstevel@tonic-gate#ifndef SEMSYS_MODULE
761*7c478bd9Sstevel@tonic-gate	MODULE(semsys,sys);
762*7c478bd9Sstevel@tonic-gate	WSTUB(semsys, semexit,		nomod_zero);
763*7c478bd9Sstevel@tonic-gate	END_MODULE(semsys);
764*7c478bd9Sstevel@tonic-gate#endif
765*7c478bd9Sstevel@tonic-gate
766*7c478bd9Sstevel@tonic-gate/*
767*7c478bd9Sstevel@tonic-gate * Stubs for shmem routines. shm.c
768*7c478bd9Sstevel@tonic-gate */
769*7c478bd9Sstevel@tonic-gate#ifndef SHMSYS_MODULE
770*7c478bd9Sstevel@tonic-gate	MODULE(shmsys,sys);
771*7c478bd9Sstevel@tonic-gate	WSTUB(shmsys, shmexit,		nomod_zero);
772*7c478bd9Sstevel@tonic-gate	WSTUB(shmsys, shmfork,		nomod_zero);
773*7c478bd9Sstevel@tonic-gate	WSTUB(shmsys, shmgetid,		nomod_zero);
774*7c478bd9Sstevel@tonic-gate	END_MODULE(shmsys);
775*7c478bd9Sstevel@tonic-gate#endif
776*7c478bd9Sstevel@tonic-gate
777*7c478bd9Sstevel@tonic-gate/*
778*7c478bd9Sstevel@tonic-gate * Stubs for doors
779*7c478bd9Sstevel@tonic-gate */
780*7c478bd9Sstevel@tonic-gate#ifndef DOORFS_MODULE
781*7c478bd9Sstevel@tonic-gate	MODULE(doorfs,sys);
782*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_slam,			nomod_zero);
783*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_exit,			nomod_zero);
784*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_revoke_all,			nomod_zero);
785*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_fork,			nomod_zero);
786*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(doorfs, door_upcall,		nomod_einval);
787*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(doorfs, door_ki_create,		nomod_einval);
788*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(doorfs, door_ki_open,		nomod_einval);
789*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(doorfs, door_ki_lookup,		nomod_zero);
790*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_ki_upcall,			nomod_einval);
791*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_ki_hold,			nomod_zero);
792*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_ki_rele,			nomod_zero);
793*7c478bd9Sstevel@tonic-gate	WSTUB(doorfs, door_ki_info,			nomod_einval);
794*7c478bd9Sstevel@tonic-gate	END_MODULE(doorfs);
795*7c478bd9Sstevel@tonic-gate#endif
796*7c478bd9Sstevel@tonic-gate
797*7c478bd9Sstevel@tonic-gate/*
798*7c478bd9Sstevel@tonic-gate * Stubs for dma routines. dmaga.c
799*7c478bd9Sstevel@tonic-gate * (These are only needed for cross-checks, not autoloading)
800*7c478bd9Sstevel@tonic-gate */
801*7c478bd9Sstevel@tonic-gate#ifndef DMA_MODULE
802*7c478bd9Sstevel@tonic-gate	MODULE(dma,drv);
803*7c478bd9Sstevel@tonic-gate	WSTUB(dma, dma_alloc,		nomod_zero); /* (DMAGA *)0 */
804*7c478bd9Sstevel@tonic-gate	WSTUB(dma, dma_free,		nomod_zero); /* (DMAGA *)0 */
805*7c478bd9Sstevel@tonic-gate	END_MODULE(dma);
806*7c478bd9Sstevel@tonic-gate#endif
807*7c478bd9Sstevel@tonic-gate
808*7c478bd9Sstevel@tonic-gate/*
809*7c478bd9Sstevel@tonic-gate * Stubs for auditing.
810*7c478bd9Sstevel@tonic-gate */
811*7c478bd9Sstevel@tonic-gate#ifndef C2AUDIT_MODULE
812*7c478bd9Sstevel@tonic-gate	MODULE(c2audit,sys);
813*7c478bd9Sstevel@tonic-gate	STUB(c2audit,  audit_init,			nomod_zero);
814*7c478bd9Sstevel@tonic-gate	STUB(c2audit,  _auditsys,			nomod_zero);
815*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_free,		nomod_zero);
816*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_start, 		nomod_zero);
817*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_finish,		nomod_zero);
818*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_newproc,		nomod_zero);
819*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_pfree,		nomod_zero);
820*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_thread_free,	nomod_zero);
821*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_thread_create,	nomod_zero);
822*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_falloc,		nomod_zero);
823*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_unfalloc,		nomod_zero);
824*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_closef,		nomod_zero);
825*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_copen,		nomod_zero);
826*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_core_start,	nomod_zero);
827*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_core_finish,	nomod_zero);
828*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_stropen,		nomod_zero);
829*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_strclose,		nomod_zero);
830*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_strioctl,		nomod_zero);
831*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_strputmsg,	nomod_zero);
832*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_c2_revoke,	nomod_zero);
833*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_savepath,		nomod_zero);
834*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_anchorpath,	nomod_zero);
835*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_addcomponent,	nomod_zero);
836*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_exit,		nomod_zero);
837*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_exec,		nomod_zero);
838*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_symlink,		nomod_zero);
839*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_symlink_create,	nomod_zero);
840*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_vncreate_start,	nomod_zero);
841*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_vncreate_finish,	nomod_zero);
842*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_enterprom,	nomod_zero);
843*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_exitprom,		nomod_zero);
844*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_chdirec,		nomod_zero);
845*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_getf,		nomod_zero);
846*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_setf,		nomod_zero);
847*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_sock,		nomod_zero);
848*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_strgetmsg,	nomod_zero);
849*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_ipc,		nomod_zero);
850*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_ipcget,		nomod_zero);
851*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_lookupname,	nomod_zero);
852*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_pathcomp,		nomod_zero);
853*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_fdsend,		nomod_zero);
854*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_fdrecv,		nomod_zero);
855*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_priv,		nomod_zero);
856*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_setppriv,		nomod_zero);
857*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_devpolicy,	nomod_zero);
858*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_setfsat_path,	nomod_zero);
859*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_cryptoadm,	nomod_zero);
860*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(c2audit, audit_update_context,	nomod_zero);
861*7c478bd9Sstevel@tonic-gate	END_MODULE(c2audit);
862*7c478bd9Sstevel@tonic-gate#endif
863*7c478bd9Sstevel@tonic-gate
864*7c478bd9Sstevel@tonic-gate/*
865*7c478bd9Sstevel@tonic-gate * Stubs for kernel rpc security service module
866*7c478bd9Sstevel@tonic-gate */
867*7c478bd9Sstevel@tonic-gate#ifndef RPCSEC_MODULE
868*7c478bd9Sstevel@tonic-gate	MODULE(rpcsec,misc);
869*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec, sec_clnt_revoke,		nomod_zero);
870*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec, authkern_create,		nomod_zero);
871*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec, sec_svc_msg,		nomod_zero);
872*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec, sec_svc_control,		nomod_zero);
873*7c478bd9Sstevel@tonic-gate	END_MODULE(rpcsec);
874*7c478bd9Sstevel@tonic-gate#endif
875*7c478bd9Sstevel@tonic-gate
876*7c478bd9Sstevel@tonic-gate/*
877*7c478bd9Sstevel@tonic-gate * Stubs for rpc RPCSEC_GSS security service module
878*7c478bd9Sstevel@tonic-gate */
879*7c478bd9Sstevel@tonic-gate#ifndef RPCSEC_GSS_MODULE
880*7c478bd9Sstevel@tonic-gate	MODULE(rpcsec_gss,misc);
881*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, __svcrpcsec_gss,		nomod_zero);
882*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_getcred,		nomod_zero);
883*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_callback,	nomod_zero);
884*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secget,		nomod_zero);
885*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secfree,		nomod_zero);
886*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_seccreate,		nomod_zero);
887*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_defaults,	nomod_zero);
888*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_revauth,		nomod_zero);
889*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secpurge,		nomod_zero);
890*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_cleanup,		nomod_zero);
891*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_get_versions,	nomod_zero);
892*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_max_data_length,	nomod_zero);
893*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_svc_max_data_length,	nomod_zero);
894*7c478bd9Sstevel@tonic-gate	END_MODULE(rpcsec_gss);
895*7c478bd9Sstevel@tonic-gate#endif
896*7c478bd9Sstevel@tonic-gate
897*7c478bd9Sstevel@tonic-gate#ifndef SAD_MODULE
898*7c478bd9Sstevel@tonic-gate	MODULE(sad,drv);
899*7c478bd9Sstevel@tonic-gate	STUB(sad, sadinit, 0);
900*7c478bd9Sstevel@tonic-gate	STUB(sad, ap_free, 0);
901*7c478bd9Sstevel@tonic-gate	END_MODULE(sad);
902*7c478bd9Sstevel@tonic-gate#endif
903*7c478bd9Sstevel@tonic-gate
904*7c478bd9Sstevel@tonic-gate#ifndef WC_MODULE
905*7c478bd9Sstevel@tonic-gate	MODULE(wc,drv);
906*7c478bd9Sstevel@tonic-gate	STUB(wc, wcvnget, 0);
907*7c478bd9Sstevel@tonic-gate	STUB(wc, wcvnrele, 0);
908*7c478bd9Sstevel@tonic-gate	END_MODULE(wc);
909*7c478bd9Sstevel@tonic-gate#endif
910*7c478bd9Sstevel@tonic-gate
911*7c478bd9Sstevel@tonic-gate#ifndef IWSCN_MODULE
912*7c478bd9Sstevel@tonic-gate	MODULE(iwscn,drv);
913*7c478bd9Sstevel@tonic-gate	STUB(iwscn, srpop, 0);
914*7c478bd9Sstevel@tonic-gate	END_MODULE(iwscn);
915*7c478bd9Sstevel@tonic-gate#endif
916*7c478bd9Sstevel@tonic-gate
917*7c478bd9Sstevel@tonic-gate/*
918*7c478bd9Sstevel@tonic-gate * Stubs for checkpoint-resume module
919*7c478bd9Sstevel@tonic-gate */
920*7c478bd9Sstevel@tonic-gate#ifndef CPR_MODULE
921*7c478bd9Sstevel@tonic-gate        MODULE(cpr,misc);
922*7c478bd9Sstevel@tonic-gate        STUB(cpr, cpr, 0);
923*7c478bd9Sstevel@tonic-gate        END_MODULE(cpr);
924*7c478bd9Sstevel@tonic-gate#endif
925*7c478bd9Sstevel@tonic-gate
926*7c478bd9Sstevel@tonic-gate/*
927*7c478bd9Sstevel@tonic-gate * Stubs for VIS module
928*7c478bd9Sstevel@tonic-gate */
929*7c478bd9Sstevel@tonic-gate#ifndef VIS_MODULE
930*7c478bd9Sstevel@tonic-gate        MODULE(vis,misc);
931*7c478bd9Sstevel@tonic-gate        STUB(vis, vis_fpu_simulator, 0);
932*7c478bd9Sstevel@tonic-gate        STUB(vis, vis_fldst, 0);
933*7c478bd9Sstevel@tonic-gate        STUB(vis, vis_rdgsr, 0);
934*7c478bd9Sstevel@tonic-gate        STUB(vis, vis_wrgsr, 0);
935*7c478bd9Sstevel@tonic-gate        END_MODULE(vis);
936*7c478bd9Sstevel@tonic-gate#endif
937*7c478bd9Sstevel@tonic-gate
938*7c478bd9Sstevel@tonic-gate/*
939*7c478bd9Sstevel@tonic-gate * Stubs for kernel probes (tnf module).  Not unloadable.
940*7c478bd9Sstevel@tonic-gate */
941*7c478bd9Sstevel@tonic-gate#ifndef TNF_MODULE
942*7c478bd9Sstevel@tonic-gate	MODULE(tnf,drv);
943*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tnf, tnf_ref32_1,	nomod_zero);
944*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tnf, tnf_string_1,	nomod_zero);
945*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tnf, tnf_opaque_array_1,	nomod_zero);
946*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tnf, tnf_opaque32_array_1, nomod_zero);
947*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tnf, tnf_struct_tag_1,	nomod_zero);
948*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(tnf, tnf_allocate,	nomod_zero);
949*7c478bd9Sstevel@tonic-gate	END_MODULE(tnf);
950*7c478bd9Sstevel@tonic-gate#endif
951*7c478bd9Sstevel@tonic-gate
952*7c478bd9Sstevel@tonic-gate/*
953*7c478bd9Sstevel@tonic-gate * Clustering: stubs for bootstrapping.
954*7c478bd9Sstevel@tonic-gate */
955*7c478bd9Sstevel@tonic-gate#ifndef CL_BOOTSTRAP
956*7c478bd9Sstevel@tonic-gate	MODULE(cl_bootstrap,misc);
957*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_modload, nomod_minus_one);
958*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_loadrootmodules, nomod_zero);
959*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_rootconf, nomod_zero);
960*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_mountroot, nomod_zero);
961*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_init, nomod_zero);
962*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_get_nodeid, nomod_zero);
963*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_maximum_nodeid, nomod_zero);
964*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(cl_bootstrap, cluster, nomod_zero);
965*7c478bd9Sstevel@tonic-gate	END_MODULE(cl_bootstrap);
966*7c478bd9Sstevel@tonic-gate#endif
967*7c478bd9Sstevel@tonic-gate
968*7c478bd9Sstevel@tonic-gate/*
969*7c478bd9Sstevel@tonic-gate * Clustering: stubs for cluster infrastructure.
970*7c478bd9Sstevel@tonic-gate */
971*7c478bd9Sstevel@tonic-gate#ifndef CL_COMM_MODULE
972*7c478bd9Sstevel@tonic-gate	MODULE(cl_comm,misc);
973*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(cl_comm, cladmin, nomod_minus_one);
974*7c478bd9Sstevel@tonic-gate	END_MODULE(cl_comm);
975*7c478bd9Sstevel@tonic-gate#endif
976*7c478bd9Sstevel@tonic-gate
977*7c478bd9Sstevel@tonic-gate/*
978*7c478bd9Sstevel@tonic-gate * Clustering: stubs for global file system operations.
979*7c478bd9Sstevel@tonic-gate */
980*7c478bd9Sstevel@tonic-gate#ifndef PXFS_MODULE
981*7c478bd9Sstevel@tonic-gate	MODULE(pxfs,fs);
982*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_read, nomod_zero);
983*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_write, nomod_zero);
984*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_WSTUB(pxfs, cl_flk_state_transition_notify, nomod_zero);
985*7c478bd9Sstevel@tonic-gate	END_MODULE(pxfs);
986*7c478bd9Sstevel@tonic-gate#endif
987*7c478bd9Sstevel@tonic-gate
988*7c478bd9Sstevel@tonic-gate/*
989*7c478bd9Sstevel@tonic-gate * Stubs for PCI configurator module (misc/pcicfg).
990*7c478bd9Sstevel@tonic-gate */
991*7c478bd9Sstevel@tonic-gate#ifndef	PCICFG_MODULE
992*7c478bd9Sstevel@tonic-gate	MODULE(pcicfg,misc);
993*7c478bd9Sstevel@tonic-gate	STUB(pcicfg, pcicfg_configure, 0);
994*7c478bd9Sstevel@tonic-gate	STUB(pcicfg, pcicfg_unconfigure, 0);
995*7c478bd9Sstevel@tonic-gate	END_MODULE(pcicfg);
996*7c478bd9Sstevel@tonic-gate#endif
997*7c478bd9Sstevel@tonic-gate
998*7c478bd9Sstevel@tonic-gate#ifndef PCIHP_MODULE
999*7c478bd9Sstevel@tonic-gate	MODULE(pcihp,misc);
1000*7c478bd9Sstevel@tonic-gate	WSTUB(pcihp, pcihp_init, nomod_minus_one);
1001*7c478bd9Sstevel@tonic-gate	WSTUB(pcihp, pcihp_uninit, nomod_minus_one);
1002*7c478bd9Sstevel@tonic-gate	WSTUB(pcihp, pcihp_info, nomod_minus_one);
1003*7c478bd9Sstevel@tonic-gate	WSTUB(pcihp, pcihp_get_cb_ops, nomod_zero);
1004*7c478bd9Sstevel@tonic-gate	END_MODULE(pcihp);
1005*7c478bd9Sstevel@tonic-gate#endif
1006*7c478bd9Sstevel@tonic-gate
1007*7c478bd9Sstevel@tonic-gate/*
1008*7c478bd9Sstevel@tonic-gate * Stubs for kernel cryptographic framework module (misc/kcf).
1009*7c478bd9Sstevel@tonic-gate */
1010*7c478bd9Sstevel@tonic-gate#ifndef KCF_MODULE
1011*7c478bd9Sstevel@tonic-gate	MODULE(kcf,misc);
1012*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mech2id, nomod_minus_one);
1013*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_register_provider, nomod_minus_one);
1014*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_unregister_provider, nomod_minus_one);
1015*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_provider_notification, nomod_minus_one);
1016*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_op_notification, nomod_minus_one);
1017*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_kmflag, nomod_minus_one);
1018*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_digest, nomod_minus_one);
1019*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_digest_init, nomod_minus_one);
1020*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_digest_update, nomod_minus_one);
1021*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_digest_final, nomod_minus_one);
1022*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt, nomod_minus_one);
1023*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt_init, nomod_minus_one);
1024*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt_update, nomod_minus_one);
1025*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt_final, nomod_minus_one);
1026*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_decrypt, nomod_minus_one);
1027*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_decrypt_init, nomod_minus_one);
1028*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_decrypt_update, nomod_minus_one);
1029*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_decrypt_final, nomod_minus_one);
1030*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_get_all_mech_info, nomod_minus_one);
1031*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac, nomod_minus_one);
1032*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_verify, nomod_minus_one);
1033*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_init, nomod_minus_one);
1034*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_update, nomod_minus_one);
1035*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_final, nomod_minus_one);
1036*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt, nomod_minus_one);
1037*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_verify_decrypt, nomod_minus_one);
1038*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_init, nomod_minus_one);
1039*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_update, nomod_minus_one);
1040*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_final, nomod_minus_one);
1041*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac, nomod_minus_one);
1042*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_init, nomod_minus_one);
1043*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_update, nomod_minus_one);
1044*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_final, nomod_minus_one);
1045*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_create_ctx_template, nomod_minus_one);
1046*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_destroy_ctx_template, nomod_minus_one);
1047*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_get_mech_list, nomod_minus_one);
1048*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_free_mech_list, nomod_minus_one);
1049*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_cancel_req, nomod_minus_one);
1050*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_cancel_ctx, nomod_minus_one);
1051*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_bufcall_alloc, nomod_minus_one);
1052*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_bufcall_free, nomod_minus_one);
1053*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_bufcall, nomod_minus_one);
1054*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_unbufcall, nomod_minus_one);
1055*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_notify_events, nomod_minus_one);
1056*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_unnotify_events, nomod_minus_one);
1057*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_key_check, nomod_minus_one);
1058*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_sign, nomod_minus_one);
1059*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_sign_init, nomod_minus_one);
1060*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_sign_update, nomod_minus_one);
1061*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_sign_final, nomod_minus_one);
1062*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_sign_recover, nomod_minus_one);
1063*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_verify, nomod_minus_one);
1064*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_verify_init, nomod_minus_one);
1065*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_verify_update, nomod_minus_one);
1066*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_verify_final, nomod_minus_one);
1067*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, crypto_verify_recover, nomod_minus_one);
1068*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, random_add_entropy, nomod_minus_one);
1069*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, random_get_bytes, nomod_minus_one);
1070*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(kcf, random_get_pseudo_bytes, nomod_minus_one);
1071*7c478bd9Sstevel@tonic-gate	END_MODULE(kcf);
1072*7c478bd9Sstevel@tonic-gate#endif
1073*7c478bd9Sstevel@tonic-gate
1074*7c478bd9Sstevel@tonic-gate/*
1075*7c478bd9Sstevel@tonic-gate * Stubs for sha1. A non-unloadable module.
1076*7c478bd9Sstevel@tonic-gate */
1077*7c478bd9Sstevel@tonic-gate#ifndef SHA1_MODULE
1078*7c478bd9Sstevel@tonic-gate	MODULE(sha1,crypto);
1079*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sha1, SHA1Init, nomod_void);
1080*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sha1, SHA1Update, nomod_void);
1081*7c478bd9Sstevel@tonic-gate	NO_UNLOAD_STUB(sha1, SHA1Final,	nomod_void);
1082*7c478bd9Sstevel@tonic-gate	END_MODULE(sha1);
1083*7c478bd9Sstevel@tonic-gate#endif
1084*7c478bd9Sstevel@tonic-gate
1085*7c478bd9Sstevel@tonic-gate#ifndef DLD_MODULE
1086*7c478bd9Sstevel@tonic-gate	MODULE(dld,drv);
1087*7c478bd9Sstevel@tonic-gate	STUB(dld, dld_ppa_create, nomod_einval);
1088*7c478bd9Sstevel@tonic-gate	STUB(dld, dld_ppa_destroy, nomod_einval);
1089*7c478bd9Sstevel@tonic-gate	END_MODULE(dld);
1090*7c478bd9Sstevel@tonic-gate#endif
1091*7c478bd9Sstevel@tonic-gate
1092*7c478bd9Sstevel@tonic-gate! this is just a marker for the area of text that contains stubs
1093*7c478bd9Sstevel@tonic-gate	.seg ".text"
1094*7c478bd9Sstevel@tonic-gate	.global stubs_end
1095*7c478bd9Sstevel@tonic-gatestubs_end:
1096*7c478bd9Sstevel@tonic-gate	nop
1097*7c478bd9Sstevel@tonic-gate
1098*7c478bd9Sstevel@tonic-gate#endif	/* lint */
1099