akaros/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/x86_64/bits/sigcontext.h
<<
>>
Prefs
   1/* Copyright (C) 2002 Free Software Foundation, Inc.
   2   This file is part of the GNU C Library.
   3
   4   The GNU C Library is free software; you can redistribute it and/or
   5   modify it under the terms of the GNU Lesser General Public
   6   License as published by the Free Software Foundation; either
   7   version 2.1 of the License, or (at your option) any later version.
   8
   9   The GNU C Library is distributed in the hope that it will be useful,
  10   but WITHOUT ANY WARRANTY; without even the implied warranty of
  11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12   Lesser General Public License for more details.
  13
  14   You should have received a copy of the GNU Lesser General Public
  15   License along with the GNU C Library; if not, write to the Free
  16   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17   02111-1307 USA.  */
  18
  19#ifndef _BITS_SIGCONTEXT_H
  20#define _BITS_SIGCONTEXT_H  1
  21
  22#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  23# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  24#endif
  25
  26#include <bits/wordsize.h>
  27
  28struct _fpreg
  29{
  30  unsigned short significand[4];
  31  unsigned short exponent;
  32};
  33
  34struct _fpxreg
  35{
  36  unsigned short significand[4];
  37  unsigned short exponent;
  38  unsigned short padding[3];
  39};
  40
  41struct _xmmreg
  42{
  43  __uint32_t    element[4];
  44};
  45
  46
  47
  48#if __WORDSIZE == 32
  49
  50struct _fpstate
  51{
  52  /* Regular FPU environment.  */
  53  __uint32_t    cw;
  54  __uint32_t            sw;
  55  __uint32_t            tag;
  56  __uint32_t            ipoff;
  57  __uint32_t            cssel;
  58  __uint32_t            dataoff;
  59  __uint32_t            datasel;
  60  struct _fpreg _st[8];
  61  unsigned short status;
  62  unsigned short magic;
  63
  64  /* FXSR FPU environment.  */
  65  __uint32_t            _fxsr_env[6];
  66  __uint32_t            mxcsr;
  67  __uint32_t            reserved;
  68  struct _fpxreg        _fxsr_st[8];
  69  struct _xmmreg        _xmm[8];
  70  __uint32_t            padding[56];
  71};
  72
  73#ifndef sigcontext_struct
  74/* Kernel headers before 2.1.1 define a struct sigcontext_struct, but
  75   we need sigcontext.  Some packages have come to rely on
  76   sigcontext_struct being defined on 32-bit x86, so define this for
  77   their benefit.  */
  78# define sigcontext_struct sigcontext
  79#endif
  80
  81struct sigcontext
  82{
  83  unsigned short gs, __gsh;
  84  unsigned short fs, __fsh;
  85  unsigned short es, __esh;
  86  unsigned short ds, __dsh;
  87  unsigned long edi;
  88  unsigned long esi;
  89  unsigned long ebp;
  90  unsigned long esp;
  91  unsigned long ebx;
  92  unsigned long edx;
  93  unsigned long ecx;
  94  unsigned long eax;
  95  unsigned long trapno;
  96  unsigned long err;
  97  unsigned long eip;
  98  unsigned short cs, __csh;
  99  unsigned long eflags;
 100  unsigned long esp_at_signal;
 101  unsigned short ss, __ssh;
 102  struct _fpstate * fpstate;
 103  unsigned long oldmask;
 104  unsigned long cr2;
 105};
 106
 107#else /* __WORDSIZE == 64 */
 108
 109struct _fpstate
 110{
 111  /* FPU environment matching the 64-bit FXSAVE layout.  */
 112  __uint16_t            cwd;
 113  __uint16_t            swd;
 114  __uint16_t            ftw;
 115  __uint16_t            fop;
 116  __uint64_t            rip;
 117  __uint64_t            rdp;
 118  __uint32_t            mxcsr;
 119  __uint32_t            mxcr_mask;
 120  struct _fpxreg        _st[8];
 121  struct _xmmreg        _xmm[16];
 122  __uint32_t            padding[24];
 123};
 124
 125struct sigcontext
 126{
 127  unsigned long r8;
 128  unsigned long r9;
 129  unsigned long r10;
 130  unsigned long r11;
 131  unsigned long r12;
 132  unsigned long r13;
 133  unsigned long r14;
 134  unsigned long r15;
 135  unsigned long rdi;
 136  unsigned long rsi;
 137  unsigned long rbp;
 138  unsigned long rbx;
 139  unsigned long rdx;
 140  unsigned long rax;
 141  unsigned long rcx;
 142  unsigned long rsp;
 143  unsigned long rip;
 144  unsigned long eflags;
 145  unsigned short cs;
 146  unsigned short gs;
 147  unsigned short fs;
 148  unsigned short __pad0;
 149  unsigned long err;
 150  unsigned long trapno;
 151  unsigned long oldmask;
 152  unsigned long cr2;
 153  struct _fpstate * fpstate;
 154  unsigned long __reserved1 [8];
 155};
 156
 157#endif /* __WORDSIZE == 64 */
 158
 159#endif /* _BITS_SIGCONTEXT_H */
 160