Cleanup of VAX SIE register usage - Rename VAX_SIE_* to VAX_STYP_* to match existing pattern - Add GET_SIE_*(x) macros to sid.h to break out vax_siedata parts - Add GET_SID_*(x) macros to sid.h to break out some vax_cpudata parts - Add VAX_SIE_MICROVAX & IS_SIE_MICROVAX(x) defines to sid.h - Remove overlapping macros from ka650.h - Adjust all vax_siedata to call via {GET,IS}_SIE_* macros - Use GET_SID_UCODE_VER & GET_SID_TYPE where valid - Add (unused) VAX_STYP_KA670 definition - Drop unused "#define cpudata vax_cpudata" and friends - Simplify some locore.c usage to just IS_SIE_MICROVAX(x) To commit separately: - Add IS_SIE_MICROVAX(x) check to lcg.c for #58261 Index: sys/arch/vax/boot/boot/if_le.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/boot/boot/if_le.c,v retrieving revision 1.13 diff -u -p -r1.13 if_le.c --- sys/arch/vax/boot/boot/if_le.c 22 May 2017 16:59:32 -0000 1.13 +++ sys/arch/vax/boot/boot/if_le.c 9 Jun 2024 22:01:28 -0000 @@ -136,7 +136,7 @@ leopen(struct open_file *f, int adapt, i next_rdesc = next_tdesc = 0; if (vax_boardtype == VAX_BTYP_650 && - ((vax_siedata >> 8) & 0xff) == VAX_SIE_KA640) { + GET_SIE_STYP(vax_siedata) == VAX_STYP_KA640) { kopiera = 1; ea = (void *)0x20084200; nireg = (void *)0x20084400; Index: sys/arch/vax/include/ka650.h =================================================================== RCS file: /cvsroot/src/sys/arch/vax/include/ka650.h,v retrieving revision 1.13 diff -u -p -r1.13 ka650.h --- sys/arch/vax/include/ka650.h 8 Apr 2022 10:17:54 -0000 1.13 +++ sys/arch/vax/include/ka650.h 9 Jun 2024 22:01:28 -0000 @@ -234,12 +234,4 @@ struct ka650_ipcr { #define KA650ROM_GETS 0x20060010 /* (jsb) read string with prompt */ #define KA650_CONSTYPE 0x20140401 /* byte at which console type resides */ -/* - * Some useful macros - */ -#define GETCPUTYPE(x) ((x >> 24) & 0xff) -#define GETSYSSUBT(x) ((x >> 8) & 0xff) -#define GETFRMREV(x) ((x >> 16) & 0xff) -#define GETCODREV(x) (x & 0xff) - #endif /* _VAX_KA650_H_ */ Index: sys/arch/vax/include/sid.h =================================================================== RCS file: /cvsroot/src/sys/arch/vax/include/sid.h,v retrieving revision 1.22 diff -u -p -r1.22 sid.h --- sys/arch/vax/include/sid.h 22 May 2017 17:12:11 -0000 1.22 +++ sys/arch/vax/include/sid.h 9 Jun 2024 22:01:28 -0000 @@ -26,15 +26,6 @@ */ /* - * Board-Type (?_BTYP_?) and Sub-Type (?_STYP_?) are synonima. - * Michael Kukat changed this 01/27/2001, STYP is really a subtype now. - * other synonima are: - */ -#define cpudata vax_cpudata -#define cputype vax_cputype -#define cpusubtype vax_boardtype - -/* * Chip CPU types / chip CPU Subtypes * * The type of a VAX is given by the high-order byte of the System @@ -104,12 +95,13 @@ /* VAX_BTYP_520 0x0A000007 VAXft model 310 */ /* - * SID Extension register definitions for CVAX series + * SID Extension register definitions for CVAX series, shifted into 8:15 */ -#define VAX_SIE_KA640 0x2 /* KA640 MicroVAX 3300, 3400 */ -#define VAX_SIE_KA650 0x1 /* KA650 MicroVAX 3500, 3600 */ -#define VAX_SIE_KA655 0x3 /* KA655 MicroVAX 3800, 3900 */ - +#define VAX_STYP_KA650 0x1 /* KA650 MicroVAX 3500, 3600 */ +#define VAX_STYP_KA640 0x2 /* KA640 MicroVAX 3300, 3400 */ +#define VAX_STYP_KA655 0x3 /* KA655 MicroVAX 3800, 3900 */ +#define VAX_STYP_KA670 0x4 /* KA670 VAXserver 4000 Model 300 */ + /* * Rigel chip series (1990) */ @@ -191,6 +183,11 @@ #define VAX_TYP_MAX VAX_TYP_NVAX /* + * Other SID Extension register definitions + */ +#define VAX_SIE_MICROVAX __BIT(0) /* MicroVAX class machine */ + +/* * compatibility with old names: */ @@ -205,6 +202,21 @@ #define VAX_650 VAX_TYP_CVAX /* + * Convenience macros to extract sections of the SIE register + */ +#define GET_SID_UCODE_VER(x) ((x) & 0xff) /* usually, not always */ +#define GET_SID_TYPE(x) ((x) >> 24) + +/* + * Convenience macros to extract sections of the SIE register + */ +#define GET_SIE_STYP(x) (((x) >> 8) & 0xff) +#define GET_SIE_FIRMWARE_VER(x) (((x) >> 16) & 0xff) +#define GET_SIE_BOARDTYPE(x) ((x) >> 24) +#define GET_SIE_EXTRA(x) ((x) & 3) +#define IS_SIE_MICROVAX(x) ((x) & VAX_SIE_MICROVAX) + +/* * Some common-used external variables. */ extern int vax_cputype; /* general, highest byte of the SID-register */ Index: sys/arch/vax/vax/findcpu.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/findcpu.c,v retrieving revision 1.20 diff -u -p -r1.20 findcpu.c --- sys/arch/vax/vax/findcpu.c 22 May 2017 16:39:41 -0000 1.20 +++ sys/arch/vax/vax/findcpu.c 9 Jun 2024 22:01:28 -0000 @@ -58,7 +58,7 @@ void findcpu(void) { vax_cpudata = mfpr(PR_SID); - vax_cputype = vax_cpudata >> 24; + vax_cputype = GET_SID_TYPE(vax_cpudata); vax_boardtype = vax_cputype << 24; switch (vax_cputype) { @@ -86,7 +86,7 @@ findcpu(void) case VAX_TYP_NVAX: case VAX_TYP_SOC: vax_siedata = *(int *)(0x20040004); /* SIE address */ - vax_boardtype |= vax_siedata >> 24; + vax_boardtype |= GET_SIE_BOARDTYPE(vax_siedata); switch (vax_boardtype) { case VAX_BTYP_420: /* They are very similar */ Index: sys/arch/vax/vax/ka46.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/ka46.c,v retrieving revision 1.26 diff -u -p -r1.26 ka46.c --- sys/arch/vax/vax/ka46.c 22 May 2017 16:46:15 -0000 1.26 +++ sys/arch/vax/vax/ka46.c 9 Jun 2024 22:01:28 -0000 @@ -83,7 +83,7 @@ static const char * const ka46_cpustrs[4 void ka46_conf(void) { - curcpu()->ci_cpustr = ka46_cpustrs[vax_siedata & 0x3]; + curcpu()->ci_cpustr = ka46_cpustrs[GET_SIE_EXTRA(vax_siedata)]; // 0..3 ka46_cpu = (void *)vax_map_physmem(VS_REGS, 1); mtpr(2, PR_ACCS); /* Enable floating points */ /* Index: sys/arch/vax/vax/ka53.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/ka53.c,v retrieving revision 1.17 diff -u -p -r1.17 ka53.c --- sys/arch/vax/vax/ka53.c 22 May 2017 16:46:15 -0000 1.17 +++ sys/arch/vax/vax/ka53.c 9 Jun 2024 22:01:28 -0000 @@ -93,14 +93,15 @@ ka53_attach_cpu(device_t self) { const char *cpuname; - switch((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_51: cpuname = "KA51"; break; case VAX_STYP_52: cpuname = "KA52"; break; case VAX_STYP_53: cpuname = "KA53,54,57"; break; case VAX_STYP_55: cpuname = "KA55"; break; default: cpuname = "unknown NVAX"; } - printf("cpu0: %s, ucode rev %d\n", cpuname, vax_cpudata & 0xff); + printf("cpu0: %s, ucode rev %d\n", cpuname, + GET_SID_UCODE_VER(vax_cpudata)); } /* Index: sys/arch/vax/vax/ka650.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/ka650.c,v retrieving revision 1.39 diff -u -p -r1.39 ka650.c --- sys/arch/vax/vax/ka650.c 21 Feb 2024 23:23:06 -0000 1.39 +++ sys/arch/vax/vax/ka650.c 9 Jun 2024 22:01:28 -0000 @@ -117,12 +117,12 @@ ka650_conf(void) void ka650_attach_cpu(device_t self) { - int syssub = GETSYSSUBT(vax_siedata); + int syssub = GET_SIE_STYP(vax_siedata); aprint_normal(": KA6%d%d, CVAX microcode rev %d Firmware rev %d\n", - syssub == VAX_SIE_KA640 ? 4 : 5, - syssub == VAX_SIE_KA655 ? 5 : 0, - (vax_cpudata & 0xff), GETFRMREV(vax_siedata)); + syssub == VAX_STYP_KA640 ? 4 : 5, + syssub == VAX_STYP_KA655 ? 5 : 0, + GET_SID_UCODE_VER(vax_cpudata), GET_SIE_FIRMWARE_VER(vax_siedata)); } void @@ -256,14 +256,14 @@ ka650_mchk(void *cmcf) void ka650setcache(int state) { - int syssub = GETSYSSUBT(vax_siedata); + int syssub = GET_SIE_STYP(vax_siedata); int i; /* * Before doing anything, disable the cache. */ mtpr(0, PR_CADR); - if (syssub != VAX_SIE_KA640) + if (syssub != VAX_STYP_KA640) ka650cbd_ptr->cbd_cacr = CACR_CPE; /* @@ -271,7 +271,7 @@ ka650setcache(int state) */ if (state == CACHEON) { mtpr(CADR_SEN2 | CADR_SEN1 | CADR_CENI | CADR_CEND, PR_CADR); - if (syssub != VAX_SIE_KA640) { + if (syssub != VAX_STYP_KA640) { for (i = 0; i < (KA650_CACHESIZE / sizeof(KA650_CACHE_ptr[0])); i += 2) Index: sys/arch/vax/vax/ka660.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/ka660.c,v retrieving revision 1.12 diff -u -p -r1.12 ka660.c --- sys/arch/vax/vax/ka660.c 22 May 2017 16:46:15 -0000 1.12 +++ sys/arch/vax/vax/ka660.c 9 Jun 2024 22:01:28 -0000 @@ -88,7 +88,7 @@ ka660_attach_cpu(device_t self) aprint_normal( ": %s, SOC (ucode rev. %d), 6KB L1 cache\n", "KA660", - vax_cpudata & 0377); + GET_SID_UCODE_VER(vax_cpudata)); } void Index: sys/arch/vax/vax/ka670.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/ka670.c,v retrieving revision 1.17 diff -u -p -r1.17 ka670.c --- sys/arch/vax/vax/ka670.c 22 May 2017 16:46:15 -0000 1.17 +++ sys/arch/vax/vax/ka670.c 9 Jun 2024 22:01:28 -0000 @@ -214,5 +214,5 @@ ka670_attach_cpu(device_t self) aprint_normal( ": %s, Rigel (ucode rev %d), 2KB L1 cache, 128KB L2 cache\n", "KA670", - vax_cpudata % 0377); + GET_SID_UCODE_VER(vax_cpudata)); } Index: sys/arch/vax/vax/ka680.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/ka680.c,v retrieving revision 1.18 diff -u -p -r1.18 ka680.c --- sys/arch/vax/vax/ka680.c 22 May 2017 16:46:15 -0000 1.18 +++ sys/arch/vax/vax/ka680.c 9 Jun 2024 22:01:28 -0000 @@ -120,7 +120,7 @@ ka680_attach_cpu(device_t self) switch (vax_boardtype) { case VAX_BTYP_680: - switch((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_675: cpuname = "KA675"; break; case VAX_STYP_680: cpuname = "KA680"; break; case VAX_STYP_690: cpuname = "KA690"; break; @@ -128,7 +128,7 @@ ka680_attach_cpu(device_t self) } break; case VAX_BTYP_681: - switch ((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_681: cpuname = "KA681"; break; case VAX_STYP_691: cpuname = "KA691"; break; case VAX_STYP_694: cpuname = (vax_cpudata & 0x1000) ? @@ -139,7 +139,8 @@ ka680_attach_cpu(device_t self) default: cpuname = "unknown class"; break; } - aprint_normal("%s, NVAX (ucode rev %d)\n", cpuname, vax_cpudata & 0xff); + aprint_normal("%s, NVAX (ucode rev %d)\n", cpuname, + GET_SID_UCODE_VER(vax_cpudata)); } void @@ -169,9 +170,9 @@ ka680_cache_enable(void) cslut = 0x01020000; havevic = 0; - switch(vax_boardtype) { + switch (vax_boardtype) { case VAX_BTYP_680: - switch((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_675: fslut = 0x01420000; cslut = 0x01020000; @@ -189,7 +190,7 @@ ka680_cache_enable(void) break; } case VAX_BTYP_681: - switch((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_681: fslut = 0x01420000; cslut = 0x01020000; Index: sys/arch/vax/vax/locore.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/locore.c,v retrieving revision 1.84 diff -u -p -r1.84 locore.c --- sys/arch/vax/vax/locore.c 22 May 2017 16:53:05 -0000 1.84 +++ sys/arch/vax/vax/locore.c 9 Jun 2024 22:01:28 -0000 @@ -133,12 +133,12 @@ _start(struct rpb *prpb) #if VAX410 || VAXANY case VAX_BTYP_420: /* They are very similar */ dep_call = &ka410_calls; - if (((vax_siedata >> 8) & 0xff) == 1) - md = "/m{38,48}"; - else if (((vax_siedata >> 8) & 0xff) == 0) - md = "/m{30,40}"; - else - md = ""; + // This is a strange use of subt + switch (GET_SIE_STYP(vax_siedata)) { + case 1: md = "/m{38,48}"; break; + case 0: md = "/m{30,40}"; break; + default: md = ""; break; + } cpu_setmodel("%s 3100%s", mv, md); mv = NULL; break; @@ -159,21 +159,17 @@ _start(struct rpb *prpb) #if VAX46 || VAXANY case VAX_BTYP_46: dep_call = &ka46_calls; - switch(vax_siedata & 0x3) { - case 1: mv = "MicroVAX 3100/80"; break; - case 2: mv = "VAXstation 4000/60"; break; - default: mv = "unknown"; break; - } + mv = IS_SIE_MICROVAX(vax_siedata) + ? "MicroVAX 3100/80" + : "VAXstation 4000/60"; break; #endif #if VAX48 || VAXANY case VAX_BTYP_48: dep_call = &ka48_calls; - switch (vax_siedata & 3) { - case 1: mv = "MicroVAX 3100/m{30,40}"; break; - case 2: mv = "VAXstation 4000 VLC"; break; - default: mv = "unknown SOC"; break; - } + mv = IS_SIE_MICROVAX(vax_siedata) + ? "MicroVAX 3100/m{30,40}" + : "VAXstation 4000 VLC"; break; #endif #if 0 && (VXT2000 || VAXANY) @@ -192,7 +188,7 @@ _start(struct rpb *prpb) #if VAX53 || VAXANY case VAX_BTYP_53: dep_call = &ka53_calls; - switch((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_51: mv = "MicroVAX 3100/m{90,95}"; break; case VAX_STYP_52: @@ -221,16 +217,16 @@ _start(struct rpb *prpb) #if VAX650 || VAXANY case VAX_BTYP_650: dep_call = &ka650_calls; - switch ((vax_siedata >> 8) & 255) { - case VAX_SIE_KA640: + switch (GET_SIE_STYP(vax_siedata)) { + case VAX_STYP_KA640: mv = "3300/3400"; break; - case VAX_SIE_KA650: + case VAX_STYP_KA650: mv = "3500/3600"; break; - case VAX_SIE_KA655: + case VAX_STYP_KA655: mv = "3800/3900"; break; @@ -257,7 +253,7 @@ _start(struct rpb *prpb) #if VAX680 || VAXANY case VAX_BTYP_680: dep_call = &ka680_calls; - switch((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_675: mv = "VAX 4000/400"; break; case VAX_STYP_680: @@ -268,7 +264,7 @@ _start(struct rpb *prpb) break; case VAX_BTYP_681: dep_call = &ka680_calls; - switch((vax_siedata & 0xff00) >> 8) { + switch (GET_SIE_STYP(vax_siedata)) { case VAX_STYP_681: mv = "VAX 4000/500A"; break; case VAX_STYP_691: Index: sys/arch/vax/vsa/lcg.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vsa/lcg.c,v retrieving revision 1.11 diff -u -p -r1.11 lcg.c --- sys/arch/vax/vsa/lcg.c 10 Dec 2022 19:50:43 -0000 1.11 +++ sys/arch/vax/vsa/lcg.c 9 Jun 2024 22:01:28 -0000 @@ -438,6 +438,9 @@ lcg_match(struct device *parent, struct if ((vax_boardtype != VAX_BTYP_46) && (vax_boardtype != VAX_BTYP_48)) return 0; + if (IS_SIE_MICROVAX(vax_siedata)) + return 0; + *ch = 1; if ((*ch & 1) == 0) return 0; @@ -1002,7 +1005,7 @@ lcg_init_common(struct device *self, str /* * v = *0x200f0010 & VLC ? 0x07 : 0xf0; - * switch(v) { + * switch (v) { * 0x05: 1280x1024 * 0x06: conf & 0x80 ? 1024x768 : 640x480 * 0x07: conf & 0x80 ? 1024x768 ? 1024x864 @@ -1026,7 +1029,7 @@ lcg_init_common(struct device *self, str iounaccess((vaddr_t)lcg_config, 1); } lcg_depth = 8; - switch(magic) { + switch (magic) { case 0x80: /* KA46 HR 1280x1024 4BPLN */ lcg_depth = 4; case 0x05: /* KA48 HR 1280x1024 8BPLN */