/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#include "SYS.h"
/*
* weak aliases for public interfaces
*/
/*
* Offsets within struct door_results
*/
/*
* All of the syscalls except door_return() follow the same pattern. The
* subcode goes in %o5, after all of the other arguments.
*/
SYSTRAP_RVAL1(door); \
SYSCERROR; \
RET; \
/*
* int
* __door_return(
* void *data_ptr,
* size_t data_size, (in bytes)
* door_return_desc_t *door_ptr, (holds returned desc info)
* caddr_t stack_base,
* size_t stack_size)
*/
/*
* On return, we're serving a door_call. Our stack looks like this:
*
* descriptors (if any)
* data (if any)
* struct door_results
* MINFRAME
* sp ->
*/
/*
* this is the last server thread - call creation func for more
*/
1:
/* Call the door server function now */
/* Exit the thread if we return here */
/* NOTREACHED */
2:
/*
* Error during door_return call. Repark the thread in the kernel if
* the error code is EINTR (or ERESTART) and this lwp is still part
* of the same process.
*/
be,a 3f
3:
#ifdef __sparcv9
#else
#endif