Skip to content

Instantly share code, notes, and snippets.

@nullnilaki
Created January 1, 2019 02:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nullnilaki/9696a23d1251b2c61cdf2408f1ba5a68 to your computer and use it in GitHub Desktop.
Save nullnilaki/9696a23d1251b2c61cdf2408f1ba5a68 to your computer and use it in GitHub Desktop.
iris_boot additional patch
diff -Naru NetBSD_irisboot.orig/common/iris_boot.c NetBSD_irisboot/common/iris_boot.c
--- NetBSD_irisboot.orig/common/iris_boot.c 2018-12-31 21:15:11.369528923 +0000
+++ NetBSD_irisboot/common/iris_boot.c 2018-12-31 21:44:37.994480922 +0000
@@ -88,10 +88,28 @@
/* initialise bootinfo structure early */
bi_init(bootinfo);
- if (strstr(argv[1], "dksc(")) {
- parse(argv, kernelname);
- } else {
- abort();
+ switch (argc) {
+#ifdef INDIGO_R3K_MODE
+ case 1:
+ again();
+ break;
+#endif
+ case 2:
+ /* To specify HDD on Indigo R3K */
+ if (strstr(argv[1], "dksc(")) {
+ parse(argv, kernelname);
+ } else {
+ again();
+ }
+ break;
+ default:
+ /* To specify HDD on Indigo R4K and Indy */
+ if (strstr(argv[1], "dksc(")) {
+ parse(argv, kernelname);
+ } else {
+ again();
+ }
+ break;
}
find_devs();
@@ -100,11 +118,7 @@
if (win < 0) {
printf("Boot failed! Halting...\n");
-#ifdef INDIGO_R3K_MODE
- romrestart();
-#else
- arcbios_Reboot();
-#endif
+ reboot();
}
strlcpy(bi_bpath.bootpath, kernelname, BTINFO_BOOTPATH_LEN);
@@ -123,11 +137,16 @@
}
void
-abort(void)
+again(void)
{
-
printf("Invalid argument\n");
printf("i.e., dksc(0,X,8)loader dksc(0,X,0)/kernel\n");
+ reboot();
+}
+
+void
+reboot(void)
+{
#ifdef INDIGO_R3K_MODE
romrestart();
#else
diff -Naru NetBSD_irisboot.orig/common/iris_disk.c NetBSD_irisboot/common/iris_disk.c
--- NetBSD_irisboot.orig/common/iris_disk.c 2018-12-31 21:15:11.373129923 +0000
+++ NetBSD_irisboot/common/iris_disk.c 2018-12-31 21:40:30.682090922 +0000
@@ -150,11 +150,7 @@
if (stat != 0) {
printf("diskinit abort!\n");
printf("Boot failed! Halting...\n");
-#ifdef INDIGO_R3K_MODE
- romrestart();
-#else
- arcbios_Reboot();
-#endif
+ reboot();
}
}
@@ -220,7 +216,7 @@
if (msg) {
/* If no label, just assume 0 and return */
printf("No disklabel...\n");
- return 0;
+ reboot();
}
return 0;
diff -Naru NetBSD_irisboot.orig/common/iris_machdep.h NetBSD_irisboot/common/iris_machdep.h
--- NetBSD_irisboot.orig/common/iris_machdep.h 2018-12-31 21:15:11.374121923 +0000
+++ NetBSD_irisboot/common/iris_machdep.h 2018-12-31 21:35:33.454806922 +0000
@@ -32,7 +32,8 @@
#include "iris_scsivar.h"
/* iris_boot.c */
-void abort(void);
+void again(void);
+void reboot(void);
/* iris_parse.c */
void parse(char **, char *);
diff -Naru NetBSD_irisboot.orig/common/iris_parse.c NetBSD_irisboot/common/iris_parse.c
--- NetBSD_irisboot.orig/common/iris_parse.c 2018-12-31 21:15:11.375916923 +0000
+++ NetBSD_irisboot/common/iris_parse.c 2018-12-31 21:37:12.770926922 +0000
@@ -46,7 +46,7 @@
char *ep = strcpy(bootpath, argv[1]);
ep = strrchr(bootpath, '/');
if (ep == NULL)
- abort();
+ again();
strcpy(kernelname, ep + 1);
@@ -56,7 +56,7 @@
ep = strchr(bootpath, '(');
if (ep == NULL)
/* horrible! */
- abort();
+ again();
/* ctlr,id,part */
strcpy(disksetting, ep + 1);
@@ -76,5 +76,5 @@
}
if ((scsi_ctlr == 255) || (scsi_id == 255) || (scsi_part == 255))
- abort();
+ again();
}
diff -Naru NetBSD_irisboot.orig/common/iris_scsi.c NetBSD_irisboot/common/iris_scsi.c
--- NetBSD_irisboot.orig/common/iris_scsi.c 2018-12-31 21:15:11.374936923 +0000
+++ NetBSD_irisboot/common/iris_scsi.c 2018-12-31 21:46:42.389370921 +0000
@@ -286,11 +286,7 @@
printf("wd33c93_selectbus: wrong target selected WANTED %d GOT %d \n",
target, id);
printf("Boot failed! Halting...\n");
-#ifdef INDIGO_R3K_MODE
- romrestart();
-#else
- arcbios_Reboot();
-#endif
+ reboot();
}
sc->sc_flags |= SBICF_SELECTED;
@@ -462,11 +458,7 @@
/* Something unexpected happend -- deal with it. */
printf("wd33c93_nextstate:abort\n");
printf("Boot failed! Halting...\n");
-#ifdef INDIGO_R3K_MODE
- romrestart();
-#else
- arcbios_Reboot();
-#endif
+ reboot();
}
return SBIC_STATE_RUNNING;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment