2007-10-25 04:36:36 +04:00
|
|
|
/*
|
2012-07-19 22:11:40 +04:00
|
|
|
* Copyright 2002-2012 Haiku, Inc. All Rights Reserved.
|
2007-10-25 04:36:36 +04:00
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*/
|
|
|
|
#ifndef _ARCH_SIGNAL_H_
|
|
|
|
#define _ARCH_SIGNAL_H_
|
|
|
|
|
2010-11-04 00:46:47 +03:00
|
|
|
|
2007-10-25 04:36:36 +04:00
|
|
|
/*
|
|
|
|
* Architecture-specific structure passed to signal handlers
|
|
|
|
*/
|
|
|
|
|
|
|
|
#if __INTEL__
|
|
|
|
|
|
|
|
typedef struct packed_fp_stack {
|
|
|
|
unsigned char st0[10];
|
|
|
|
unsigned char st1[10];
|
|
|
|
unsigned char st2[10];
|
|
|
|
unsigned char st3[10];
|
|
|
|
unsigned char st4[10];
|
|
|
|
unsigned char st5[10];
|
|
|
|
unsigned char st6[10];
|
|
|
|
unsigned char st7[10];
|
|
|
|
} packed_fp_stack;
|
|
|
|
|
|
|
|
typedef struct packed_mmx_regs {
|
|
|
|
unsigned char mm0[10];
|
|
|
|
unsigned char mm1[10];
|
|
|
|
unsigned char mm2[10];
|
|
|
|
unsigned char mm3[10];
|
|
|
|
unsigned char mm4[10];
|
|
|
|
unsigned char mm5[10];
|
|
|
|
unsigned char mm6[10];
|
|
|
|
unsigned char mm7[10];
|
|
|
|
} packed_mmx_regs;
|
|
|
|
|
|
|
|
typedef struct old_extended_regs {
|
|
|
|
unsigned short fp_control;
|
|
|
|
unsigned short _reserved1;
|
|
|
|
unsigned short fp_status;
|
|
|
|
unsigned short _reserved2;
|
|
|
|
unsigned short fp_tag;
|
|
|
|
unsigned short _reserved3;
|
|
|
|
unsigned long fp_eip;
|
|
|
|
unsigned short fp_cs;
|
|
|
|
unsigned short fp_opcode;
|
|
|
|
unsigned long fp_datap;
|
|
|
|
unsigned short fp_ds;
|
|
|
|
unsigned short _reserved4;
|
|
|
|
union {
|
|
|
|
packed_fp_stack fp;
|
|
|
|
packed_mmx_regs mmx;
|
|
|
|
} fp_mmx;
|
|
|
|
} old_extended_regs;
|
|
|
|
|
|
|
|
typedef struct fp_stack {
|
|
|
|
unsigned char st0[10];
|
|
|
|
unsigned char _reserved_42_47[6];
|
|
|
|
unsigned char st1[10];
|
|
|
|
unsigned char _reserved_58_63[6];
|
|
|
|
unsigned char st2[10];
|
|
|
|
unsigned char _reserved_74_79[6];
|
|
|
|
unsigned char st3[10];
|
|
|
|
unsigned char _reserved_90_95[6];
|
|
|
|
unsigned char st4[10];
|
|
|
|
unsigned char _reserved_106_111[6];
|
|
|
|
unsigned char st5[10];
|
|
|
|
unsigned char _reserved_122_127[6];
|
|
|
|
unsigned char st6[10];
|
|
|
|
unsigned char _reserved_138_143[6];
|
|
|
|
unsigned char st7[10];
|
|
|
|
unsigned char _reserved_154_159[6];
|
|
|
|
} fp_stack;
|
|
|
|
|
|
|
|
typedef struct mmx_regs {
|
|
|
|
unsigned char mm0[10];
|
|
|
|
unsigned char _reserved_42_47[6];
|
|
|
|
unsigned char mm1[10];
|
|
|
|
unsigned char _reserved_58_63[6];
|
|
|
|
unsigned char mm2[10];
|
|
|
|
unsigned char _reserved_74_79[6];
|
|
|
|
unsigned char mm3[10];
|
|
|
|
unsigned char _reserved_90_95[6];
|
|
|
|
unsigned char mm4[10];
|
|
|
|
unsigned char _reserved_106_111[6];
|
|
|
|
unsigned char mm5[10];
|
|
|
|
unsigned char _reserved_122_127[6];
|
|
|
|
unsigned char mm6[10];
|
|
|
|
unsigned char _reserved_138_143[6];
|
|
|
|
unsigned char mm7[10];
|
|
|
|
unsigned char _reserved_154_159[6];
|
|
|
|
} mmx_regs;
|
2011-06-12 04:00:23 +04:00
|
|
|
|
2007-10-25 04:36:36 +04:00
|
|
|
typedef struct xmmx_regs {
|
|
|
|
unsigned char xmm0[16];
|
|
|
|
unsigned char xmm1[16];
|
|
|
|
unsigned char xmm2[16];
|
|
|
|
unsigned char xmm3[16];
|
|
|
|
unsigned char xmm4[16];
|
|
|
|
unsigned char xmm5[16];
|
|
|
|
unsigned char xmm6[16];
|
|
|
|
unsigned char xmm7[16];
|
|
|
|
} xmmx_regs;
|
|
|
|
|
|
|
|
typedef struct new_extended_regs {
|
|
|
|
unsigned short fp_control;
|
|
|
|
unsigned short fp_status;
|
2011-06-12 04:00:23 +04:00
|
|
|
unsigned short fp_tag;
|
2007-10-25 04:36:36 +04:00
|
|
|
unsigned short fp_opcode;
|
|
|
|
unsigned long fp_eip;
|
|
|
|
unsigned short fp_cs;
|
|
|
|
unsigned short res_14_15;
|
|
|
|
unsigned long fp_datap;
|
|
|
|
unsigned short fp_ds;
|
|
|
|
unsigned short _reserved_22_23;
|
|
|
|
unsigned long mxcsr;
|
|
|
|
unsigned long _reserved_28_31;
|
|
|
|
union {
|
|
|
|
fp_stack fp;
|
|
|
|
mmx_regs mmx;
|
|
|
|
} fp_mmx;
|
|
|
|
xmmx_regs xmmx;
|
|
|
|
unsigned char _reserved_288_511[224];
|
|
|
|
} new_extended_regs;
|
|
|
|
|
|
|
|
typedef struct extended_regs {
|
|
|
|
union {
|
|
|
|
old_extended_regs old_format;
|
|
|
|
new_extended_regs new_format;
|
|
|
|
} state;
|
2011-06-12 04:00:23 +04:00
|
|
|
unsigned long format;
|
2007-10-25 04:36:36 +04:00
|
|
|
} extended_regs;
|
|
|
|
|
|
|
|
struct vregs {
|
|
|
|
unsigned long eip;
|
|
|
|
unsigned long eflags;
|
|
|
|
unsigned long eax;
|
|
|
|
unsigned long ecx;
|
|
|
|
unsigned long edx;
|
|
|
|
unsigned long esp;
|
|
|
|
unsigned long ebp;
|
|
|
|
unsigned long _reserved_1;
|
|
|
|
extended_regs xregs;
|
2011-06-12 04:00:23 +04:00
|
|
|
unsigned long edi;
|
|
|
|
unsigned long esi;
|
|
|
|
unsigned long ebx;
|
2007-10-25 04:36:36 +04:00
|
|
|
};
|
2011-06-12 04:00:23 +04:00
|
|
|
|
2007-10-25 04:36:36 +04:00
|
|
|
#endif /* __INTEL__ */
|
|
|
|
|
|
|
|
#endif /* _ARCH_SIGNAL_H_ */
|