The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/compat/ia32/ia32_reg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 1990 The Regents of the University of California.
    3  * All rights reserved.
    4  *
    5  * This code is derived from software contributed to Berkeley by
    6  * William Jolitz.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  * 4. Neither the name of the University nor the names of its contributors
   17  *    may be used to endorse or promote products derived from this software
   18  *    without specific prior written permission.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   30  * SUCH DAMAGE.
   31  *
   32  *      from: @(#)reg.h 5.5 (Berkeley) 1/18/91
   33  * $FreeBSD$
   34  */
   35 
   36 #ifndef _COMPAT_IA32_IA32_REG_H_
   37 #define _COMPAT_IA32_IA32_REG_H_
   38 
   39 /*
   40  * Register set accessible via /proc/$pid/regs and PT_{SET,GET}REGS.
   41  */
   42 struct reg32 {
   43         unsigned int    r_fs;
   44         unsigned int    r_es;
   45         unsigned int    r_ds;
   46         unsigned int    r_edi;
   47         unsigned int    r_esi;
   48         unsigned int    r_ebp;
   49         unsigned int    r_isp;
   50         unsigned int    r_ebx;
   51         unsigned int    r_edx;
   52         unsigned int    r_ecx;
   53         unsigned int    r_eax;
   54         unsigned int    r_trapno;
   55         unsigned int    r_err;
   56         unsigned int    r_eip;
   57         unsigned int    r_cs;
   58         unsigned int    r_eflags;
   59         unsigned int    r_esp;
   60         unsigned int    r_ss;
   61         unsigned int    r_gs;
   62 };
   63 
   64 /*
   65  * Register set accessible via /proc/$pid/fpregs.
   66  */
   67 struct fpreg32 {
   68         unsigned int    fpr_env[7];
   69         unsigned char   fpr_acc[8][10];
   70         unsigned int    fpr_ex_sw;
   71         unsigned char   fpr_pad[64];
   72 };
   73 
   74 /*
   75  * Register set accessible via /proc/$pid/dbregs.
   76  */
   77 struct dbreg32 {
   78         unsigned int  dr[8];    /* debug registers */
   79 };
   80 
   81 /* Environment information of floating point unit */
   82 struct env87 {
   83         int     en_cw;          /* control word (16bits) */
   84         int     en_sw;          /* status word (16bits) */
   85         int     en_tw;          /* tag word (16bits) */
   86         int     en_fip;         /* floating point instruction pointer */
   87         u_short en_fcs;         /* floating code segment selector */
   88         u_short en_opcode;      /* opcode last executed (11 bits ) */
   89         int     en_foo;         /* floating operand offset */
   90         int     en_fos;         /* floating operand segment selector */
   91 };
   92 
   93 #ifdef __ia64__
   94 /* Layout of an x87 fpu register (amd64 gets this elsewhere) */
   95 struct fpacc87 {
   96         u_char  fp_bytes[10];
   97 };
   98 #endif
   99 
  100 /* Floating point context */
  101 struct save87 {
  102         struct  env87 sv_env;   /* floating point control/status */
  103         struct  fpacc87 sv_ac[8];       /* accumulator contents, 0-7 */
  104         u_char  sv_pad0[4];     /* padding for (now unused) saved status word */
  105         u_char  sv_pad[64];     /* padding; used by emulators */
  106 };
  107 
  108 
  109 /*
  110  * Alternative layouts for <sys/procfs.h>
  111  * Used in core dumps, the reason for this file existing.
  112  */
  113 struct prstatus32 {
  114         int     pr_version;
  115         u_int   pr_statussz;
  116         u_int   pr_gregsetsz;
  117         u_int   pr_fpregsetsz;
  118         int     pr_osreldate;
  119         int     pr_cursig;
  120         pid_t   pr_pid;
  121         struct reg32 pr_reg;
  122 };
  123 
  124 struct prpsinfo32 {
  125         int     pr_version;
  126         u_int   pr_psinfosz;
  127         char    pr_fname[PRFNAMESZ+1];
  128         char    pr_psargs[PRARGSZ+1];
  129 };
  130 
  131 /*
  132  * Wrappers and converters.
  133  */
  134 int     fill_regs32(struct thread *, struct reg32 *);
  135 int     set_regs32(struct thread *, struct reg32 *);
  136 int     fill_fpregs32(struct thread *, struct fpreg32 *);
  137 int     set_fpregs32(struct thread *, struct fpreg32 *);
  138 int     fill_dbregs32(struct thread *, struct dbreg32 *);
  139 int     set_dbregs32(struct thread *, struct dbreg32 *);
  140 
  141 #endif /* !_COMPAT_IA32_IA32_REG_H_ */

Cache object: 1b715b199efecaaa0d0ce8468ed07b31


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.