-
-
Save nullnilaki/9696a23d1251b2c61cdf2408f1ba5a68 to your computer and use it in GitHub Desktop.
iris_boot additional patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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