1 1.1 fredette /* $NetBSD: promboot.c,v 1.1 2001/06/14 12:57:15 fredette Exp $ */ 2 1.1 fredette 3 1.1 fredette 4 1.1 fredette #include <sys/param.h> 5 1.1 fredette #include <sys/reboot.h> 6 1.1 fredette 7 1.1 fredette #include <machine/mon.h> 8 1.1 fredette 9 1.1 fredette #include "stand.h" 10 1.1 fredette #include "libsa.h" 11 1.1 fredette 12 1.1 fredette int debug = 0; 13 1.1 fredette int prom_boothow; 14 1.1 fredette char * prom_bootfile; 15 1.1 fredette char prom_bootdev[32]; 16 1.1 fredette 17 1.1 fredette /* 18 1.1 fredette * Get useful info from the PROM bootparams struct, i.e.: 19 1.1 fredette * arg[0] = sd(0,0,0)netbsd 20 1.1 fredette * arg[1] = -sa 21 1.1 fredette */ 22 1.1 fredette 23 1.1 fredette void 24 1.1 fredette prom_get_boot_info() 25 1.1 fredette { 26 1.1 fredette struct bootparam *bp; 27 1.1 fredette char c, *src, *dst; 28 1.1 fredette 29 1.1 fredette #ifdef DEBUG 30 1.1 fredette printf("prom_get_boot_info\n"); 31 1.1 fredette #endif 32 1.1 fredette 33 1.1 fredette bp = *romVectorPtr->bootParam; 34 1.1 fredette 35 1.1 fredette /* Get device and file names. */ 36 1.1 fredette src = bp->argPtr[0]; 37 1.1 fredette dst = prom_bootdev; 38 1.1 fredette *dst++ = *src++; 39 1.1 fredette *dst++ = *src++; 40 1.1 fredette if (*src == '(') { 41 1.1 fredette while (*src) { 42 1.1 fredette c = *src++; 43 1.1 fredette *dst++ = c; 44 1.1 fredette if (c == ')') 45 1.1 fredette break; 46 1.1 fredette } 47 1.1 fredette *dst = '\0'; 48 1.1 fredette } 49 1.1 fredette prom_bootfile = src; 50 1.1 fredette 51 1.1 fredette /* Get boothowto flags. */ 52 1.1 fredette src = bp->argPtr[1]; 53 1.1 fredette if (src && (*src == '-')) { 54 1.1 fredette while (*src) { 55 1.1 fredette switch (*src++) { 56 1.1 fredette case 'a': 57 1.1 fredette prom_boothow |= RB_ASKNAME; 58 1.1 fredette break; 59 1.1 fredette case 's': 60 1.1 fredette prom_boothow |= RB_SINGLE; 61 1.1 fredette break; 62 1.1 fredette case 'd': 63 1.1 fredette prom_boothow |= RB_KDB; 64 1.1 fredette debug++; 65 1.1 fredette break; 66 1.1 fredette } 67 1.1 fredette } 68 1.1 fredette } 69 1.1 fredette 70 1.1 fredette if (debug) { 71 1.1 fredette printf("Debug level %d - enter c to continue...", debug); 72 1.1 fredette /* This will print "\nAbort at ...\n" */ 73 1.1 fredette breakpoint(); 74 1.1 fredette } 75 1.1 fredette } 76