#include <stdio.h>
#include <user-offsets.h>

#define SC_OFFSET(name, field) \
  printf("#define " #name "(sc) *((unsigned long *) &(((char *) (sc))[%d]))\n",\
	 name)

#define SC_FP_OFFSET(name, field) \
  printf("#define " #name \
	 "(sc) *((unsigned long *) &(((char *) (SC_FPSTATE(sc)))[%d]))\n",\
	 name)

#define SC_FP_OFFSET_PTR(name, field, type) \
  printf("#define " #name \
	 "(sc) ((" type " *) &(((char *) (SC_FPSTATE(sc)))[%d]))\n",\
	 name)

int main(int argc, char **argv)
{
  SC_OFFSET(SC_IP, eip);
  SC_OFFSET(SC_SP, esp);
  SC_OFFSET(SC_FS, fs);
  SC_OFFSET(SC_GS, gs);
  SC_OFFSET(SC_DS, ds);
  SC_OFFSET(SC_ES, es);
  SC_OFFSET(SC_SS, ss);
  SC_OFFSET(SC_CS, cs);
  SC_OFFSET(SC_EFLAGS, eflags);
  SC_OFFSET(SC_EAX, eax);
  SC_OFFSET(SC_EBX, ebx);
  SC_OFFSET(SC_ECX, ecx);
  SC_OFFSET(SC_EDX, edx);
  SC_OFFSET(SC_EDI, edi);
  SC_OFFSET(SC_ESI, esi);
  SC_OFFSET(SC_EBP, ebp);
  SC_OFFSET(SC_TRAPNO, trapno);
  SC_OFFSET(SC_ERR, err);
  SC_OFFSET(SC_CR2, cr2);
  SC_OFFSET(SC_FPSTATE, fpstate);
  SC_OFFSET(SC_SIGMASK, oldmask);
  SC_FP_OFFSET(SC_FP_CW, cw);
  SC_FP_OFFSET(SC_FP_SW, sw);
  SC_FP_OFFSET(SC_FP_TAG, tag);
  SC_FP_OFFSET(SC_FP_IPOFF, ipoff);
  SC_FP_OFFSET(SC_FP_CSSEL, cssel);
  SC_FP_OFFSET(SC_FP_DATAOFF, dataoff);
  SC_FP_OFFSET(SC_FP_DATASEL, datasel);
  SC_FP_OFFSET_PTR(SC_FP_ST, _st, "struct _fpstate");
  SC_FP_OFFSET_PTR(SC_FXSR_ENV, _fxsr_env, "void");
  return(0);
}
