/* Copyright (C) 2004 Hewlett-Packard Co.
     Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.

This file is part of libunwind.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
#ifndef unw_ucontext_i_h
#define unw_ucontext_i_h

#if defined __linux__
#define UC_MCONTEXT_GREGS_R8    0x28
#define UC_MCONTEXT_GREGS_R9    0x30
#define UC_MCONTEXT_GREGS_R10   0x38
#define UC_MCONTEXT_GREGS_R11   0x40
#define UC_MCONTEXT_GREGS_R12   0x48
#define UC_MCONTEXT_GREGS_R13   0x50
#define UC_MCONTEXT_GREGS_R14   0x58
#define UC_MCONTEXT_GREGS_R15   0x60
#define UC_MCONTEXT_GREGS_RDI   0x68
#define UC_MCONTEXT_GREGS_RSI   0x70
#define UC_MCONTEXT_GREGS_RBP   0x78
#define UC_MCONTEXT_GREGS_RBX   0x80
#define UC_MCONTEXT_GREGS_RDX   0x88
#define UC_MCONTEXT_GREGS_RAX   0x90
#define UC_MCONTEXT_GREGS_RCX   0x98
#define UC_MCONTEXT_GREGS_RSP   0xa0
#define UC_MCONTEXT_GREGS_RIP   0xa8
#define UC_MCONTEXT_FPREGS_PTR  0x1a8
#define UC_MCONTEXT_FPREGS_MEM  0xe0
#define UC_SIGMASK              0x128
#define FPREGS_OFFSET_MXCSR     0x18
#elif defined __FreeBSD__
#define UC_SIGMASK              0x0
#define UC_MCONTEXT_GREGS_RDI   0x18
#define UC_MCONTEXT_GREGS_RSI   0x20
#define UC_MCONTEXT_GREGS_RDX   0x28
#define UC_MCONTEXT_GREGS_RCX   0x30
#define UC_MCONTEXT_GREGS_R8    0x38
#define UC_MCONTEXT_GREGS_R9    0x40
#define UC_MCONTEXT_GREGS_RAX   0x48
#define UC_MCONTEXT_GREGS_RBX   0x50
#define UC_MCONTEXT_GREGS_RBP   0x58
#define UC_MCONTEXT_GREGS_R10   0x60
#define UC_MCONTEXT_GREGS_R11   0x68
#define UC_MCONTEXT_GREGS_R12   0x70
#define UC_MCONTEXT_GREGS_R13   0x78
#define UC_MCONTEXT_GREGS_R14   0x80
#define UC_MCONTEXT_GREGS_R15   0x88
#define UC_MCONTEXT_FS          0x94
#define UC_MCONTEXT_GS          0x96
#define UC_MCONTEXT_FLAGS       0xa0
#define UC_MCONTEXT_ES          0xa4
#define UC_MCONTEXT_DS          0xa6
#define UC_MCONTEXT_GREGS_RIP   0xb0
#define UC_MCONTEXT_CS          0xb8
#define UC_MCONTEXT_RFLAGS      0xc0
#define UC_MCONTEXT_GREGS_RSP   0xc8
#define UC_MCONTEXT_SS          0xd0
#define UC_MCONTEXT_MC_LEN      0xd8
#define UC_MCONTEXT_FPFORMAT    0xe0
#define UC_MCONTEXT_OWNEDFP     0xe8
#define UC_MCONTEXT_FPSTATE     0xf0
#define UC_MCONTEXT_FPOWNED_FPU 0x20001
#define UC_MCONTEXT_FPFMT_XMM   0x10002
#define UC_MCONTEXT_MC_LEN_VAL  0x320
#elif defined(__QNX__)
#define UC_SIGMASK              0x0
#define UC_MCONTEXT_GREGS_R8    0x48
#define UC_MCONTEXT_GREGS_R9    0x50
#define UC_MCONTEXT_GREGS_R10   0x40
#define UC_MCONTEXT_GREGS_R11   0x78
#define UC_MCONTEXT_GREGS_R12   0x80
#define UC_MCONTEXT_GREGS_R13   0x88
#define UC_MCONTEXT_GREGS_R14   0x90
#define UC_MCONTEXT_GREGS_R15   0x98
#define UC_MCONTEXT_GREGS_RDI   0x28
#define UC_MCONTEXT_GREGS_RSI   0x30
#define UC_MCONTEXT_GREGS_RBP   0x68
#define UC_MCONTEXT_GREGS_RBX   0x60
#define UC_MCONTEXT_GREGS_RDX   0x38
#define UC_MCONTEXT_GREGS_RAX   0x58
#define UC_MCONTEXT_GREGS_RCX   0x70
#define UC_MCONTEXT_GREGS_RSP   0xb8
#define UC_MCONTEXT_GREGS_RIP   0xa0
#elif defined __sun
#define UC_MCONTEXT_GREGS_R8	0x78
#define UC_MCONTEXT_GREGS_R9	0x70
#define UC_MCONTEXT_GREGS_R10	0x68
#define UC_MCONTEXT_GREGS_R11	0x60
#define UC_MCONTEXT_GREGS_R12	0x58
#define UC_MCONTEXT_GREGS_R13	0x50
#define UC_MCONTEXT_GREGS_R14	0x48
#define UC_MCONTEXT_GREGS_R15	0x40
#define UC_MCONTEXT_GREGS_RDI	0x80
#define UC_MCONTEXT_GREGS_RSI	0x88
#define UC_MCONTEXT_GREGS_RBP	0x90
#define UC_MCONTEXT_GREGS_RBX	0x98
#define UC_MCONTEXT_GREGS_RDX	0xa0
#define UC_MCONTEXT_GREGS_RAX	0xb0
#define UC_MCONTEXT_GREGS_RCX	0xa8
#define UC_MCONTEXT_GREGS_RSP	0xe0
#define UC_MCONTEXT_GREGS_RIP	0xc8
#define UC_MCONTEXT_FPREGS_MEM	0x120
#define FPREGS_OFFSET_MXCSR	0x18

#endif

#if defined(__CET__)
# include <cet.h>
#else
# define _CET_ENDBR
#endif

#endif /* unw_ucontext_i_h */
