/*      $NetBSD: prtvid.c,v 1.3 2008/01/12 09:54:32 tsutsui Exp $       */

#include <stdio.h>
#define __DBINTERFACE_PRIVATE
#include <db.h>
#include <machine/disklabel.h>

int
main(int argc, char *argv[])
{
       struct cpu_disklabel *cdl;

       cdl = malloc(sizeof (struct cpu_disklabel));

       fread(cdl, sizeof(struct cpu_disklabel), 1, stdin);

       if (BYTE_ORDER != BIG_ENDIAN)
               swabvid(cdl);

       printf("vid_id          %s      %x\n", cdl->vid_id,
           (char *)&(cdl->vid_id[4]) - (char *)cdl);
       printf("vid_oss         %x      %x\n", cdl->vid_oss,
           (char *)&(cdl->vid_oss) - (char *)cdl);
       printf("vid_osl         %x      %x\n", cdl->vid_osl,
           (char *)&(cdl->vid_osl) - (char *)cdl);
       printf("vid_osa_u       %x      %x\n", cdl->vid_osa_u,
           (char *)&(cdl->vid_osa_u) - (char *)cdl);
       printf("vid_osa_l       %x      %x\n", cdl->vid_osa_l,
           (char *)&(cdl->vid_osa_l) - (char *)cdl);
       printf("vid_vd %x\n",
           (char *)&(cdl->vid_vd) - (char *)cdl);
       printf("vid_cas         %x      %x\n", cdl->vid_cas,
           (char *)&(cdl->vid_cas) - (char *)cdl);
       printf("vid_cal         %x      %x\n", cdl->vid_cal,
           (char *)&(cdl->vid_cal) - (char *)cdl);
       printf("vid_moto        %s      %x\n", cdl->vid_mot,
           (char *)&(cdl->vid_mot[0]) - (char *)cdl);

       if (BYTE_ORDER != BIG_ENDIAN)
               swabcfg(cdl);

       printf("cfg_atm         %x      %x\n", cdl->cfg_atm,
           (char *)&(cdl->cfg_atm) - (char *)(cdl));
       printf("cfg_prm         %x      %x\n", cdl->cfg_prm,
           (char *)&(cdl->cfg_prm) - (char *)(cdl));
       printf("cfg_atw         %x      %x\n", cdl->cfg_atw,
           (char *)&(cdl->cfg_atw) - (char *)(cdl));
       printf("cfg_rec         %x      %x\n",(long)cdl->cfg_rec,
           (char *)&(cdl->cfg_rec) - (char *)(cdl));
       printf("cfg_spt         %x      %x\n", cdl->cfg_spt,
           (char *)&(cdl->cfg_spt) - (char *)(cdl));
       printf("cfg_hds         %x      %x\n", cdl->cfg_hds,
           (char *)&(cdl->cfg_hds) - (char *)(cdl));
       printf("cfg_trk         %x      %x\n", cdl->cfg_trk,
           (char *)&(cdl->cfg_trk) - (char *)(cdl));
       printf("cfg_ilv         %x      %x\n", cdl->cfg_ilv,
           (char *)&(cdl->cfg_ilv) - (char *)(cdl));
       printf("cfg_sof         %x      %x\n", cdl->cfg_sof,
           (char *)&(cdl->cfg_sof) - (char *)(cdl));
       printf("cfg_psm         %x      %x\n", cdl->cfg_psm,
           (char *)&(cdl->cfg_psm) - (char *)(cdl));
       printf("cfg_shd         %x      %x\n", cdl->cfg_shd,
           (char *)&(cdl->cfg_shd) - (char *)(cdl));
       printf("cfg_pcom        %x      %x\n", cdl->cfg_pcom,
           (char *)&(cdl->cfg_pcom) - (char *)(cdl));
       printf("cfg_ssr         %x      %x\n", cdl->cfg_ssr,
           (char *)&(cdl->cfg_ssr) - (char *)(cdl));
       printf("cfg_rwcc        %x      %x\n", cdl->cfg_rwcc,
           (char *)&(cdl->cfg_rwcc) - (char *)(cdl));
       printf("cfg_ecc         %x      %x\n", cdl->cfg_ecc,
           (char *)&(cdl->cfg_ecc) - (char *)(cdl));
       printf("cfg_eatm        %x      %x\n", cdl->cfg_eatm,
           (char *)&(cdl->cfg_eatm) - (char *)(cdl));
       printf("cfg_eprm        %x      %x\n", cdl->cfg_eprm,
           (char *)&(cdl->cfg_eprm) - (char *)(cdl));
       printf("cfg_eatw        %x      %x\n", cdl->cfg_eatw,
           (char *)&(cdl->cfg_eatw) - (char *)(cdl));
       printf("cfg_gpb1        %x      %x\n", cdl->cfg_gpb1,
           (char *)&(cdl->cfg_gpb1) - (char *)(cdl));
       printf("cfg_gpb2        %x      %x\n", cdl->cfg_gpb2,
           (char *)&(cdl->cfg_gpb2) - (char *)(cdl));
       printf("cfg_gpb3        %x      %x\n", cdl->cfg_gpb3,
           (char *)&(cdl->cfg_gpb3) - (char *)(cdl));
       printf("cfg_gpb4        %x      %x\n", cdl->cfg_gpb4,
           (char *)&(cdl->cfg_gpb4) - (char *)(cdl));
       printf("cfg_ssc         %x      %x\n", cdl->cfg_ssc,
           (char *)&(cdl->cfg_ssc) - (char *)(cdl));
       printf("cfg_runit       %x      %x\n", cdl->cfg_runit,
           (char *)&(cdl->cfg_runit) - (char *)(cdl));
       printf("cfg_rsvc1       %x      %x\n", cdl->cfg_rsvc1,
           (char *)&(cdl->cfg_rsvc1) - (char *)(cdl));
       printf("cfg_rsvc2       %x      %x\n", cdl->cfg_rsvc2,
           (char *)&(cdl->cfg_rsvc2) - (char *)(cdl));
}

swabvid(struct cpu_disklabel *cdl)
{

       M_32_SWAP(cdl->vid_oss);
       M_16_SWAP(cdl->vid_osl);
       M_16_SWAP(cdl->vid_osa_u);
       M_16_SWAP(cdl->vid_osa_l);
       M_32_SWAP(cdl->vid_cas);
}

swabcfg(struct cpu_disklabel *cdl)
{

       printf("swapping cfg\n");

       M_16_SWAP(cdl->cfg_atm);
       M_16_SWAP(cdl->cfg_prm);
       M_16_SWAP(cdl->cfg_atm);
       M_16_SWAP(cdl->cfg_rec);
       M_16_SWAP(cdl->cfg_trk);
       M_16_SWAP(cdl->cfg_psm);
       M_16_SWAP(cdl->cfg_shd);
       M_16_SWAP(cdl->cfg_pcom);
       M_16_SWAP(cdl->cfg_rwcc);
       M_16_SWAP(cdl->cfg_ecc);
       M_16_SWAP(cdl->cfg_eatm);
       M_16_SWAP(cdl->cfg_eprm);
       M_16_SWAP(cdl->cfg_eatw);
       M_16_SWAP(cdl->cfg_rsvc1);
       M_16_SWAP(cdl->cfg_rsvc2);
}