1211608Srpaulo/* 2211608Srpaulo * CDDL HEADER START 3211608Srpaulo * 4211608Srpaulo * The contents of this file are subject to the terms of the 5211608Srpaulo * Common Development and Distribution License, Version 1.0 only 6211608Srpaulo * (the "License"). You may not use this file except in compliance 7211608Srpaulo * with the License. 8211608Srpaulo * 9211608Srpaulo * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10211608Srpaulo * or http://www.opensolaris.org/os/licensing. 11211608Srpaulo * See the License for the specific language governing permissions 12211608Srpaulo * and limitations under the License. 13211608Srpaulo * 14211608Srpaulo * When distributing Covered Code, include this CDDL HEADER in each 15211608Srpaulo * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16211608Srpaulo * If applicable, add the following below this CDDL HEADER, with the 17211608Srpaulo * fields enclosed by brackets "[]" replaced with your own identifying 18211608Srpaulo * information: Portions Copyright [yyyy] [name of copyright owner] 19211608Srpaulo * 20211608Srpaulo * CDDL HEADER END 21211608Srpaulo * 22211608Srpaulo * $FreeBSD$ 23211608Srpaulo */ 24211608Srpaulo/* 25211608Srpaulo * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 26211608Srpaulo * Use is subject to license terms. 27211608Srpaulo */ 28211608Srpaulo 29211608Srpaulo/* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */ 30211608Srpaulo 31211608Srpaulo/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 32211608Srpaulo/* All Rights Reserved */ 33211608Srpaulo 34211608Srpaulo#ifndef _REGSET_H 35211608Srpaulo#define _REGSET_H 36211608Srpaulo 37211608Srpaulo/* 38211608Srpaulo * #pragma ident "@(#)regset.h 1.11 05/06/08 SMI" 39211608Srpaulo */ 40211608Srpaulo 41211608Srpaulo#ifdef __cplusplus 42211608Srpauloextern "C" { 43211608Srpaulo#endif 44211608Srpaulo 45211608Srpaulo/* 46211608Srpaulo * The names and offsets defined here should be specified by the 47211608Srpaulo * AMD64 ABI suppl. 48211608Srpaulo * 49211608Srpaulo * We make fsbase and gsbase part of the lwp context (since they're 50211608Srpaulo * the only way to access the full 64-bit address range via the segment 51211608Srpaulo * registers) and thus belong here too. However we treat them as 52211608Srpaulo * read-only; if %fs or %gs are updated, the results of the descriptor 53211608Srpaulo * table lookup that those updates implicitly cause will be reflected 54211608Srpaulo * in the corresponding fsbase and/or gsbase values the next time the 55211608Srpaulo * context can be inspected. However it is NOT possible to override 56211608Srpaulo * the fsbase/gsbase settings via this interface. 57211608Srpaulo * 58211608Srpaulo * Direct modification of the base registers (thus overriding the 59211608Srpaulo * descriptor table base address) can be achieved with _lwp_setprivate. 60211608Srpaulo */ 61211608Srpaulo 62211608Srpaulo#define REG_GSBASE 27 63211608Srpaulo#define REG_FSBASE 26 64211608Srpaulo#define REG_DS 25 65211608Srpaulo#define REG_ES 24 66211608Srpaulo 67211608Srpaulo#define REG_GS 23 68211608Srpaulo#define REG_FS 22 69211608Srpaulo#define REG_SS 21 70211608Srpaulo#define REG_RSP 20 71211608Srpaulo#define REG_RFL 19 72211608Srpaulo#define REG_CS 18 73211608Srpaulo#define REG_RIP 17 74211608Srpaulo#define REG_ERR 16 75211608Srpaulo#define REG_TRAPNO 15 76211608Srpaulo#define REG_RAX 14 77211608Srpaulo#define REG_RCX 13 78211608Srpaulo#define REG_RDX 12 79211608Srpaulo#define REG_RBX 11 80211608Srpaulo#define REG_RBP 10 81211608Srpaulo#define REG_RSI 9 82211608Srpaulo#define REG_RDI 8 83211608Srpaulo#define REG_R8 7 84211608Srpaulo#define REG_R9 6 85211608Srpaulo#define REG_R10 5 86211608Srpaulo#define REG_R11 4 87211608Srpaulo#define REG_R12 3 88211608Srpaulo#define REG_R13 2 89211608Srpaulo#define REG_R14 1 90211608Srpaulo#define REG_R15 0 91211608Srpaulo 92211608Srpaulo/* 93211608Srpaulo * The names and offsets defined here are specified by i386 ABI suppl. 94211608Srpaulo */ 95211608Srpaulo 96211608Srpaulo#define SS 18 /* only stored on a privilege transition */ 97211608Srpaulo#define UESP 17 /* only stored on a privilege transition */ 98211608Srpaulo#define EFL 16 99211608Srpaulo#define CS 15 100211608Srpaulo#define EIP 14 101211608Srpaulo#define ERR 13 102211608Srpaulo#define TRAPNO 12 103211608Srpaulo#define EAX 11 104211608Srpaulo#define ECX 10 105211608Srpaulo#define EDX 9 106211608Srpaulo#define EBX 8 107211608Srpaulo#define ESP 7 108211608Srpaulo#define EBP 6 109211608Srpaulo#define ESI 5 110211608Srpaulo#define EDI 4 111211608Srpaulo#define DS 3 112211608Srpaulo#define ES 2 113211608Srpaulo#define FS 1 114211608Srpaulo#define GS 0 115211608Srpaulo 116211608Srpaulo#define REG_PC EIP 117211608Srpaulo#define REG_FP EBP 118211608Srpaulo#define REG_SP UESP 119211608Srpaulo#define REG_PS EFL 120211608Srpaulo#define REG_R0 EAX 121211608Srpaulo#define REG_R1 EDX 122211608Srpaulo 123211608Srpaulo#ifdef __cplusplus 124211608Srpaulo} 125211608Srpaulo#endif 126211608Srpaulo 127211608Srpaulo#endif /* _REGSET_H */ 128