/*
* 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 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#include <string.h>
#if defined(__amd64)
#include <ieeefp.h>
#endif
#include "P32ton.h"
{
if (d != (dev32_t)-1L)
}
{
#ifdef _LP64
if (d == PRNODEV) {
return (PRNODEV32);
} else {
return (PRNODEV32);
}
#else
return ((dev32_t)d);
#endif
}
#ifdef _LP64
void
{
}
void
{
}
void
{
}
void
{
/*
* The absolute minimum content is si_signo and si_code.
*/
return;
/*
* A siginfo generated by user level is structured
* differently from one generated by the kernel.
*/
if (SI_FROMUSER(src)) {
}
return;
}
default:
break;
case SIGCLD:
break;
case SIGSEGV:
case SIGBUS:
case SIGILL:
case SIGTRAP:
case SIGFPE:
case SIGEMT:
break;
case SIGPOLL:
case SIGXFSZ:
break;
case SIGPROF:
break;
}
}
void
{
/*
* This is a little sketchy: we have three types of values stored
* in an auxv (long, void *, and void (*)()) so the only sign-extension
* issue is with the long. We could case on all possible AT_* types,
* but this seems silly since currently none of the types which use
* a_un.a_val actually use negative numbers as a value. For this
* reason, it seems simpler to just do an unsigned expansion for now.
*/
}
#if defined(__sparc)
void
{
int i;
for (i = 0; i < 8; i++) {
}
}
void
{
int i;
}
}
}
#endif /* __sparc */
void
{
#ifdef __amd64
#else
int i;
for (i = 0; i < NPRGREG; i++)
#endif
}
void
{
#if defined(__sparc)
int i;
for (i = 0; i < 32; i++)
/*
* We deliberately do not convert pr_qcnt or pr_q because it is a long-
* standing /proc bug that this information is not exported, and another
* bug further caused these values to be returned as uninitialized data
* when the 64-bit kernel exported them for a 32-bit process with en=0.
*/
int i;
dst64->mxcsr_mask = 0;
/*
* Converting from the tag field to the compressed fctw is easy.
* If the two tag bits are 3, then the register is empty and we
* clear the bit in fctw. Otherwise we set the bit.
*/
for (i = 0; i < 8; i++)
#else
#error "unrecognized ISA"
#endif
}
void
{
int i;
for (i = 0; i < PRSYSARGS; i++)
}
void
{
}
void
{
}
void
{
}
void
{
}
void
{
}
void
{
}
void
{
/*
* The absolute minimum content is si_signo and si_code.
*/
return;
/*
* A siginfo generated by user level is structured
* differently from one generated by the kernel.
*/
if (SI_FROMUSER(src)) {
}
return;
}
default:
break;
case SIGCLD:
break;
case SIGSEGV:
case SIGBUS:
case SIGILL:
case SIGTRAP:
case SIGFPE:
case SIGEMT:
break;
case SIGPOLL:
case SIGXFSZ:
break;
case SIGPROF:
break;
}
}
void
{
}
void
{
#ifdef __amd64
#else
int i;
for (i = 0; i < NPRGREG; i++)
#endif
}
void
{
#if defined(__sparc)
int i;
for (i = 0; i < 32; i++)
int i;
/*
* AMD64 stores the tag in a compressed form. It is
* necessary to extract the original 2-bit tag value.
* See AMD64 Architecture Programmer's Manual Volume 2:
* System Programming, Chapter 11.
*/
for (i = 0; i < 8; i++) {
/*
* Recall that we need to use the current TOP-of-stack value to
* associate the _st[] index back to a physical register number,
* since tag word indices are physical register numbers. Then
* to get the tag value, we shift over two bits for each tag
* index, and then grab the bottom two bits.
*/
/*
* Union for overlaying _fpreg structure on to quad-precision
* floating-point value (long double).
*/
union {
long double ld;
} fpru;
if (tag_fctw == 0) {
} else if (exp == 0) {
else
} else if (exp == 0x7fff) {
tag_value = 0; /* valid */
} else {
}
}
#else
#error "unrecognized ISA"
#endif
}
void
{
int i;
for (i = 0; i < PRSYSARGS; i++)
}
void
{
}
void
{
}
void
{
}
#endif /* _LP64 */