1#ifndef __SYSDEP_I386_SC_H 2#define __SYSDEP_I386_SC_H 3 4#include <user_constants.h> 5 6#define SC_OFFSET(sc, field) \ 7 *((unsigned long *) &(((char *) (sc))[HOST_##field])) 8#define SC_FP_OFFSET(sc, field) \ 9 *((unsigned long *) &(((char *) (SC_FPSTATE(sc)))[HOST_##field])) 10#define SC_FP_OFFSET_PTR(sc, field, type) \ 11 ((type *) &(((char *) (SC_FPSTATE(sc)))[HOST_##field])) 12 13#define SC_IP(sc) SC_OFFSET(sc, SC_IP) 14#define SC_SP(sc) SC_OFFSET(sc, SC_SP) 15#define SC_FS(sc) SC_OFFSET(sc, SC_FS) 16#define SC_GS(sc) SC_OFFSET(sc, SC_GS) 17#define SC_DS(sc) SC_OFFSET(sc, SC_DS) 18#define SC_ES(sc) SC_OFFSET(sc, SC_ES) 19#define SC_SS(sc) SC_OFFSET(sc, SC_SS) 20#define SC_CS(sc) SC_OFFSET(sc, SC_CS) 21#define SC_EFLAGS(sc) SC_OFFSET(sc, SC_EFLAGS) 22#define SC_EAX(sc) SC_OFFSET(sc, SC_EAX) 23#define SC_EBX(sc) SC_OFFSET(sc, SC_EBX) 24#define SC_ECX(sc) SC_OFFSET(sc, SC_ECX) 25#define SC_EDX(sc) SC_OFFSET(sc, SC_EDX) 26#define SC_EDI(sc) SC_OFFSET(sc, SC_EDI) 27#define SC_ESI(sc) SC_OFFSET(sc, SC_ESI) 28#define SC_EBP(sc) SC_OFFSET(sc, SC_EBP) 29#define SC_TRAPNO(sc) SC_OFFSET(sc, SC_TRAPNO) 30#define SC_ERR(sc) SC_OFFSET(sc, SC_ERR) 31#define SC_CR2(sc) SC_OFFSET(sc, SC_CR2) 32#define SC_FPSTATE(sc) SC_OFFSET(sc, SC_FPSTATE) 33#define SC_SIGMASK(sc) SC_OFFSET(sc, SC_SIGMASK) 34#define SC_FP_CW(sc) SC_FP_OFFSET(sc, SC_FP_CW) 35#define SC_FP_SW(sc) SC_FP_OFFSET(sc, SC_FP_SW) 36#define SC_FP_TAG(sc) SC_FP_OFFSET(sc, SC_FP_TAG) 37#define SC_FP_IPOFF(sc) SC_FP_OFFSET(sc, SC_FP_IPOFF) 38#define SC_FP_CSSEL(sc) SC_FP_OFFSET(sc, SC_FP_CSSEL) 39#define SC_FP_DATAOFF(sc) SC_FP_OFFSET(sc, SC_FP_DATAOFF) 40#define SC_FP_DATASEL(sc) SC_FP_OFFSET(sc, SC_FP_DATASEL) 41#define SC_FP_ST(sc) SC_FP_OFFSET_PTR(sc, SC_FP_ST, struct _fpstate) 42#define SC_FXSR_ENV(sc) SC_FP_OFFSET_PTR(sc, SC_FXSR_ENV, void) 43 44#endif 45