/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (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 1994-1998,2003 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#include <sys/ucontext.h>
#include <sys/privregs.h>
#include <sys/archsystm.h>
#include <sys/machsystm.h>
/*
* Association of extra register state with a struct ucontext is
* done by placing an xrs_t within the uc_mcontext filler area.
*
* The following routines provide an interface for this association.
*/
/*
* clear the struct ucontext extra register state pointer
*/
/* ARGSUSED */
void
{
}
/*
* indicate whether or not an extra register state
* pointer is associated with a struct ucontext
*/
/* ARGSUSED */
int
{
}
/*
* get the struct ucontext extra register state pointer field
*/
/* ARGSUSED */
{
return (NULL);
}
/*
* set the struct ucontext extra register state pointer field
*/
/* ARGSUSED */
void
{
}
#ifdef _SYSCALL32_IMPL
/* ARGSUSED */
void
{
}
/* ARGSUSED */
int
{
}
/* ARGSUSED */
{
return (0);
}
/* ARGSUSED */
void
{
}
#endif /* _SYSCALL32_IMPL */
/*
* Extra register state manipulation routines.
* NOTE: 'lwp' might not correspond to 'curthread' in any of the
* functions below since they are called from code in /proc to get
* or set the extra registers of another lwp.
*/
/*
* fill in the extra register state area specified with the
* specified lwp's non-floating-point extra register state
* information
*/
void
{
return;
}
/*
* fill in the extra register state area specified with the
* specified lwp's floating-point extra register state information
*/
void
{
return;
/*
* If we have an fpu and the current thread owns the fp
* context, flush fp registers into the pcb.
*/
#ifdef DEBUG
if (fpdispr) {
"with fp disabled!");
}
#endif /* DEBUG */
}
}
} else {
int i;
for (i = 0; i < 32; i++) /* Nan */
}
}
/*
* fill in the extra register state area specified with
* the specified lwp's extra register state information
*/
void
{
}
}
/*
* set the specified lwp's non-floating-point extra
* register state based on the specified input
*/
void
{
return;
#ifdef DEBUG
"xregs_setgregs: pr_type is %d and should be %d",
}
#endif /* DEBUG */
if (current) {
/*
* copy the args from the regs first
*/
(void) save_syscall_args();
}
if (current) {
/*
* This was called from a system call, but we
* do not want to return via the shared window;
* restoring the CPU context changes everything.
*/
}
}
/*
* set the specified lwp's floating-point extra
* register state based on the specified input
*/
void
{
return;
#ifdef DEBUG
"xregs_setfpregs: pr_type is %d and should be %d",
}
#endif /* DEBUG */
/*
* If not the current lwp then resume() will handle it
*/
/* force resume to reload fp regs */
return;
}
if (fpu_exists) {
#ifdef DEBUG
if (fpdispr) {
"with fp disabled!");
}
#endif /* DEBUG */
}
}
}
}
/*
* set the specified lwp's extra register
* state based on the specified input
*/
void
{
}
}
/*
* return the size of the extra register state
*/
int
{
return (0);
return (sizeof (prxregset_t));
}