1/*
2 * Copyright (c) 2004, Apple Computer, Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1.  Redistributions of source code must retain the above copyright
8 *     notice, this list of conditions and the following disclaimer.
9 * 2.  Redistributions in binary form must reproduce the above copyright
10 *     notice, this list of conditions and the following disclaimer in the
11 *     documentation and/or other materials provided with the distribution.
12 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
13 *     its contributors may be used to endorse or promote products derived
14 *     from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR
20 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
25 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28/*
29 *  Copyright (c) 1994 by Sun Microsystems, Inc
30 */
31
32#ifndef	_MACH_SPARC_THREAD_STATUS_H_
33#define	_MACH_SPARC_THREAD_STATUS_H_
34
35#include <architecture/sparc/reg.h>
36
37/*
38 *	sparc_thread_state_regs
39 *		This is the structure that is exported
40 *      to user threads for use in set/get status
41 *      calls.  This structure should never change.
42 *		The "local" and "in" registers of the corresponding
43 *		register window	are saved in the stack frame pointed
44 *		to by sp -> %o6.
45 *
46 *	sparc_thread_state_fpu
47 *		This is the structure that is exported
48 *      to user threads for use in set/get FPU register
49 *		status calls.
50 *
51 */
52
53#define	SPARC_THREAD_STATE_REGS	1
54
55struct sparc_thread_state_regs {
56	struct regs regs;
57};
58
59#define	SPARC_THREAD_STATE_REGS_COUNT \
60			(sizeof(struct sparc_thread_state_regs) / sizeof(int))
61
62/*
63 *	Floating point unit registers
64 */
65
66#define SPARC_THREAD_STATE_FPU	2
67
68
69struct sparc_thread_state_fpu {
70	struct fpu fpu;	/* floating point registers/status */
71};
72
73#define	SPARC_THREAD_STATE_FPU_COUNT \
74			(sizeof(struct sparc_thread_state_fpu) / sizeof(int))
75
76#define	SPARC_THREAD_STATE_FLAVOR_COUNT  2
77
78#define SPARC_THREAD_STATE_FLAVOR_LIST_COUNT         \
79	( SPARC_THREAD_STATE_FLAVOR_COUNT *              \
80		(sizeof (struct thread_state_flavor) / sizeof(int)))
81
82#endif	/* _MACH_SPARC_THREAD_STATUS_H_ */
83