mach.h revision 2
33343a9777d8e80a7f03defc5f8479310dad1721meem/*
33343a9777d8e80a7f03defc5f8479310dad1721meem * CDDL HEADER START
33343a9777d8e80a7f03defc5f8479310dad1721meem *
33343a9777d8e80a7f03defc5f8479310dad1721meem * The contents of this file are subject to the terms of the
33343a9777d8e80a7f03defc5f8479310dad1721meem * Common Development and Distribution License, Version 1.0 only
33343a9777d8e80a7f03defc5f8479310dad1721meem * (the "License"). You may not use this file except in compliance
33343a9777d8e80a7f03defc5f8479310dad1721meem * with the License.
33343a9777d8e80a7f03defc5f8479310dad1721meem *
33343a9777d8e80a7f03defc5f8479310dad1721meem * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
33343a9777d8e80a7f03defc5f8479310dad1721meem * or http://www.opensolaris.org/os/licensing.
33343a9777d8e80a7f03defc5f8479310dad1721meem * See the License for the specific language governing permissions
33343a9777d8e80a7f03defc5f8479310dad1721meem * and limitations under the License.
33343a9777d8e80a7f03defc5f8479310dad1721meem *
33343a9777d8e80a7f03defc5f8479310dad1721meem * When distributing Covered Code, include this CDDL HEADER in each
33343a9777d8e80a7f03defc5f8479310dad1721meem * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
33343a9777d8e80a7f03defc5f8479310dad1721meem * If applicable, add the following below this CDDL HEADER, with the
33343a9777d8e80a7f03defc5f8479310dad1721meem * fields enclosed by brackets "[]" replaced with your own identifying
33343a9777d8e80a7f03defc5f8479310dad1721meem * information: Portions Copyright [yyyy] [name of copyright owner]
33343a9777d8e80a7f03defc5f8479310dad1721meem *
33343a9777d8e80a7f03defc5f8479310dad1721meem * CDDL HEADER END
8002d4117c1ea26aff1f16f584ae97bdbd5b21d5Sowmini Varadhan */
33343a9777d8e80a7f03defc5f8479310dad1721meem/*
33343a9777d8e80a7f03defc5f8479310dad1721meem * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
33343a9777d8e80a7f03defc5f8479310dad1721meem * Use is subject to license terms.
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng */
33343a9777d8e80a7f03defc5f8479310dad1721meem
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#ifndef _MACH_H
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define _MACH_H
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
8002d4117c1ea26aff1f16f584ae97bdbd5b21d5Sowmini Varadhan#pragma ident "%Z%%M% %I% %E% SMI"
8002d4117c1ea26aff1f16f584ae97bdbd5b21d5Sowmini Varadhan
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#ifdef __cplusplus
da14cebe459d3275048785f25bd869cb09b5307fEric Chengextern "C" {
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include <sys/reg.h>
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include <sys/types.h>
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#if defined(__sparc)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG0(regset) regset->lr_rego0
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG1(regset) regset->lr_rego1
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG2(regset) regset->lr_rego2
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG3(regset) regset->lr_rego3
33343a9777d8e80a7f03defc5f8479310dad1721meem#define GETARG4(regset) regset->lr_rego4
33343a9777d8e80a7f03defc5f8479310dad1721meem#define GETARG5(regset) regset->lr_rego5
33343a9777d8e80a7f03defc5f8479310dad1721meem
33343a9777d8e80a7f03defc5f8479310dad1721meem#define GETARG_6NUP(i, regset) (((ulong_t *)regset->lr_rego6)[23+i-6])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETFRAME(regset) regset->lr_rego6
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETPREVPC(regset) regset->lr_rego7
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#elif defined(__amd64)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG0(regset) regset->lr_rdi
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG1(regset) regset->lr_rsi
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG2(regset) regset->lr_rdx
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG3(regset) regset->lr_rcx
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG4(regset) regset->lr_r8
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG5(regset) regset->lr_r9
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG_6NUP(i, regset) (((ulong_t *)regset->lr_rsp)[i+1-6])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
33343a9777d8e80a7f03defc5f8479310dad1721meem#define GETFRAME(regset) (regset->lr_rbp)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETPREVPC(regset) (*(uintptr_t *)regset->lr_rsp)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
33343a9777d8e80a7f03defc5f8479310dad1721meem#elif defined(i386)
33343a9777d8e80a7f03defc5f8479310dad1721meem
33343a9777d8e80a7f03defc5f8479310dad1721meem#define GETARG0(regset) (((ulong_t *)regset->lr_esp)[1])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG1(regset) (((ulong_t *)regset->lr_esp)[2])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG2(regset) (((ulong_t *)regset->lr_esp)[3])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG3(regset) (((ulong_t *)regset->lr_esp)[4])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG4(regset) (((ulong_t *)regset->lr_esp)[5])
33343a9777d8e80a7f03defc5f8479310dad1721meem#define GETARG5(regset) (((ulong_t *)regset->lr_esp)[6])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETARG_6NUP(i, regset) (((ulong_t *)regset->lr_esp)[i+1])
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETFRAME(regset) (regset->lr_ebp)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define GETPREVPC(regset) (*(uintptr_t *)regset->lr_esp)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#else
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#error unsupported architecture!
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
33343a9777d8e80a7f03defc5f8479310dad1721meem
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#ifdef __cplusplus
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng}
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
33343a9777d8e80a7f03defc5f8479310dad1721meem
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif /* _MACH_H */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng