add some documentation
authorchuck <chuck@openbsd.org>
Fri, 10 May 1996 03:18:43 +0000 (03:18 +0000)
committerchuck <chuck@openbsd.org>
Fri, 10 May 1996 03:18:43 +0000 (03:18 +0000)
add some predefined constants so that the kernel can generate valid
bootblocks without help from 'wrtvid'

sys/arch/mvme68k/include/disklabel.h

index 78741c4..bf4bfe1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: disklabel.h,v 1.2 1996/04/28 10:56:12 deraadt Exp $ */
+/*     $OpenBSD: disklabel.h,v 1.3 1996/05/10 03:18:43 chuck Exp $ */
 
 /*
  * Copyright (c) 1995 Dale Rahn.
@@ -34,7 +34,7 @@
 #define _MACHINE_DISKLABEL_H_
 
 /* number of boot pieces , ie xxboot bootxx */
-#define NUMBOOT                2
+#define NUMBOOT                0
 
 #define        PARTITIONSHIFT  4
 
 #define MAKEDISKDEV(maj, unit, part) \
     (makedev((maj), ((unit) * MAXPARTITIONS) + (part)))
 
+/*
+ * a cpu_disklabel is a disklabel that the bug (prom) can understand
+ * and live with.   the bug works in terms of 256 byte blocks.   in our
+ * case the first two bug blocks make up the cpu_disklabel (which is 512
+ * bytes [i.e. one sector] in length).
+ *
+ * we use a fixed layout the BSD disk structure (in 256 byte blocks):
+ *   block 0  = the volume ID block  (part of cpu_disklabel)
+ *   block 1  = media configuration area (part of cpu_disklabel)
+ *   block 2  = start of first level OS bootstrap (continues ...)
+ *   block 31 = end of OS bootstrap
+ *   block 32 = BSD filesystem superblock
+ *
+ * this gives us 30 blocks (30*256 = 7680 bytes) for the bootstrap's text+data
+ *
+ * disksubr.c translates between cpu_disklabel and BSD disklabel.
+ *
+ */
+
 struct cpu_disklabel {
        /* VID */
-       u_char          vid_id[4];
-       u_char          vid_0[16];
-       u_int           vid_oss;
-       u_short         vid_osl;
-       u_char          vid_1[4];
-       u_short         vid_osa_u;
-       u_short         vid_osa_l;
-       u_char          vid_2[2];
-       u_short         partitions;
-       u_char          vid_vd[16];
-       u_long          bbsize;
-       u_long          magic1;         /* 4 */
-       u_short         type;           /* 2 */
-       u_short         subtype;        /* 2 */
-       u_char          packname[16];   /* 16 */
-       u_long          flags;          /* 4 */
-       u_long          drivedata[5];   /* 4 */
-       u_long          spare[5];       /* 4 */
-       u_short         checksum;       /* 2 */
+       u_char  vid_id[4];      /* volume ID */
+#define VID_ID         "NBSD"
+       u_char  vid_0[16];
+       u_int   vid_oss;        /* starting block # of bootstrap */
+#define VID_OSS                2
+       u_short vid_osl;        /* bootstrap length (30 blocks) */
+#define VID_OSL                30
+       u_char  vid_1[4];
+       u_short vid_osa_u;      /* bootstrap start address (upper) */
+       u_short vid_osa_l;      /* bootstrap start address (lower) */
+#define VID_OSA                0x3f0000        /* MUST match bootstrap code */
+#define VID_OSAU       ((VID_OSA >> 16) & 0xffff)
+#define VID_OSAL       (VID_OSA & 0xffff)
+       u_char  vid_2[2];
+       u_short partitions;
+       u_char  vid_vd[16];
+       u_long  bbsize;
+       u_long  magic1;         /* 4 */
+       u_short type;           /* 2 */
+       u_short subtype;        /* 2 */
+       u_char  packname[16];   /* 16 */
+       u_long  flags;          /* 4 */
+       u_long  drivedata[5];   /* 4 */
+       u_long  spare[5];       /* 4 */
+       u_short checksum;       /* 2 */
 
-       u_long          secpercyl;      /* 4 */
-       u_long          secperunit;     /* 4 */
-       u_long          headswitch;     /* 4 */
+       u_long  secpercyl;      /* 4 */
+       u_long  secperunit;     /* 4 */
+       u_long  headswitch;     /* 4 */
 
-       u_char          vid_3[4];
-       u_int           vid_cas;
-       u_char          vid_cal;
-       u_char          vid_4_0[3];
-       u_char          vid_4[64];
-       u_char          vid_4_1[28];
-       u_long          sbsize;
-       u_char          vid_mot[8];
+       u_char  vid_3[4];
+       u_int   vid_cas;        /* block # of CFG area, hardwired at 1 */
+#define VID_CAS                1
+       u_char  vid_cal;        /* length of CFG area, in blocks (1) */
+#define VID_CAL                1
+       u_char  vid_4_0[3];
+       u_char  vid_4[64];
+       u_char  vid_4_1[28];
+       u_long  sbsize;
+       u_char  vid_mot[8];     /* must contain "MOTOROLA" */
+#define VID_MOT                "MOTOROLA"
 
        /* CFG */
-       u_char          cfg_0[4];
-       u_short         cfg_atm;
-       u_short         cfg_prm;
-       u_short         cfg_atw;
-       u_short         cfg_rec;
+       u_char  cfg_0[4];
+       u_short cfg_atm;
+       u_short cfg_prm;
+       u_short cfg_atw;
+       u_short cfg_rec;        /* block size (256) */
+#define        CFG_REC         256
 
-       u_short         sparespertrack;
-       u_short         sparespercyl;
-       u_long          acylinders;
-       u_short         rpm;
-       u_short         cylskew;
+       u_short sparespertrack;
+       u_short sparespercyl;
+       u_long  acylinders;
+       u_short rpm;
+       u_short cylskew;
 
-       u_char          cfg_spt;
-       u_char          cfg_hds;
-       u_short         cfg_trk;
-       u_char          cfg_ilv;
-       u_char          cfg_sof;
-       u_short         cfg_psm;
-       u_short         cfg_shd;
-       u_char          cfg_2[2];
-       u_short         cfg_pcom;
-       u_char          cfg_3;
-       u_char          cfg_ssr;
-       u_short         cfg_rwcc;
-       u_short         cfg_ecc;
-       u_short         cfg_eatm;
-       u_short         cfg_eprm;
-       u_short         cfg_eatw;
-       u_char          cfg_gpb1;
-       u_char          cfg_gpb2;
-       u_char          cfg_gpb3;
-       u_char          cfg_gpb4;
-       u_char          cfg_ssc;
-       u_char          cfg_runit;
-       u_short         cfg_rsvc1;
-       u_short         cfg_rsvc2;
-       u_long          magic2;
-       u_char          cfg_4[192];
+       u_char  cfg_spt;
+       u_char  cfg_hds;
+       u_short cfg_trk;
+       u_char  cfg_ilv;
+       u_char  cfg_sof;
+       u_short cfg_psm;        /* physical sector size (512) */
+#define CFG_PSM                512
+       u_short cfg_shd;
+       u_char  cfg_2[2];
+       u_short cfg_pcom;
+       u_char  cfg_3;
+       u_char  cfg_ssr;
+       u_short cfg_rwcc;
+       u_short cfg_ecc;
+       u_short cfg_eatm;
+       u_short cfg_eprm;
+       u_short cfg_eatw;
+       u_char  cfg_gpb1;
+       u_char  cfg_gpb2;
+       u_char  cfg_gpb3;
+       u_char  cfg_gpb4;
+       u_char  cfg_ssc;
+       u_char  cfg_runit;
+       u_short cfg_rsvc1;
+       u_short cfg_rsvc2;
+       u_long  magic2;
+       u_char  cfg_4[192];
 };
 #endif _MACHINE_DISKLABEL_H_