1/*
2 * Copyright 2002-2012 Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _ARCH_SIGNAL_H_
6#define _ARCH_SIGNAL_H_
7
8
9/*
10 * Architecture-specific structure passed to signal handlers
11 */
12
13#if __x86_64__
14
15
16struct fp_stack {
17	unsigned char		st0[10];
18	unsigned char		_reserved_42_47[6];
19	unsigned char		st1[10];
20	unsigned char		_reserved_58_63[6];
21	unsigned char		st2[10];
22	unsigned char		_reserved_74_79[6];
23	unsigned char		st3[10];
24	unsigned char		_reserved_90_95[6];
25	unsigned char		st4[10];
26	unsigned char		_reserved_106_111[6];
27	unsigned char		st5[10];
28	unsigned char		_reserved_122_127[6];
29	unsigned char		st6[10];
30	unsigned char		_reserved_138_143[6];
31	unsigned char		st7[10];
32	unsigned char		_reserved_154_159[6];
33};
34
35struct mmx_regs {
36	unsigned char		mm0[10];
37	unsigned char		_reserved_42_47[6];
38	unsigned char		mm1[10];
39	unsigned char		_reserved_58_63[6];
40	unsigned char		mm2[10];
41	unsigned char		_reserved_74_79[6];
42	unsigned char		mm3[10];
43	unsigned char		_reserved_90_95[6];
44	unsigned char		mm4[10];
45	unsigned char		_reserved_106_111[6];
46	unsigned char		mm5[10];
47	unsigned char		_reserved_122_127[6];
48	unsigned char		mm6[10];
49	unsigned char		_reserved_138_143[6];
50	unsigned char		mm7[10];
51	unsigned char		_reserved_154_159[6];
52};
53
54struct xmm_regs {
55	unsigned char		xmm0[16];
56	unsigned char		xmm1[16];
57	unsigned char		xmm2[16];
58	unsigned char		xmm3[16];
59	unsigned char		xmm4[16];
60	unsigned char		xmm5[16];
61	unsigned char		xmm6[16];
62	unsigned char		xmm7[16];
63	unsigned char		xmm8[16];
64	unsigned char		xmm9[16];
65	unsigned char		xmm10[16];
66	unsigned char		xmm11[16];
67	unsigned char		xmm12[16];
68	unsigned char		xmm13[16];
69	unsigned char		xmm14[16];
70	unsigned char		xmm15[16];
71};
72
73struct fpu_state {
74	unsigned short		control;
75	unsigned short		status;
76	unsigned short		tag;
77	unsigned short		opcode;
78	unsigned long		rip;
79	unsigned long		rdp;
80	unsigned int		mxcsr;
81	unsigned int		mscsr_mask;
82
83	union {
84		struct fp_stack	fp;
85		struct mmx_regs	mmx;
86	};
87
88	struct xmm_regs		xmm;
89	unsigned char		_reserved_416_511[96];
90};
91
92struct vregs {
93	unsigned long		rax;
94	unsigned long		rbx;
95	unsigned long		rcx;
96	unsigned long		rdx;
97	unsigned long		rdi;
98	unsigned long		rsi;
99	unsigned long		rbp;
100	unsigned long		r8;
101	unsigned long		r9;
102	unsigned long		r10;
103	unsigned long		r11;
104	unsigned long		r12;
105	unsigned long		r13;
106	unsigned long		r14;
107	unsigned long		r15;
108
109	unsigned long		rsp;
110	unsigned long		rip;
111	unsigned long		rflags;
112
113	struct fpu_state	fpu;
114};
115
116
117#endif /* __x86_64__ */
118
119#endif /* _ARCH_SIGNAL_H_ */
120