Home | History | Annotate | Download | only in ml
      1 /*
      2  * CDDL HEADER START
      3  *
      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.
      7  *
      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.
     12  *
     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]
     18  *
     19  * CDDL HEADER END
     20  */
     21 
     22 /*
     23  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     24  * Use is subject to license terms.
     25  */
     26 
     27 #include <sys/asm_linkage.h>
     28 
     29 #if defined(__lint)
     30 
     31 char stubs_base[1], stubs_end[1];
     32 
     33 #else	/* __lint */
     34 
     35 #include "assym.h"
     36 
     37 /*
     38  * !!!!!!!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!!!!!!
     39  *
     40  *	For functions which are either STUBs or WSTUBs the actual function
     41  *	need to be called using 'call' instruction because of preamble and
     42  *	postamble (i.e mod_hold_stub and mod_release_stub) around the
     43  *	function call. Due to this we need to copy arguments for the
     44  *	real function. On Intel we can't tell how many arguments are there
     45  *	on the stack so we have to either copy everything between esp and
     46  *	ebp or copy only a fixed number (MAXNARG - defined here) for
     47  *	all the stub functions. Currently we are using MAXNARG (it is a kludge
     48  *	but worth it?!).
     49  *
     50  *	NOTE: Use NO_UNLOAD_STUBs if the module is NOT unloadable once it is
     51  *	      loaded.
     52  */
     53 #define	MAXNARG	10
     54 
     55 /*
     56  * WARNING: there is no check for forgetting to write END_MODULE,
     57  * and if you do, the kernel will most likely crash.  Be careful
     58  *
     59  * This file assumes that all of the contributions to the data segment
     60  * will be contiguous in the output file, even though they are separated
     61  * by pieces of text.  This is safe for all assemblers I know of now...
     62  */
     63 
     64 /*
     65  * This file uses ansi preprocessor features:
     66  *
     67  * 1. 	#define mac(a) extra_ ## a     -->   mac(x) expands to extra_a
     68  * The old version of this is
     69  *      #define mac(a) extra_/.*.*./a
     70  * but this fails if the argument has spaces "mac ( x )"
     71  * (Ignore the dots above, I had to put them in to keep this a comment.)
     72  *
     73  * 2.   #define mac(a) #a             -->    mac(x) expands to "x"
     74  * The old version is
     75  *      #define mac(a) "a"
     76  *
     77  * For some reason, the 5.0 preprocessor isn't happy with the above usage.
     78  * For now, we're not using these ansi features.
     79  *
     80  * The reason is that "the 5.0 ANSI preprocessor" is built into the compiler
     81  * and is a tokenizing preprocessor. This means, when confronted by something
     82  * other than C token generation rules, strange things occur. In this case,
     83  * when confronted by an assembly file, it would turn the token ".globl" into
     84  * two tokens "." and "globl". For this reason, the traditional, non-ANSI
     85  * preprocessor is used on assembly files.
     86  *
     87  * It would be desirable to have a non-tokenizing cpp (accp?) to use for this.
     88  */
     89 
     90 /*
     91  * This file contains the stubs routines for modules which can be autoloaded.
     92  */
     93 
     94 #if defined(__amd64)
     95 
     96 /*
     97  * See the 'struct mod_modinfo' definition to see what this declaration
     98  * is trying to achieve here.
     99  */
    100 #define	MODULE(module,namespace)	\
    101 	.data;				\
    102 module/**/_modname:			\
    103 	.string	"namespace/module";	\
    104 	SET_SIZE(module/**/_modname);	\
    105 	.align	CPTRSIZE;		\
    106 	.globl	module/**/_modinfo;	\
    107 	.type	module/**/_modinfo, @object;	\
    108 module/**/_modinfo:			\
    109 	.quad	module/**/_modname;	\
    110 	.quad	0	/* storage for modctl pointer */
    111 
    112 	/* then mod_stub_info structures follow until a mods_func_adr is 0 */
    113 
    114 /* this puts a 0 where the next mods_func_adr would be */
    115 #define	END_MODULE(module)		\
    116 	.data;				\
    117 	.align	CPTRSIZE;		\
    118 	.quad 0;			\
    119 	SET_SIZE(module/**/_modinfo)
    120 
    121 /*
    122  * The data section in the stub_common macro is the
    123  * mod_stub_info structure for the stub function
    124  */
    125 
    126 #define STUB_COMMON(module, fcnname, install_fcn, retfcn, weak)		\
    127 	ENTRY(fcnname);							\
    128 	leaq	fcnname/**/_info(%rip), %rax;				\
    129 	cmpl	$0, MODS_FLAG(%rax);			/* weak? */	\
    130 	je	stubs_common_code;			/* not weak */	\
    131 	testb	$MODS_INSTALLED, MODS_FLAG(%rax);	/* installed? */ \
    132 	jne	stubs_common_code;		/* yes, do the mod_hold */ \
    133 	jmp	*MODS_RETFCN(%rax);		/* no, jump to retfcn */ \
    134 	SET_SIZE(fcnname);						\
    135 	.data;								\
    136 	.align	 CPTRSIZE;						\
    137 	.type	fcnname/**/_info, @object;				\
    138 fcnname/**/_info:							\
    139 	.quad	install_fcn;		/* 0 */				\
    140 	.quad	module/**/_modinfo;	/* 0x8 */			\
    141 	.quad	fcnname;		/* 0x10 */			\
    142 	.quad	retfcn;			/* 0x18 */			\
    143 	.long	weak;			/* 0x20 */			\
    144 	SET_SIZE(fcnname/**/_info)
    145 
    146 #define STUB_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)	\
    147 	ENTRY(fcnname);							\
    148 	leaq	fcnname/**/_info(%rip), %rax;				\
    149 	testb	$MODS_INSTALLED, MODS_FLAG(%rax); /* installed? */	\
    150 	je	5f;			/* no */			\
    151 	jmp	*(%rax);		/* yes, jump to install_fcn */	\
    152 5:	testb	$MODS_WEAK, MODS_FLAG(%rax);	/* weak? */		\
    153 	je	stubs_common_code;	/* no, do mod load */		\
    154 	jmp	*MODS_RETFCN(%rax);	/* yes, jump to retfcn */	\
    155 	SET_SIZE(fcnname);						\
    156 	.data;								\
    157 	.align	CPTRSIZE;						\
    158 	.type	fcnname/**/_info, @object;				\
    159 fcnname/**/_info:							\
    160 	.quad	install_fcn;		/* 0 */				\
    161 	.quad	module/**/_modinfo;	/* 0x8 */			\
    162 	.quad	fcnname;		/* 0x10 */			\
    163 	.quad	retfcn;			/* 0x18 */			\
    164 	.long   weak;			/* 0x20 */			\
    165 	SET_SIZE(fcnname/**/_info)
    166 
    167 /*
    168  * We branch here with the fcnname_info pointer in %rax
    169  */
    170 	ENTRY_NP(stubs_common_code)
    171 	.globl	mod_hold_stub
    172 	.globl	mod_release_stub
    173 	pushq	%rbp
    174 	movq	%rsp, %rbp
    175 	subq	$0x10, %rsp
    176 	movq	%r15, (%rsp)		/* (caller saved) */
    177 	movq	%rax, %r15		/* stash the fcnname_info pointer */
    178 	/*
    179 	 * save incoming register arguments
    180 	 */
    181 	pushq	%rdi
    182 	pushq	%rsi
    183 	pushq	%rdx
    184 	pushq	%rcx
    185 	pushq	%r8
    186 	pushq	%r9
    187 	/* (next 4 args, if any, are already on the stack above %rbp) */
    188 	movq	%r15, %rdi
    189 	call	mod_hold_stub		/* mod_hold_stub(mod_stub_info *) */
    190 	cmpl	$-1, %eax		/* error? */
    191 	jne	.L1
    192 	movq	0x18(%r15), %rax
    193 	call	*%rax
    194 	addq	$0x30, %rsp
    195 	jmp	.L2
    196 .L1:
    197 	/*
    198 	 * copy MAXNARG == 10 incoming arguments
    199 	 */
    200 	popq	%r9
    201 	popq	%r8
    202 	popq	%rcx
    203 	popq	%rdx
    204 	popq	%rsi
    205 	popq	%rdi
    206 	/*
    207 	 * stack:
    208 	 *	arg9		0x38(%rsp)
    209 	 *	arg8		0x30(%rsp)
    210 	 *	arg7		0x28(%rsp)
    211 	 *	arg6		0x20(%rsp)
    212 	 *	saved %rip	0x18(%rsp)
    213 	 *	saved %rbp	0x10(%rsp)
    214 	 *	<pad>		0x8(%rsp)
    215 	 *	saved %r15	0x0(%rsp)
    216 	 */
    217 	movl	$MAXNARG - 6 + 3, %r11d
    218 	pushq	(%rsp, %r11, 8)
    219 	pushq	(%rsp, %r11, 8)
    220 	pushq	(%rsp, %r11, 8)
    221 	pushq	(%rsp, %r11, 8)
    222 	call	*(%r15)			/* call the stub fn(arg, ..) */
    223 	addq	$0x20, %rsp		/* pop off last 4 args */
    224 	pushq	%rax			/* save any return values */
    225 	pushq	%rdx
    226 	movq	%r15, %rdi
    227 	call	mod_release_stub	/* release hold on module */
    228 	popq	%rdx			/* restore return values */
    229 	popq	%rax
    230 .L2:
    231 	popq	%r15
    232 	leave
    233 	ret
    234 	SET_SIZE(stubs_common_code)
    235 
    236 #elif defined(__i386)
    237 
    238 /*
    239  * See the 'struct mod_modinfo' definition to see what this declaration
    240  * is trying to achieve here.
    241  */
    242 #define MODULE(module,namespace)	\
    243 	.data;				\
    244 module/**/_modname:			\
    245 	.string	"namespace/module";	\
    246 	SET_SIZE(module/**/_modname);	\
    247 	.align	CPTRSIZE;		\
    248 	.globl	module/**/_modinfo;	\
    249 	.type	module/**/_modinfo, @object;	\
    250 module/**/_modinfo:			\
    251 	.long	module/**/_modname;	\
    252 	.long	0	/* storage for modctl pointer */
    253 
    254 	/* then mod_stub_info structures follow until a mods_func_adr is 0 */
    255 
    256 /* this puts a 0 where the next mods_func_adr would be */
    257 #define END_MODULE(module)		\
    258 	.data;				\
    259 	.align	CPTRSIZE;		\
    260 	.long 0;			\
    261 	SET_SIZE(module/**/_modinfo)
    262 
    263 /*
    264  * The data section in the stub_common macro is the
    265  * mod_stub_info structure for the stub function
    266  */
    267 
    268 /*
    269  * The flag MODS_INSTALLED is stored in the stub data and is used to
    270  * indicate if a module is installed and initialized.  This flag is used
    271  * instead of the mod_stub_info->mods_modinfo->mod_installed flag
    272  * to minimize the number of pointer de-references for each function
    273  * call (and also to avoid possible TLB misses which could be induced
    274  * by dereferencing these pointers.)
    275  */
    276 
    277 #define STUB_COMMON(module, fcnname, install_fcn, retfcn, weak)		\
    278 	ENTRY(fcnname);							\
    279 	leal	fcnname/**/_info, %eax;					\
    280 	cmpl	$0, MODS_FLAG(%eax);	/* weak? */			\
    281 	je	stubs_common_code;	/* not weak */			\
    282 	testb	$MODS_INSTALLED, MODS_FLAG(%eax); /* installed? */	\
    283 	jne	stubs_common_code;	/* yes, do the mod_hold */	\
    284 	jmp	*MODS_RETFCN(%eax);	/* no, just jump to retfcn */	\
    285 	SET_SIZE(fcnname);						\
    286 	.data;								\
    287 	.align	 CPTRSIZE;						\
    288 	.type	fcnname/**/_info, @object;				\
    289 fcnname/**/_info:							\
    290 	.long	install_fcn;						\
    291 	.long	module/**/_modinfo;					\
    292 	.long	fcnname;						\
    293 	.long	retfcn;							\
    294 	.long   weak;							\
    295 	SET_SIZE(fcnname/**/_info)
    296 
    297 #define STUB_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)	\
    298 	ENTRY(fcnname);							\
    299 	leal	fcnname/**/_info, %eax;					\
    300 	testb	$MODS_INSTALLED, MODS_FLAG(%eax); /* installed? */	\
    301 	je	5f;		/* no */				\
    302 	jmp	*(%eax);	/* yes, just jump to install_fcn */	\
    303 5:	testb	$MODS_WEAK, MODS_FLAG(%eax);	/* weak? */		\
    304 	je	stubs_common_code;	/* no, do mod load */		\
    305 	jmp	*MODS_RETFCN(%eax);	/* yes, just jump to retfcn */ 	\
    306 	SET_SIZE(fcnname);						\
    307 	.data;								\
    308 	.align	CPTRSIZE;						\
    309 	.type	fcnname/**/_info, @object;				\
    310 fcnname/**/_info:							\
    311 	.long	install_fcn;		/* 0 */				\
    312 	.long	module/**/_modinfo;	/* 0x4 */			\
    313 	.long	fcnname;		/* 0x8 */			\
    314 	.long	retfcn;			/* 0xc */			\
    315 	.long   weak;			/* 0x10 */			\
    316 	SET_SIZE(fcnname/**/_info)
    317 
    318 /*
    319  * We branch here with the fcnname_info pointer in %eax
    320  */
    321 	ENTRY_NP(stubs_common_code)
    322 	.globl	mod_hold_stub
    323 	.globl	mod_release_stub
    324 	pushl	%esi
    325 	movl	%eax, %esi		/ save the info pointer
    326 	pushl	%eax
    327 	call	mod_hold_stub		/ mod_hold_stub(mod_stub_info *)
    328 	popl	%ecx
    329 	cmpl	$-1, %eax		/ error?
    330 	jne	.L1
    331 	movl	MODS_RETFCN(%esi), %eax
    332 	call    *%eax
    333 	popl	%esi			/ yes, return error (panic?)
    334 	ret
    335 .L1:
    336 	movl	$MAXNARG+1, %ecx
    337 	/ copy incoming arguments
    338 	pushl	(%esp, %ecx, 4)		/ push MAXNARG times
    339 	pushl	(%esp, %ecx, 4)
    340 	pushl	(%esp, %ecx, 4)
    341 	pushl	(%esp, %ecx, 4)
    342 	pushl	(%esp, %ecx, 4)
    343 	pushl	(%esp, %ecx, 4)
    344 	pushl	(%esp, %ecx, 4)
    345 	pushl	(%esp, %ecx, 4)
    346 	pushl	(%esp, %ecx, 4)
    347 	pushl	(%esp, %ecx, 4)
    348 	call	*(%esi)			/ call the stub function(arg1,arg2, ...)
    349 	add	$_MUL(MAXNARG, 4), %esp	/ pop off MAXNARG arguments
    350 	pushl	%eax			/ save any return values from the stub
    351 	pushl	%edx
    352 	pushl	%esi
    353 	call	mod_release_stub	/ release hold on module
    354 	addl	$4, %esp
    355 	popl	%edx			/ restore return values
    356 	popl	%eax
    357 .L2:
    358 	popl	%esi
    359 	ret
    360 	SET_SIZE(stubs_common_code)
    361 
    362 #endif	/* __i386 */
    363 
    364 #define STUB(module, fcnname, retfcn)	\
    365     STUB_COMMON(module, fcnname, mod_hold_stub, retfcn, 0)
    366 
    367 /*
    368  * "weak stub", don't load on account of this call
    369  */
    370 #define WSTUB(module, fcnname, retfcn)	\
    371     STUB_COMMON(module, fcnname, retfcn, retfcn, MODS_WEAK)
    372 
    373 /*
    374  * "non-unloadable stub", don't bother 'holding' module if it's already loaded
    375  * since the module cannot be unloaded.
    376  *
    377  * User *MUST* guarantee the module is not unloadable (no _fini routine).
    378  */
    379 #define NO_UNLOAD_STUB(module, fcnname, retfcn) \
    380     STUB_UNLOADABLE(module, fcnname,  retfcn, retfcn, MODS_NOUNLOAD)
    381 
    382 /*
    383  * "weak stub" for non-unloadable module, don't load on account of this call
    384  */
    385 #define NO_UNLOAD_WSTUB(module, fcnname, retfcn) \
    386     STUB_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD|MODS_WEAK)
    387 
    388 /*
    389  * this is just a marker for the beginning area of text that contains stubs
    390  */
    391 	ENTRY_NP(stubs_base)
    392 	nop
    393 
    394 /*
    395  * WARNING WARNING WARNING!!!!!!
    396  *
    397  * On the MODULE macro you MUST NOT use any spaces!!! They are
    398  * significant to the preprocessor.  With ansi c there is a way around this
    399  * but for some reason (yet to be investigated) ansi didn't work for other
    400  * reasons!
    401  *
    402  * When zero is used as the return function, the system will call
    403  * panic if the stub can't be resolved.
    404  */
    405 
    406 /*
    407  * Stubs for devfs. A non-unloadable module.
    408  */
    409 
    410 #ifndef	DEVFS_MODULE
    411 	MODULE(devfs,fs);
    412 	NO_UNLOAD_STUB(devfs, devfs_clean,		nomod_minus_one);
    413 	NO_UNLOAD_STUB(devfs, devfs_lookupname,		nomod_minus_one);
    414 	NO_UNLOAD_STUB(devfs, devfs_walk,		nomod_minus_one);
    415 	NO_UNLOAD_STUB(devfs, devfs_devpolicy,		nomod_minus_one);
    416 	NO_UNLOAD_STUB(devfs, devfs_reset_perm,		nomod_minus_one);
    417 	NO_UNLOAD_STUB(devfs, devfs_remdrv_cleanup,	nomod_minus_one);
    418 	END_MODULE(devfs);
    419 #endif
    420 
    421 #ifndef	DEV_MODULE
    422 	MODULE(dev,fs);
    423 	NO_UNLOAD_STUB(dev, sdev_modctl_readdir,	nomod_minus_one);
    424 	NO_UNLOAD_STUB(dev, sdev_modctl_readdir_free,	nomod_minus_one);
    425 	NO_UNLOAD_STUB(dev, devname_filename_register,	nomod_minus_one);
    426 	NO_UNLOAD_STUB(dev, sdev_modctl_devexists,	nomod_minus_one);
    427 	NO_UNLOAD_STUB(dev, devname_profile_update,	nomod_minus_one);
    428 	NO_UNLOAD_STUB(dev, sdev_devstate_change,	nomod_minus_one);
    429 	NO_UNLOAD_STUB(dev, devvt_getvnodeops,		nomod_minus_one);
    430 	NO_UNLOAD_STUB(dev, devpts_getvnodeops,		nomod_zero);
    431 	END_MODULE(dev);
    432 #endif
    433 
    434 /*
    435  * Stubs for specfs. A non-unloadable module.
    436  */
    437 
    438 #ifndef SPEC_MODULE
    439 	MODULE(specfs,fs);
    440 	NO_UNLOAD_STUB(specfs, common_specvp,		nomod_zero);
    441 	NO_UNLOAD_STUB(specfs, makectty,		nomod_zero);
    442 	NO_UNLOAD_STUB(specfs, makespecvp,     		nomod_zero);
    443 	NO_UNLOAD_STUB(specfs, smark,          		nomod_zero);
    444 	NO_UNLOAD_STUB(specfs, spec_segmap,    		nomod_einval);
    445 	NO_UNLOAD_STUB(specfs, specfind,       		nomod_zero);
    446 	NO_UNLOAD_STUB(specfs, specvp,         		nomod_zero);
    447 	NO_UNLOAD_STUB(specfs, devi_stillreferenced,	nomod_zero);
    448 	NO_UNLOAD_STUB(specfs, spec_getvnodeops,	nomod_zero);
    449 	NO_UNLOAD_STUB(specfs, spec_char_map,		nomod_zero);
    450 	NO_UNLOAD_STUB(specfs, specvp_devfs,  		nomod_zero);
    451 	NO_UNLOAD_STUB(specfs, spec_assoc_vp_with_devi,	nomod_void);
    452 	NO_UNLOAD_STUB(specfs, spec_hold_devi_by_vp,	nomod_zero);
    453 	NO_UNLOAD_STUB(specfs, spec_snode_walk,		nomod_void);
    454 	NO_UNLOAD_STUB(specfs, spec_devi_open_count,	nomod_minus_one);
    455 	NO_UNLOAD_STUB(specfs, spec_is_clone,		nomod_zero);
    456 	NO_UNLOAD_STUB(specfs, spec_is_selfclone,	nomod_zero);
    457 	NO_UNLOAD_STUB(specfs, spec_fence_snode,	nomod_minus_one);
    458 	NO_UNLOAD_STUB(specfs, spec_unfence_snode,	nomod_minus_one);
    459 	END_MODULE(specfs);
    460 #endif
    461 
    462 
    463 /*
    464  * Stubs for sockfs. A non-unloadable module.
    465  */
    466 #ifndef SOCK_MODULE
    467 	MODULE(sockfs,fs);
    468 	NO_UNLOAD_STUB(sockfs, so_socket,  	nomod_zero);
    469 	NO_UNLOAD_STUB(sockfs, so_socketpair,	nomod_zero);
    470 	NO_UNLOAD_STUB(sockfs, bind,  		nomod_zero);
    471 	NO_UNLOAD_STUB(sockfs, listen,  	nomod_zero);
    472 	NO_UNLOAD_STUB(sockfs, accept,  	nomod_zero);
    473 	NO_UNLOAD_STUB(sockfs, connect,  	nomod_zero);
    474 	NO_UNLOAD_STUB(sockfs, shutdown,  	nomod_zero);
    475 	NO_UNLOAD_STUB(sockfs, recv,  		nomod_zero);
    476 	NO_UNLOAD_STUB(sockfs, recvfrom,  	nomod_zero);
    477 	NO_UNLOAD_STUB(sockfs, recvmsg,  	nomod_zero);
    478 	NO_UNLOAD_STUB(sockfs, send,  		nomod_zero);
    479 	NO_UNLOAD_STUB(sockfs, sendmsg,  	nomod_zero);
    480 	NO_UNLOAD_STUB(sockfs, sendto,  	nomod_zero);
    481 #ifdef _SYSCALL32_IMPL
    482 	NO_UNLOAD_STUB(sockfs, recv32,		nomod_zero);
    483 	NO_UNLOAD_STUB(sockfs, recvfrom32,	nomod_zero);
    484 	NO_UNLOAD_STUB(sockfs, send32,		nomod_zero);
    485 	NO_UNLOAD_STUB(sockfs, sendto32,	nomod_zero);
    486 #endif	/* _SYSCALL32_IMPL */
    487 	NO_UNLOAD_STUB(sockfs, getpeername,  	nomod_zero);
    488 	NO_UNLOAD_STUB(sockfs, getsockname,  	nomod_zero);
    489 	NO_UNLOAD_STUB(sockfs, getsockopt,  	nomod_zero);
    490 	NO_UNLOAD_STUB(sockfs, setsockopt,  	nomod_zero);
    491 	NO_UNLOAD_STUB(sockfs, sockconfig,  	nomod_zero);
    492 	NO_UNLOAD_STUB(sockfs, sock_getmsg,  	nomod_zero);
    493 	NO_UNLOAD_STUB(sockfs, sock_putmsg,  	nomod_zero);
    494 	NO_UNLOAD_STUB(sockfs, sosendfile64,  	nomod_zero);
    495 	NO_UNLOAD_STUB(sockfs, snf_segmap,  	nomod_einval);
    496 	NO_UNLOAD_STUB(sockfs, sock_getfasync,  nomod_zero);
    497 	NO_UNLOAD_STUB(sockfs, nl7c_sendfilev,  nomod_zero);
    498 	NO_UNLOAD_STUB(sockfs, sotpi_sototpi,  nomod_zero);
    499 	NO_UNLOAD_STUB(sockfs, socket_sendmblk,  nomod_zero);
    500 	NO_UNLOAD_STUB(sockfs, socket_setsockopt,  nomod_zero);
    501 	END_MODULE(sockfs);
    502 #endif
    503 
    504 /*
    505  * IPsec stubs.
    506  */
    507 
    508 #ifndef	IPSECAH_MODULE
    509 	MODULE(ipsecah,drv);
    510 	WSTUB(ipsecah,	ipsec_construct_inverse_acquire,	nomod_zero);
    511 	WSTUB(ipsecah,	sadb_acquire,		nomod_zero);
    512 	WSTUB(ipsecah,	ipsecah_algs_changed,	nomod_zero);
    513 	WSTUB(ipsecah,	sadb_alg_update,	nomod_zero);
    514 	WSTUB(ipsecah,	sadb_unlinkassoc,	nomod_zero);
    515 	WSTUB(ipsecah,	sadb_insertassoc,	nomod_zero);
    516 	WSTUB(ipsecah,	ipsecah_in_assocfailure,	nomod_zero);
    517 	WSTUB(ipsecah,	sadb_set_lpkt,		nomod_zero);
    518 	WSTUB(ipsecah,	ipsecah_icmp_error,	nomod_zero);
    519 	END_MODULE(ipsecah);
    520 #endif
    521 
    522 #ifndef	IPSECESP_MODULE
    523 	MODULE(ipsecesp,drv);
    524 	WSTUB(ipsecesp,	ipsecesp_fill_defs,	nomod_zero);
    525 	WSTUB(ipsecesp,	ipsecesp_algs_changed,	nomod_zero);
    526 	WSTUB(ipsecesp, ipsecesp_in_assocfailure,	nomod_zero);
    527 	WSTUB(ipsecesp, ipsecesp_init_funcs,	nomod_zero);
    528 	WSTUB(ipsecesp,	ipsecesp_icmp_error,	nomod_zero);
    529 	WSTUB(ipsecesp,	ipsecesp_send_keepalive,	nomod_zero);
    530 	END_MODULE(ipsecesp);
    531 #endif
    532 
    533 #ifndef	KEYSOCK_MODULE
    534 	MODULE(keysock,	drv);
    535 	WSTUB(keysock,	keysock_plumb_ipsec,	nomod_zero);
    536 	WSTUB(keysock,	keysock_extended_reg,	nomod_zero);
    537 	WSTUB(keysock,	keysock_next_seq,	nomod_zero);
    538 	END_MODULE(keysock);
    539 #endif
    540 
    541 #ifndef SPDSOCK_MODULE
    542 	MODULE(spdsock,drv);
    543 	WSTUB(spdsock,	spdsock_update_pending_algs,	nomod_zero);
    544 	END_MODULE(spdsock);
    545 #endif
    546 
    547 /*
    548  * Stubs for nfs common code.
    549  * XXX nfs_getvnodeops should go away with removal of kludge in vnode.c
    550  */
    551 #ifndef NFS_MODULE
    552 	MODULE(nfs,fs);
    553 	WSTUB(nfs,	nfs_getvnodeops,	nomod_zero);
    554 	WSTUB(nfs,	nfs_perror,		nomod_zero);
    555 	WSTUB(nfs,	nfs_cmn_err,		nomod_zero);
    556 	WSTUB(nfs,	clcleanup_zone,		nomod_zero);
    557 	WSTUB(nfs,	clcleanup4_zone,	nomod_zero);
    558 	END_MODULE(nfs);
    559 #endif
    560 
    561 
    562 /*
    563  * Stubs for nfs_dlboot (diskless booting).
    564  */
    565 #ifndef NFS_DLBOOT_MODULE
    566 	MODULE(nfs_dlboot,misc);
    567 	STUB(nfs_dlboot,	mount_root,	nomod_minus_one);
    568 	STUB(nfs_dlboot,	dhcpinit,	nomod_minus_one);
    569 	END_MODULE(nfs_dlboot);
    570 #endif
    571 
    572 /*
    573  * Stubs for nfs server-only code.
    574  */
    575 #ifndef NFSSRV_MODULE
    576 	MODULE(nfssrv,misc);
    577 	STUB(nfssrv,		lm_nfs3_fhtovp,	nomod_minus_one);
    578 	STUB(nfssrv,		lm_fhtovp,	nomod_minus_one);
    579 	STUB(nfssrv,		exportfs,	nomod_minus_one);
    580 	STUB(nfssrv,		nfs_getfh,	nomod_minus_one);
    581 	STUB(nfssrv,		nfsl_flush,	nomod_minus_one);
    582 	STUB(nfssrv,		rfs4_check_delegated, nomod_zero);
    583 	STUB(nfssrv,		mountd_args,	nomod_minus_one);
    584 	NO_UNLOAD_STUB(nfssrv,	rdma_start,	nomod_zero);
    585 	NO_UNLOAD_STUB(nfssrv,	nfs_svc,	nomod_zero);
    586 	END_MODULE(nfssrv);
    587 #endif
    588 
    589 /*
    590  * Stubs for kernel lock manager.
    591  */
    592 #ifndef KLM_MODULE
    593 	MODULE(klmmod,misc);
    594 	NO_UNLOAD_STUB(klmmod, lm_svc,		nomod_zero);
    595 	NO_UNLOAD_STUB(klmmod, lm_shutdown,	nomod_zero);
    596 	NO_UNLOAD_STUB(klmmod, lm_unexport,	nomod_zero);
    597 	NO_UNLOAD_STUB(klmmod, lm_cprresume,	nomod_zero);
    598 	NO_UNLOAD_STUB(klmmod, lm_cprsuspend,	nomod_zero);
    599 	NO_UNLOAD_STUB(klmmod, lm_safelock, nomod_zero);
    600 	NO_UNLOAD_STUB(klmmod, lm_safemap, nomod_zero);
    601 	NO_UNLOAD_STUB(klmmod, lm_has_sleep, nomod_zero);
    602 	NO_UNLOAD_STUB(klmmod, lm_free_config, nomod_zero);
    603 	NO_UNLOAD_STUB(klmmod, lm_vp_active, nomod_zero);
    604 	NO_UNLOAD_STUB(klmmod, lm_get_sysid, nomod_zero);
    605 	NO_UNLOAD_STUB(klmmod, lm_rel_sysid, nomod_zero);
    606 	NO_UNLOAD_STUB(klmmod, lm_alloc_sysidt, nomod_minus_one);
    607 	NO_UNLOAD_STUB(klmmod, lm_free_sysidt, nomod_zero);
    608 	NO_UNLOAD_STUB(klmmod, lm_sysidt, nomod_minus_one);
    609 	END_MODULE(klmmod);
    610 #endif
    611 
    612 #ifndef KLMOPS_MODULE
    613 	MODULE(klmops,misc);
    614 	NO_UNLOAD_STUB(klmops, lm_frlock,	nomod_zero);
    615 	NO_UNLOAD_STUB(klmops, lm4_frlock,	nomod_zero);
    616 	NO_UNLOAD_STUB(klmops, lm_shrlock,	nomod_zero);
    617 	NO_UNLOAD_STUB(klmops, lm4_shrlock,	nomod_zero);
    618 	NO_UNLOAD_STUB(klmops, lm_nlm_dispatch,	nomod_zero);
    619 	NO_UNLOAD_STUB(klmops, lm_nlm4_dispatch,	nomod_zero);
    620 	NO_UNLOAD_STUB(klmops, lm_nlm_reclaim,	nomod_zero);
    621 	NO_UNLOAD_STUB(klmops, lm_nlm4_reclaim,	nomod_zero);
    622 	NO_UNLOAD_STUB(klmops, lm_register_lock_locally, nomod_zero);
    623 	END_MODULE(klmops);
    624 #endif
    625 
    626 /*
    627  * Stubs for kernel TLI module
    628  *   XXX currently we never allow this to unload
    629  */
    630 #ifndef TLI_MODULE
    631 	MODULE(tlimod,misc);
    632 	NO_UNLOAD_STUB(tlimod,	t_kopen,		nomod_minus_one);
    633 	NO_UNLOAD_STUB(tlimod,	t_kunbind,		nomod_zero);
    634 	NO_UNLOAD_STUB(tlimod,	t_kadvise,		nomod_zero);
    635 	NO_UNLOAD_STUB(tlimod,	t_krcvudata,		nomod_zero);
    636 	NO_UNLOAD_STUB(tlimod,	t_ksndudata,		nomod_zero);
    637 	NO_UNLOAD_STUB(tlimod,	t_kalloc,		nomod_zero);
    638 	NO_UNLOAD_STUB(tlimod,	t_kbind,		nomod_zero);
    639 	NO_UNLOAD_STUB(tlimod,	t_kclose,		nomod_zero);
    640 	NO_UNLOAD_STUB(tlimod,	t_kspoll,		nomod_zero);
    641 	NO_UNLOAD_STUB(tlimod,	t_kfree,		nomod_zero);
    642 	END_MODULE(tlimod);
    643 #endif
    644 
    645 /*
    646  * Stubs for kernel RPC module
    647  *   XXX currently we never allow this to unload
    648  */
    649 #ifndef RPC_MODULE
    650 	MODULE(rpcmod,strmod);
    651 	NO_UNLOAD_STUB(rpcmod,	clnt_tli_kcreate,	nomod_minus_one);
    652 	NO_UNLOAD_STUB(rpcmod,	svc_tli_kcreate,	nomod_minus_one);
    653 	NO_UNLOAD_STUB(rpcmod,	bindresvport,		nomod_minus_one);
    654 	NO_UNLOAD_STUB(rpcmod, rdma_register_mod,	nomod_minus_one);
    655 	NO_UNLOAD_STUB(rpcmod, rdma_unregister_mod,	nomod_minus_one);
    656 	NO_UNLOAD_STUB(rpcmod, svc_queuereq,		nomod_minus_one);
    657 	NO_UNLOAD_STUB(rpcmod, clist_add,		nomod_minus_one);
    658 	END_MODULE(rpcmod);
    659 #endif
    660 
    661 /*
    662  * Stubs for des
    663  */
    664 #ifndef DES_MODULE
    665 	MODULE(des,misc);
    666 	STUB(des, cbc_crypt, 	 	nomod_zero);
    667 	STUB(des, ecb_crypt, 		nomod_zero);
    668 	STUB(des, _des_crypt,		nomod_zero);
    669 	END_MODULE(des);
    670 #endif
    671 
    672 /*
    673  * Stubs for procfs. A non-unloadable module.
    674  */
    675 #ifndef PROC_MODULE
    676 	MODULE(procfs,fs);
    677 	NO_UNLOAD_STUB(procfs, prfree,		nomod_zero);
    678 	NO_UNLOAD_STUB(procfs, prexit,		nomod_zero);
    679 	NO_UNLOAD_STUB(procfs, prlwpfree,	nomod_zero);
    680 	NO_UNLOAD_STUB(procfs, prlwpexit,	nomod_zero);
    681 	NO_UNLOAD_STUB(procfs, prinvalidate,	nomod_zero);
    682 	NO_UNLOAD_STUB(procfs, prnsegs,		nomod_zero);
    683 	NO_UNLOAD_STUB(procfs, prgetcred,	nomod_zero);
    684 	NO_UNLOAD_STUB(procfs, prgetpriv,	nomod_zero);
    685 	NO_UNLOAD_STUB(procfs, prgetprivsize,	nomod_zero);
    686 	NO_UNLOAD_STUB(procfs, prgetstatus,	nomod_zero);
    687 	NO_UNLOAD_STUB(procfs, prgetlwpstatus,	nomod_zero);
    688 	NO_UNLOAD_STUB(procfs, prgetpsinfo,	nomod_zero);
    689 	NO_UNLOAD_STUB(procfs, prgetlwpsinfo,	nomod_zero);
    690 	NO_UNLOAD_STUB(procfs, oprgetstatus,	nomod_zero);
    691 	NO_UNLOAD_STUB(procfs, oprgetpsinfo,	nomod_zero);
    692 #ifdef _SYSCALL32_IMPL
    693 	NO_UNLOAD_STUB(procfs, prgetstatus32,	nomod_zero);
    694 	NO_UNLOAD_STUB(procfs, prgetlwpstatus32, nomod_zero);
    695 	NO_UNLOAD_STUB(procfs, prgetpsinfo32,	nomod_zero);
    696 	NO_UNLOAD_STUB(procfs, prgetlwpsinfo32,	nomod_zero);
    697 	NO_UNLOAD_STUB(procfs, oprgetstatus32,	nomod_zero);
    698 	NO_UNLOAD_STUB(procfs, oprgetpsinfo32,	nomod_zero);
    699 #endif	/* _SYSCALL32_IMPL */
    700 	NO_UNLOAD_STUB(procfs, prnotify,	nomod_zero);
    701 	NO_UNLOAD_STUB(procfs, prexecstart,	nomod_zero);
    702 	NO_UNLOAD_STUB(procfs, prexecend,	nomod_zero);
    703 	NO_UNLOAD_STUB(procfs, prrelvm,		nomod_zero);
    704 	NO_UNLOAD_STUB(procfs, prbarrier,	nomod_zero);
    705 	NO_UNLOAD_STUB(procfs, estimate_msacct,	nomod_zero);
    706 	NO_UNLOAD_STUB(procfs, pr_getprot,	nomod_zero);
    707 	NO_UNLOAD_STUB(procfs, pr_getprot_done,	nomod_zero);
    708 	NO_UNLOAD_STUB(procfs, pr_getsegsize,	nomod_zero);
    709 	NO_UNLOAD_STUB(procfs, pr_isobject,	nomod_zero);
    710 	NO_UNLOAD_STUB(procfs, pr_isself,	nomod_zero);
    711 	NO_UNLOAD_STUB(procfs, pr_allstopped,	nomod_zero);
    712 	NO_UNLOAD_STUB(procfs, pr_free_watched_pages, nomod_zero);
    713 	END_MODULE(procfs);
    714 #endif
    715 
    716 /*
    717  * Stubs for fifofs
    718  */
    719 #ifndef FIFO_MODULE
    720 	MODULE(fifofs,fs);
    721 	STUB(fifofs, fifovp,      	0);
    722 	STUB(fifofs, fifo_getinfo,	0);
    723 	STUB(fifofs, fifo_vfastoff,	0);
    724 	END_MODULE(fifofs);
    725 #endif
    726 
    727 /*
    728  * Stubs for ufs
    729  *
    730  * This is needed to support the old quotactl system call.
    731  * When the old sysent stuff goes away, this will need to be revisited.
    732  */
    733 #ifndef UFS_MODULE
    734 	MODULE(ufs,fs);
    735 	STUB(ufs, quotactl, nomod_minus_one);
    736 	END_MODULE(ufs);
    737 #endif
    738 
    739 /*
    740  * Stubs for zfs
    741  */
    742 #ifndef ZFS_MODULE
    743 	MODULE(zfs,fs);
    744 	STUB(zfs, spa_boot_init, nomod_minus_one);
    745 	END_MODULE(zfs);
    746 #endif
    747 
    748 /*
    749  * Stubs for dcfs
    750  */
    751 #ifndef DCFS_MODULE
    752 	MODULE(dcfs,fs);
    753 	STUB(dcfs, decompvp, 0);
    754 	END_MODULE(dcfs);
    755 #endif
    756 
    757 /*
    758  * Stubs for namefs
    759  */
    760 #ifndef NAMEFS_MODULE
    761 	MODULE(namefs,fs);
    762 	STUB(namefs, nm_unmountall, 	0);
    763 	END_MODULE(namefs);
    764 #endif
    765 
    766 /*
    767  * Stubs for sysdc
    768  */
    769 #ifndef SDC_MODULE
    770 	MODULE(SDC,sched);
    771 	NO_UNLOAD_STUB(SDC, sysdc_thread_enter,		nomod_zero);
    772 	END_MODULE(SDC);
    773 #endif
    774 
    775 /*
    776  * Stubs for ts_dptbl
    777  */
    778 #ifndef TS_DPTBL_MODULE
    779 	MODULE(TS_DPTBL,sched);
    780 	STUB(TS_DPTBL, ts_getdptbl,		0);
    781 	STUB(TS_DPTBL, ts_getkmdpris,		0);
    782 	STUB(TS_DPTBL, ts_getmaxumdpri,	0);
    783 	END_MODULE(TS_DPTBL);
    784 #endif
    785 
    786 /*
    787  * Stubs for rt_dptbl
    788  */
    789 #ifndef RT_DPTBL_MODULE
    790 	MODULE(RT_DPTBL,sched);
    791 	STUB(RT_DPTBL, rt_getdptbl,		0);
    792 	END_MODULE(RT_DPTBL);
    793 #endif
    794 
    795 /*
    796  * Stubs for ia_dptbl
    797  */
    798 #ifndef IA_DPTBL_MODULE
    799 	MODULE(IA_DPTBL,sched);
    800 	STUB(IA_DPTBL, ia_getdptbl,		nomod_zero);
    801 	STUB(IA_DPTBL, ia_getkmdpris,		nomod_zero);
    802 	STUB(IA_DPTBL, ia_getmaxumdpri,	nomod_zero);
    803 	END_MODULE(IA_DPTBL);
    804 #endif
    805 
    806 /*
    807  * Stubs for FSS scheduler
    808  */
    809 #ifndef FSS_MODULE
    810 	MODULE(FSS,sched);
    811 	WSTUB(FSS, fss_allocbuf,		nomod_zero);
    812 	WSTUB(FSS, fss_freebuf,			nomod_zero);
    813 	WSTUB(FSS, fss_changeproj,		nomod_zero);
    814 	WSTUB(FSS, fss_changepset,		nomod_zero);
    815 	END_MODULE(FSS);
    816 #endif
    817 
    818 /*
    819  * Stubs for fx_dptbl
    820  */
    821 #ifndef FX_DPTBL_MODULE
    822 	MODULE(FX_DPTBL,sched);
    823 	STUB(FX_DPTBL, fx_getdptbl,		0);
    824 	STUB(FX_DPTBL, fx_getmaxumdpri,		0);
    825 	END_MODULE(FX_DPTBL);
    826 #endif
    827 
    828 /*
    829  * Stubs for bootdev
    830  */
    831 #ifndef BOOTDEV_MODULE
    832 	MODULE(bootdev,misc);
    833 	STUB(bootdev, i_promname_to_devname, 0);
    834 	STUB(bootdev, i_convert_boot_device_name, 0);
    835 	END_MODULE(bootdev);
    836 #endif
    837 
    838 /*
    839  * stubs for strplumb...
    840  */
    841 #ifndef STRPLUMB_MODULE
    842 	MODULE(strplumb,misc);
    843 	STUB(strplumb, strplumb,     0);
    844 	STUB(strplumb, strplumb_load, 0);
    845 	STUB(strplumb, strplumb_get_netdev_path, 0);
    846 	END_MODULE(strplumb);
    847 #endif
    848 
    849 /*
    850  * Stubs for console configuration module
    851  */
    852 #ifndef CONSCONFIG_MODULE
    853 	MODULE(consconfig,misc);
    854 	STUB(consconfig, consconfig,	0);
    855 	STUB(consconfig, consconfig_get_usb_kb_path,	0);
    856 	STUB(consconfig, consconfig_get_usb_ms_path,	0);
    857 	STUB(consconfig, consconfig_get_plat_fbpath,	0);
    858 	STUB(consconfig, consconfig_console_is_ready,	0);
    859 	END_MODULE(consconfig);
    860 #endif
    861 
    862 /*
    863  * Stubs for accounting.
    864  */
    865 #ifndef SYSACCT_MODULE
    866 	MODULE(sysacct,sys);
    867 	WSTUB(sysacct, acct,  		nomod_zero);
    868 	WSTUB(sysacct, acct_fs_in_use, 	nomod_zero);
    869 	END_MODULE(sysacct);
    870 #endif
    871 
    872 /*
    873  * Stubs for semaphore routines. sem.c
    874  */
    875 #ifndef SEMSYS_MODULE
    876 	MODULE(semsys,sys);
    877 	WSTUB(semsys, semexit,		nomod_zero);
    878 	END_MODULE(semsys);
    879 #endif
    880 
    881 /*
    882  * Stubs for shmem routines. shm.c
    883  */
    884 #ifndef SHMSYS_MODULE
    885 	MODULE(shmsys,sys);
    886 	WSTUB(shmsys, shmexit,		nomod_zero);
    887 	WSTUB(shmsys, shmfork,		nomod_zero);
    888 	WSTUB(shmsys, shmgetid,		nomod_minus_one);
    889 	END_MODULE(shmsys);
    890 #endif
    891 
    892 /*
    893  * Stubs for doors
    894  */
    895 #ifndef DOOR_MODULE
    896 	MODULE(doorfs,sys);
    897 	WSTUB(doorfs, door_slam,			nomod_zero);
    898 	WSTUB(doorfs, door_exit,			nomod_zero);
    899 	WSTUB(doorfs, door_revoke_all,			nomod_zero);
    900 	WSTUB(doorfs, door_fork,			nomod_zero);
    901 	NO_UNLOAD_STUB(doorfs, door_upcall,		nomod_einval);
    902 	NO_UNLOAD_STUB(doorfs, door_ki_create,		nomod_einval);
    903 	NO_UNLOAD_STUB(doorfs, door_ki_open,		nomod_einval);
    904 	NO_UNLOAD_STUB(doorfs, door_ki_lookup,		nomod_zero);
    905 	WSTUB(doorfs, door_ki_upcall,			nomod_einval);
    906 	WSTUB(doorfs, door_ki_upcall_limited,		nomod_einval);
    907 	WSTUB(doorfs, door_ki_hold,			nomod_zero);
    908 	WSTUB(doorfs, door_ki_rele,			nomod_zero);
    909 	WSTUB(doorfs, door_ki_info,			nomod_einval);
    910 	END_MODULE(doorfs);
    911 #endif
    912 
    913 /*
    914  * Stubs for MD5
    915  */
    916 #ifndef MD5_MODULE
    917 	MODULE(md5,misc);
    918 	WSTUB(md5, MD5Init,		nomod_zero);
    919 	WSTUB(md5, MD5Update,		nomod_zero);
    920 	WSTUB(md5, MD5Final,		nomod_zero);
    921 	END_MODULE(md5);
    922 #endif
    923 
    924 /*
    925  * Stubs for idmap
    926  */
    927 #ifndef IDMAP_MODULE
    928 	MODULE(idmap,misc);
    929 	STUB(idmap, kidmap_batch_getgidbysid,	nomod_zero);
    930 	STUB(idmap, kidmap_batch_getpidbysid,	nomod_zero);
    931 	STUB(idmap, kidmap_batch_getsidbygid,	nomod_zero);
    932 	STUB(idmap, kidmap_batch_getsidbyuid,	nomod_zero);
    933 	STUB(idmap, kidmap_batch_getuidbysid,	nomod_zero);
    934 	STUB(idmap, kidmap_get_create,		nomod_zero);
    935 	STUB(idmap, kidmap_get_destroy,		nomod_zero);
    936 	STUB(idmap, kidmap_get_mappings,	nomod_zero);
    937 	STUB(idmap, kidmap_getgidbysid,		nomod_zero);
    938 	STUB(idmap, kidmap_getpidbysid,		nomod_zero);
    939 	STUB(idmap, kidmap_getsidbygid,		nomod_zero);
    940 	STUB(idmap, kidmap_getsidbyuid,		nomod_zero);
    941 	STUB(idmap, kidmap_getuidbysid,		nomod_zero);
    942 	STUB(idmap, idmap_get_door,		nomod_einval);
    943 	STUB(idmap, idmap_unreg_dh,		nomod_einval);
    944 	STUB(idmap, idmap_reg_dh,		nomod_einval);
    945 	STUB(idmap, idmap_purge_cache,		nomod_einval);
    946 	END_MODULE(idmap);
    947 #endif
    948 
    949 /*
    950  * Stubs for auditing.
    951  */
    952 #ifndef C2AUDIT_MODULE
    953 	MODULE(c2audit,sys);
    954 	STUB(c2audit,  audit_init,			nomod_zero);
    955 	STUB(c2audit,  _auditsys,			nomod_zero);
    956 	NO_UNLOAD_STUB(c2audit, audit_free,		nomod_zero);
    957 	NO_UNLOAD_STUB(c2audit, audit_start, 		nomod_zero);
    958 	NO_UNLOAD_STUB(c2audit, audit_finish,		nomod_zero);
    959 	NO_UNLOAD_STUB(c2audit, audit_newproc,		nomod_zero);
    960 	NO_UNLOAD_STUB(c2audit, audit_pfree,		nomod_zero);
    961 	NO_UNLOAD_STUB(c2audit, audit_thread_free,	nomod_zero);
    962 	NO_UNLOAD_STUB(c2audit, audit_thread_create,	nomod_zero);
    963 	NO_UNLOAD_STUB(c2audit, audit_falloc,		nomod_zero);
    964 	NO_UNLOAD_STUB(c2audit, audit_unfalloc,		nomod_zero);
    965 	NO_UNLOAD_STUB(c2audit, audit_closef,		nomod_zero);
    966 	NO_UNLOAD_STUB(c2audit, audit_copen,		nomod_zero);
    967 	NO_UNLOAD_STUB(c2audit, audit_core_start,	nomod_zero);
    968 	NO_UNLOAD_STUB(c2audit, audit_core_finish,	nomod_zero);
    969 	NO_UNLOAD_STUB(c2audit, audit_stropen,		nomod_zero);
    970 	NO_UNLOAD_STUB(c2audit, audit_strclose,		nomod_zero);
    971 	NO_UNLOAD_STUB(c2audit, audit_strioctl,		nomod_zero);
    972 	NO_UNLOAD_STUB(c2audit, audit_strputmsg,	nomod_zero);
    973 	NO_UNLOAD_STUB(c2audit, audit_c2_revoke,	nomod_zero);
    974 	NO_UNLOAD_STUB(c2audit, audit_savepath,		nomod_zero);
    975 	NO_UNLOAD_STUB(c2audit, audit_anchorpath,	nomod_zero);
    976 	NO_UNLOAD_STUB(c2audit, audit_addcomponent,	nomod_zero);
    977 	NO_UNLOAD_STUB(c2audit, audit_exit,		nomod_zero);
    978 	NO_UNLOAD_STUB(c2audit, audit_exec,		nomod_zero);
    979 	NO_UNLOAD_STUB(c2audit, audit_symlink,		nomod_zero);
    980 	NO_UNLOAD_STUB(c2audit, audit_symlink_create,	nomod_zero);
    981 	NO_UNLOAD_STUB(c2audit, audit_vncreate_start,	nomod_zero);
    982 	NO_UNLOAD_STUB(c2audit, audit_vncreate_finish,	nomod_zero);
    983 	NO_UNLOAD_STUB(c2audit, audit_enterprom,	nomod_zero);
    984 	NO_UNLOAD_STUB(c2audit, audit_exitprom,		nomod_zero);
    985 	NO_UNLOAD_STUB(c2audit, audit_chdirec,		nomod_zero);
    986 	NO_UNLOAD_STUB(c2audit, audit_getf,		nomod_zero);
    987 	NO_UNLOAD_STUB(c2audit, audit_setf,		nomod_zero);
    988 	NO_UNLOAD_STUB(c2audit, audit_sock,		nomod_zero);
    989 	NO_UNLOAD_STUB(c2audit, audit_strgetmsg,	nomod_zero);
    990 	NO_UNLOAD_STUB(c2audit, audit_ipc,		nomod_zero);
    991 	NO_UNLOAD_STUB(c2audit, audit_ipcget,		nomod_zero);
    992 	NO_UNLOAD_STUB(c2audit, audit_lookupname,	nomod_zero);
    993 	NO_UNLOAD_STUB(c2audit, audit_pathcomp,		nomod_zero);
    994 	NO_UNLOAD_STUB(c2audit, audit_fdsend,		nomod_zero);
    995 	NO_UNLOAD_STUB(c2audit, audit_fdrecv,		nomod_zero);
    996 	NO_UNLOAD_STUB(c2audit, audit_priv,		nomod_zero);
    997 	NO_UNLOAD_STUB(c2audit, audit_setppriv,		nomod_zero);
    998 	NO_UNLOAD_STUB(c2audit, audit_devpolicy,	nomod_zero);
    999 	NO_UNLOAD_STUB(c2audit, audit_setfsat_path,	nomod_zero);
   1000 	NO_UNLOAD_STUB(c2audit, audit_cryptoadm,	nomod_zero);
   1001 	NO_UNLOAD_STUB(c2audit, audit_update_context,	nomod_zero);
   1002 	NO_UNLOAD_STUB(c2audit, audit_kssl,		nomod_zero);
   1003 	NO_UNLOAD_STUB(c2audit, audit_pf_policy,	nomod_zero);
   1004 	END_MODULE(c2audit);
   1005 #endif
   1006 
   1007 /*
   1008  * Stubs for kernel rpc security service module
   1009  */
   1010 #ifndef RPCSEC_MODULE
   1011 	MODULE(rpcsec,misc);
   1012 	NO_UNLOAD_STUB(rpcsec, sec_clnt_revoke,		nomod_zero);
   1013 	NO_UNLOAD_STUB(rpcsec, authkern_create,		nomod_zero);
   1014 	NO_UNLOAD_STUB(rpcsec, sec_svc_msg,		nomod_zero);
   1015 	NO_UNLOAD_STUB(rpcsec, sec_svc_control,		nomod_zero);
   1016 	END_MODULE(rpcsec);
   1017 #endif
   1018 
   1019 /*
   1020  * Stubs for rpc RPCSEC_GSS security service module
   1021  */
   1022 #ifndef RPCSEC_GSS_MODULE
   1023 	MODULE(rpcsec_gss,misc);
   1024 	NO_UNLOAD_STUB(rpcsec_gss, __svcrpcsec_gss,		nomod_zero);
   1025 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_getcred,		nomod_zero);
   1026 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_callback,	nomod_zero);
   1027 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secget,		nomod_zero);
   1028 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secfree,		nomod_zero);
   1029 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_seccreate,		nomod_zero);
   1030 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_defaults,	nomod_zero);
   1031 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_revauth,		nomod_zero);
   1032 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secpurge,		nomod_zero);
   1033 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_cleanup,		nomod_zero);
   1034 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_get_versions,	nomod_zero);
   1035 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_max_data_length,	nomod_zero);
   1036 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_svc_max_data_length,	nomod_zero);
   1037 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_get_service_type,	nomod_zero);
   1038 	END_MODULE(rpcsec_gss);
   1039 #endif
   1040 
   1041 /*
   1042  * Stubs for PCI configurator module (misc/pcicfg).
   1043  */
   1044 #ifndef PCICFG_MODULE
   1045 	MODULE(pcicfg,misc);
   1046 	STUB(pcicfg, pcicfg_configure, 0);
   1047 	STUB(pcicfg, pcicfg_unconfigure, 0);
   1048 	END_MODULE(pcicfg);
   1049 #endif
   1050 
   1051 /*
   1052  * Stubs for pcieb nexus driver.
   1053  */
   1054 #ifndef PCIEB_MODULE
   1055 	MODULE(pcieb,drv);
   1056 	STUB(pcieb, pcieb_intel_error_workaround, 0);
   1057 	END_MODULE(pcieb);
   1058 #endif
   1059 
   1060 #ifndef IWSCN_MODULE
   1061 	MODULE(iwscn,drv);
   1062 	STUB(iwscn, srpop, 0);
   1063 	END_MODULE(iwscn);
   1064 #endif
   1065 
   1066 /*
   1067  * Stubs for checkpoint-resume module
   1068  */
   1069 #ifndef CPR_MODULE
   1070         MODULE(cpr,misc);
   1071         STUB(cpr, cpr, 0);
   1072         END_MODULE(cpr);
   1073 #endif
   1074 
   1075 /*
   1076  * Stubs for kernel probes (tnf module).  Not unloadable.
   1077  */
   1078 #ifndef TNF_MODULE
   1079 	MODULE(tnf,drv);
   1080 	NO_UNLOAD_STUB(tnf, tnf_ref32_1,	nomod_zero);
   1081 	NO_UNLOAD_STUB(tnf, tnf_string_1,	nomod_zero);
   1082 	NO_UNLOAD_STUB(tnf, tnf_opaque_array_1,	nomod_zero);
   1083 	NO_UNLOAD_STUB(tnf, tnf_struct_tag_1,	nomod_zero);
   1084 	NO_UNLOAD_STUB(tnf, tnf_allocate,	nomod_zero);
   1085 	END_MODULE(tnf);
   1086 #endif
   1087 
   1088 /*
   1089  * Stubs for i86hvm bootstraping
   1090  */
   1091 #ifndef HVM_BOOTSTRAP
   1092 	MODULE(hvm_bootstrap,misc);
   1093 	NO_UNLOAD_STUB(hvm_bootstrap, hvmboot_rootconf, nomod_zero);
   1094 	END_MODULE(hvm_bootstrap);
   1095 #endif
   1096 
   1097 /*
   1098  * Clustering: stubs for bootstrapping.
   1099  */
   1100 #ifndef CL_BOOTSTRAP
   1101 	MODULE(cl_bootstrap,misc);
   1102 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_modload, nomod_minus_one);
   1103 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_loadrootmodules, nomod_zero);
   1104 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_rootconf, nomod_zero);
   1105 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_mountroot, nomod_zero);
   1106 	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_init, nomod_zero);
   1107 	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_get_nodeid, nomod_zero);
   1108 	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_maximum_nodeid, nomod_zero);
   1109 	NO_UNLOAD_WSTUB(cl_bootstrap, cluster, nomod_zero);
   1110 	END_MODULE(cl_bootstrap);
   1111 #endif
   1112 
   1113 /*
   1114  * Clustering: stubs for cluster infrastructure.
   1115  */
   1116 #ifndef CL_COMM_MODULE
   1117 	MODULE(cl_comm,misc);
   1118 	NO_UNLOAD_STUB(cl_comm, cladmin, nomod_minus_one);
   1119 	END_MODULE(cl_comm);
   1120 #endif
   1121 
   1122 /*
   1123  * Clustering: stubs for global file system operations.
   1124  */
   1125 #ifndef PXFS_MODULE
   1126 	MODULE(pxfs,fs);
   1127 	NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_read, nomod_zero);
   1128 	NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_write, nomod_zero);
   1129 	NO_UNLOAD_WSTUB(pxfs, cl_flk_state_transition_notify, nomod_zero);
   1130 	END_MODULE(pxfs);
   1131 #endif
   1132 
   1133 /*
   1134  * Stubs for kernel cryptographic framework module (misc/kcf).
   1135  */
   1136 #ifndef KCF_MODULE
   1137 	MODULE(kcf,misc);
   1138 	NO_UNLOAD_STUB(kcf, crypto_mech2id, nomod_minus_one);
   1139 	NO_UNLOAD_STUB(kcf, crypto_register_provider, nomod_minus_one);
   1140 	NO_UNLOAD_STUB(kcf, crypto_unregister_provider, nomod_minus_one);
   1141 	NO_UNLOAD_STUB(kcf, crypto_provider_notification, nomod_minus_one);
   1142 	NO_UNLOAD_STUB(kcf, crypto_op_notification, nomod_minus_one);
   1143 	NO_UNLOAD_STUB(kcf, crypto_kmflag, nomod_minus_one);
   1144 	NO_UNLOAD_STUB(kcf, crypto_digest, nomod_minus_one);
   1145 	NO_UNLOAD_STUB(kcf, crypto_digest_prov, nomod_minus_one);
   1146 	NO_UNLOAD_STUB(kcf, crypto_digest_init, nomod_minus_one);
   1147 	NO_UNLOAD_STUB(kcf, crypto_digest_init_prov, nomod_minus_one);
   1148 	NO_UNLOAD_STUB(kcf, crypto_digest_update, nomod_minus_one);
   1149 	NO_UNLOAD_STUB(kcf, crypto_digest_final, nomod_minus_one);
   1150 	NO_UNLOAD_STUB(kcf, crypto_digest_key_prov, nomod_minus_one);
   1151 	NO_UNLOAD_STUB(kcf, crypto_encrypt, nomod_minus_one);
   1152 	NO_UNLOAD_STUB(kcf, crypto_encrypt_prov, nomod_minus_one);
   1153 	NO_UNLOAD_STUB(kcf, crypto_encrypt_init, nomod_minus_one);
   1154 	NO_UNLOAD_STUB(kcf, crypto_encrypt_init_prov, nomod_minus_one);
   1155 	NO_UNLOAD_STUB(kcf, crypto_encrypt_update, nomod_minus_one);
   1156 	NO_UNLOAD_STUB(kcf, crypto_encrypt_final, nomod_minus_one);
   1157 	NO_UNLOAD_STUB(kcf, crypto_decrypt, nomod_minus_one);
   1158 	NO_UNLOAD_STUB(kcf, crypto_decrypt_prov, nomod_minus_one);
   1159 	NO_UNLOAD_STUB(kcf, crypto_decrypt_init, nomod_minus_one);
   1160 	NO_UNLOAD_STUB(kcf, crypto_decrypt_init_prov, nomod_minus_one);
   1161 	NO_UNLOAD_STUB(kcf, crypto_decrypt_update, nomod_minus_one);
   1162 	NO_UNLOAD_STUB(kcf, crypto_decrypt_final, nomod_minus_one);
   1163 	NO_UNLOAD_STUB(kcf, crypto_get_all_mech_info, nomod_minus_one);
   1164 	NO_UNLOAD_STUB(kcf, crypto_key_check, nomod_minus_one);
   1165 	NO_UNLOAD_STUB(kcf, crypto_key_check_prov, nomod_minus_one);
   1166 	NO_UNLOAD_STUB(kcf, crypto_key_derive, nomod_minus_one);
   1167 	NO_UNLOAD_STUB(kcf, crypto_key_generate, nomod_minus_one);
   1168 	NO_UNLOAD_STUB(kcf, crypto_key_generate_pair, nomod_minus_one);
   1169 	NO_UNLOAD_STUB(kcf, crypto_key_unwrap, nomod_minus_one);
   1170 	NO_UNLOAD_STUB(kcf, crypto_key_wrap, nomod_minus_one);
   1171 	NO_UNLOAD_STUB(kcf, crypto_mac, nomod_minus_one);
   1172 	NO_UNLOAD_STUB(kcf, crypto_mac_prov, nomod_minus_one);
   1173 	NO_UNLOAD_STUB(kcf, crypto_mac_verify, nomod_minus_one);
   1174 	NO_UNLOAD_STUB(kcf, crypto_mac_verify_prov, nomod_minus_one);
   1175 	NO_UNLOAD_STUB(kcf, crypto_mac_init, nomod_minus_one);
   1176 	NO_UNLOAD_STUB(kcf, crypto_mac_init_prov, nomod_minus_one);
   1177 	NO_UNLOAD_STUB(kcf, crypto_mac_update, nomod_minus_one);
   1178 	NO_UNLOAD_STUB(kcf, crypto_mac_final, nomod_minus_one);
   1179 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt, nomod_minus_one);
   1180 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_prov, nomod_minus_one);
   1181 	NO_UNLOAD_STUB(kcf, crypto_mac_verify_decrypt, nomod_minus_one);
   1182 	NO_UNLOAD_STUB(kcf, crypto_mac_verify_decrypt_prov, nomod_minus_one);
   1183 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_init, nomod_minus_one);
   1184 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_init_prov, nomod_minus_one);
   1185 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_update, nomod_minus_one);
   1186 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_final, nomod_minus_one);
   1187 	NO_UNLOAD_STUB(kcf, crypto_object_copy, nomod_minus_one);
   1188 	NO_UNLOAD_STUB(kcf, crypto_object_create, nomod_minus_one);
   1189 	NO_UNLOAD_STUB(kcf, crypto_object_destroy, nomod_minus_one);
   1190 	NO_UNLOAD_STUB(kcf, crypto_object_find_final, nomod_minus_one);
   1191 	NO_UNLOAD_STUB(kcf, crypto_object_find_init, nomod_minus_one);
   1192 	NO_UNLOAD_STUB(kcf, crypto_object_find, nomod_minus_one);
   1193 	NO_UNLOAD_STUB(kcf, crypto_object_get_attribute_value, nomod_minus_one);
   1194 	NO_UNLOAD_STUB(kcf, crypto_object_get_size, nomod_minus_one);
   1195 	NO_UNLOAD_STUB(kcf, crypto_object_set_attribute_value, nomod_minus_one);
   1196 	NO_UNLOAD_STUB(kcf, crypto_session_close, nomod_minus_one);
   1197 	NO_UNLOAD_STUB(kcf, crypto_session_login, nomod_minus_one);
   1198 	NO_UNLOAD_STUB(kcf, crypto_session_logout, nomod_minus_one);
   1199 	NO_UNLOAD_STUB(kcf, crypto_session_open, nomod_minus_one);
   1200 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac, nomod_minus_one);
   1201 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_prov, nomod_minus_one);
   1202 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_init, nomod_minus_one);
   1203 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_init_prov, nomod_minus_one);
   1204 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_update, nomod_minus_one);
   1205 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_final, nomod_minus_one);
   1206 	NO_UNLOAD_STUB(kcf, crypto_create_ctx_template, nomod_minus_one);
   1207 	NO_UNLOAD_STUB(kcf, crypto_destroy_ctx_template, nomod_minus_one);
   1208 	NO_UNLOAD_STUB(kcf, crypto_get_mech_list, nomod_minus_one);
   1209 	NO_UNLOAD_STUB(kcf, crypto_free_mech_list, nomod_minus_one);
   1210 	NO_UNLOAD_STUB(kcf, crypto_cancel_req, nomod_minus_one);
   1211 	NO_UNLOAD_STUB(kcf, crypto_cancel_ctx, nomod_minus_one);
   1212 	NO_UNLOAD_STUB(kcf, crypto_bufcall_alloc, nomod_minus_one);
   1213 	NO_UNLOAD_STUB(kcf, crypto_bufcall_free, nomod_minus_one);
   1214 	NO_UNLOAD_STUB(kcf, crypto_bufcall, nomod_minus_one);
   1215 	NO_UNLOAD_STUB(kcf, crypto_unbufcall, nomod_minus_one);
   1216 	NO_UNLOAD_STUB(kcf, crypto_notify_events, nomod_minus_one);
   1217 	NO_UNLOAD_STUB(kcf, crypto_unnotify_events, nomod_minus_one);
   1218 	NO_UNLOAD_STUB(kcf, crypto_get_provider, nomod_minus_one);
   1219 	NO_UNLOAD_STUB(kcf, crypto_get_provinfo, nomod_minus_one);
   1220 	NO_UNLOAD_STUB(kcf, crypto_release_provider, nomod_minus_one);
   1221 	NO_UNLOAD_STUB(kcf, crypto_sign, nomod_minus_one);
   1222 	NO_UNLOAD_STUB(kcf, crypto_sign_prov, nomod_minus_one);
   1223 	NO_UNLOAD_STUB(kcf, crypto_sign_init, nomod_minus_one);
   1224 	NO_UNLOAD_STUB(kcf, crypto_sign_init_prov, nomod_minus_one);
   1225 	NO_UNLOAD_STUB(kcf, crypto_sign_update, nomod_minus_one);
   1226 	NO_UNLOAD_STUB(kcf, crypto_sign_final, nomod_minus_one);
   1227 	NO_UNLOAD_STUB(kcf, crypto_sign_recover, nomod_minus_one);
   1228 	NO_UNLOAD_STUB(kcf, crypto_sign_recover_prov, nomod_minus_one);
   1229 	NO_UNLOAD_STUB(kcf, crypto_sign_recover_init_prov, nomod_minus_one);
   1230 	NO_UNLOAD_STUB(kcf, crypto_verify, nomod_minus_one);
   1231 	NO_UNLOAD_STUB(kcf, crypto_verify_prov, nomod_minus_one);
   1232 	NO_UNLOAD_STUB(kcf, crypto_verify_init, nomod_minus_one);
   1233 	NO_UNLOAD_STUB(kcf, crypto_verify_init_prov, nomod_minus_one);
   1234 	NO_UNLOAD_STUB(kcf, crypto_verify_update, nomod_minus_one);
   1235 	NO_UNLOAD_STUB(kcf, crypto_verify_final, nomod_minus_one);
   1236 	NO_UNLOAD_STUB(kcf, crypto_verify_recover, nomod_minus_one);
   1237 	NO_UNLOAD_STUB(kcf, crypto_verify_recover_prov, nomod_minus_one);
   1238 	NO_UNLOAD_STUB(kcf, crypto_verify_recover_init_prov, nomod_minus_one);
   1239 	NO_UNLOAD_STUB(kcf, random_add_entropy, nomod_minus_one);
   1240 	NO_UNLOAD_STUB(kcf, random_add_pseudo_entropy, nomod_minus_one);
   1241 	NO_UNLOAD_STUB(kcf, random_get_bytes, nomod_minus_one);
   1242 	NO_UNLOAD_STUB(kcf, random_get_pseudo_bytes, nomod_minus_one);
   1243 	END_MODULE(kcf);
   1244 #endif
   1245 
   1246 /*
   1247  * Stubs for sha1. A non-unloadable module.
   1248  */
   1249 #ifndef SHA1_MODULE
   1250 	MODULE(sha1,crypto);
   1251 	NO_UNLOAD_STUB(sha1, SHA1Init, nomod_void);
   1252 	NO_UNLOAD_STUB(sha1, SHA1Update, nomod_void);
   1253 	NO_UNLOAD_STUB(sha1, SHA1Final, nomod_void);
   1254 	END_MODULE(sha1);
   1255 #endif
   1256 
   1257 /*
   1258  * The following stubs are used by the mac module.
   1259  * Since dld already depends on mac, these
   1260  * stubs are needed to avoid circular dependencies.
   1261  */
   1262 #ifndef	DLD_MODULE
   1263 	MODULE(dld,drv);
   1264 	STUB(dld, dld_init_ops, nomod_void);
   1265 	STUB(dld, dld_fini_ops, nomod_void);
   1266 	STUB(dld, dld_devt_to_instance, nomod_minus_one);
   1267 	STUB(dld, dld_autopush, nomod_minus_one);
   1268 	STUB(dld, dld_ioc_register, nomod_einval);
   1269 	STUB(dld, dld_ioc_unregister, nomod_void);
   1270 	END_MODULE(dld);
   1271 #endif
   1272 
   1273 /*
   1274  * The following stubs are used by the mac module.
   1275  * Since dls already depends on mac, these
   1276  * stubs are needed to avoid circular dependencies.
   1277  */
   1278 #ifndef DLS_MODULE
   1279 	MODULE(dls,misc);
   1280 	STUB(dls, dls_devnet_mac, nomod_zero);
   1281 	STUB(dls, dls_devnet_hold_tmp, nomod_einval);
   1282 	STUB(dls, dls_devnet_rele_tmp, nomod_void);
   1283 	STUB(dls, dls_devnet_hold_link, nomod_einval);
   1284 	STUB(dls, dls_devnet_rele_link, nomod_void);
   1285 	STUB(dls, dls_devnet_prop_task_wait, nomod_void);
   1286 	STUB(dls, dls_mgmt_get_linkid, nomod_einval);
   1287 	STUB(dls, dls_devnet_macname2linkid, nomod_einval);
   1288 	STUB(dls, dls_mgmt_get_linkinfo, nomod_einval);
   1289         END_MODULE(dls);
   1290 #endif
   1291 
   1292 #ifndef	SOFTMAC_MODULE
   1293 	MODULE(softmac,drv);
   1294 	STUB(softmac, softmac_hold_device, nomod_einval);
   1295 	STUB(softmac, softmac_rele_device, nomod_void);
   1296 	STUB(softmac, softmac_recreate, nomod_void);
   1297 	END_MODULE(softmac);
   1298 #endif
   1299 
   1300 #ifndef IPTUN_MODULE
   1301 	MODULE(iptun,drv);
   1302 	STUB(iptun, iptun_create, nomod_einval);
   1303 	STUB(iptun, iptun_delete, nomod_einval);
   1304 	STUB(iptun, iptun_set_policy, nomod_void) ;
   1305 	END_MODULE(iptun);
   1306 #endif
   1307 
   1308 /*
   1309  * Stubs for kssl, the kernel SSL proxy
   1310  */
   1311 #ifndef KSSL_MODULE
   1312 	MODULE(kssl,drv);
   1313 	NO_UNLOAD_STUB(kssl, kssl_check_proxy, nomod_zero);
   1314 	NO_UNLOAD_STUB(kssl, kssl_handle_mblk, nomod_zero);
   1315 	NO_UNLOAD_STUB(kssl, kssl_input, nomod_zero);
   1316 	NO_UNLOAD_STUB(kssl, kssl_build_record, nomod_zero);
   1317 	NO_UNLOAD_STUB(kssl, kssl_hold_ent, nomod_void);
   1318 	NO_UNLOAD_STUB(kssl, kssl_release_ent, nomod_void);
   1319 	NO_UNLOAD_STUB(kssl, kssl_find_fallback, nomod_zero);
   1320 	NO_UNLOAD_STUB(kssl, kssl_init_context, nomod_zero);
   1321 	NO_UNLOAD_STUB(kssl, kssl_hold_ctx, nomod_void);
   1322 	NO_UNLOAD_STUB(kssl, kssl_release_ctx, nomod_void);
   1323 	END_MODULE(kssl);
   1324 #endif
   1325 
   1326 /*
   1327  * Stubs for dcopy, for Intel IOAT KAPIs
   1328  */
   1329 #ifndef DCOPY_MODULE
   1330 	MODULE(dcopy,misc);
   1331 	NO_UNLOAD_STUB(dcopy, dcopy_query, nomod_minus_one);
   1332 	NO_UNLOAD_STUB(dcopy, dcopy_query_channel, nomod_minus_one);
   1333 	NO_UNLOAD_STUB(dcopy, dcopy_alloc, nomod_minus_one);
   1334 	NO_UNLOAD_STUB(dcopy, dcopy_free, nomod_minus_one);
   1335 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_alloc, nomod_minus_one);
   1336 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_free, nomod_void);
   1337 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_post, nomod_minus_one);
   1338 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_poll, nomod_minus_one);
   1339 	END_MODULE(dcopy);
   1340 #endif
   1341 
   1342 /*
   1343  * Stubs for acpica
   1344  */
   1345 #ifndef ACPICA_MODULE
   1346 	MODULE(acpica,misc);
   1347 	NO_UNLOAD_STUB(acpica, AcpiOsReadPort, nomod_minus_one) ;
   1348 	NO_UNLOAD_STUB(acpica, AcpiOsWritePort, nomod_minus_one) ;
   1349 	NO_UNLOAD_STUB(acpica, AcpiInstallNotifyHandler, nomod_minus_one) ;
   1350 	NO_UNLOAD_STUB(acpica, AcpiRemoveNotifyHandler, nomod_minus_one) ;
   1351 	NO_UNLOAD_STUB(acpica, AcpiEvaluateObject, nomod_minus_one) ;
   1352 	NO_UNLOAD_STUB(acpica, AcpiEvaluateObjectTyped, nomod_minus_one) ;
   1353 	NO_UNLOAD_STUB(acpica, AcpiWriteBitRegister, nomod_minus_one) ;
   1354 	NO_UNLOAD_STUB(acpica, AcpiReadBitRegister, nomod_minus_one) ;
   1355 	NO_UNLOAD_STUB(acpica, AcpiOsFree, nomod_minus_one) ;
   1356 	NO_UNLOAD_STUB(acpica, acpica_get_handle_cpu, nomod_minus_one) ;
   1357 	NO_UNLOAD_STUB(acpica, acpica_get_global_FADT, nomod_minus_one) ;
   1358 	NO_UNLOAD_STUB(acpica, acpica_write_cpupm_capabilities,
   1359 	    nomod_minus_one)		       ;
   1360 	NO_UNLOAD_STUB(acpica, __acpi_wbinvd, nomod_minus_one) ;
   1361 	NO_UNLOAD_STUB(acpica, acpi_reset_system, nomod_minus_one) ;
   1362 	END_MODULE(acpica);
   1363 #endif
   1364 
   1365 #ifndef IPNET_MODULE
   1366 	MODULE(ipnet,drv);
   1367 	STUB(ipnet, ipnet_if_getdev, nomod_zero);
   1368 	STUB(ipnet, ipnet_walk_if, nomod_zero);
   1369 	END_MODULE(ipnet);
   1370 #endif
   1371 
   1372 #ifndef IOMMULIB_MODULE
   1373 	MODULE(iommulib,misc);
   1374 	STUB(iommulib, iommulib_nex_close, nomod_void);
   1375         END_MODULE(iommulib);
   1376 #endif
   1377 
   1378 /*
   1379  * Stubs for kernel socket, for iscsi
   1380  */
   1381 #ifndef KSOCKET_MODULE
   1382 	MODULE(ksocket, misc);
   1383 	NO_UNLOAD_STUB(ksocket, ksocket_setsockopt, nomod_minus_one);
   1384 	NO_UNLOAD_STUB(ksocket, ksocket_getsockopt, nomod_minus_one);
   1385 	NO_UNLOAD_STUB(ksocket, ksocket_getpeername, nomod_minus_one);
   1386 	NO_UNLOAD_STUB(ksocket, ksocket_getsockname, nomod_minus_one);
   1387 	NO_UNLOAD_STUB(ksocket, ksocket_socket, nomod_minus_one);
   1388 	NO_UNLOAD_STUB(ksocket, ksocket_bind, nomod_minus_one);
   1389 	NO_UNLOAD_STUB(ksocket, ksocket_listen, nomod_minus_one);
   1390 	NO_UNLOAD_STUB(ksocket, ksocket_accept, nomod_minus_one);
   1391 	NO_UNLOAD_STUB(ksocket, ksocket_connect, nomod_minus_one);
   1392 	NO_UNLOAD_STUB(ksocket, ksocket_recv, nomod_minus_one);
   1393 	NO_UNLOAD_STUB(ksocket, ksocket_recvfrom, nomod_minus_one);
   1394 	NO_UNLOAD_STUB(ksocket, ksocket_recvmsg, nomod_minus_one);
   1395 	NO_UNLOAD_STUB(ksocket, ksocket_send, nomod_minus_one);
   1396 	NO_UNLOAD_STUB(ksocket, ksocket_sendto, nomod_minus_one);
   1397 	NO_UNLOAD_STUB(ksocket, ksocket_sendmsg, nomod_minus_one);
   1398 	NO_UNLOAD_STUB(ksocket, ksocket_ioctl, nomod_minus_one);
   1399 	NO_UNLOAD_STUB(ksocket, ksocket_setcallbacks, nomod_minus_one);
   1400 	NO_UNLOAD_STUB(ksocket, ksocket_hold, nomod_minus_one);
   1401 	NO_UNLOAD_STUB(ksocket, ksocket_rele, nomod_minus_one);
   1402 	NO_UNLOAD_STUB(ksocket, ksocket_shutdown, nomod_minus_one);
   1403 	NO_UNLOAD_STUB(ksocket, ksocket_close, nomod_minus_one);
   1404 	END_MODULE(ksocket);
   1405 #endif
   1406 
   1407 / this is just a marker for the area of text that contains stubs
   1408 
   1409 	ENTRY_NP(stubs_end)
   1410 	nop
   1411 
   1412 #endif	/* lint */
   1413