static void
i386fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
				       iterate_over_regset_sections_cb *cb,
				       void *cb_data,
				       const struct regcache *regcache)
{
  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);

  cb (".reg", tdep->sizeof_gregset, tdep->sizeof_gregset, &i386_gregset, NULL,
      cb_data);
  cb (".reg2", tdep->sizeof_fpregset, tdep->sizeof_fpregset, &i386_fpregset,
      NULL, cb_data);

  if (tdep->xcr0 & X86_XSTATE_AVX)
    cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0),
	X86_XSTATE_SIZE (tdep->xcr0), &i386fbsd_xstateregset,
	"XSAVE extended state", cb_data);
}
static void
i386_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
					 iterate_over_regset_sections_cb *cb,
					 void *cb_data,
					 const struct regcache *regcache)
{
  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);

  cb (".reg", 68, &i386_gregset, NULL, cb_data);

  if (tdep->xcr0 & X86_XSTATE_AVX)
    cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0),
	&i386_linux_xstateregset, "XSAVE extended state", cb_data);
  else if (tdep->xcr0 & X86_XSTATE_SSE)
    cb (".reg-xfp", 512, &i386_fpregset, "extended floating-point",
	cb_data);
  else
    cb (".reg2", 108, &i386_fpregset, NULL, cb_data);
}