root/arch/sparc/prom/bootstr_32.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. prom_getbootargs

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * bootstr.c:  Boot string/argument acquisition from the PROM.
   4  *
   5  * Copyright(C) 1995 David S. Miller (davem@caip.rutgers.edu)
   6  */
   7 
   8 #include <linux/string.h>
   9 #include <asm/oplib.h>
  10 #include <linux/init.h>
  11 
  12 #define BARG_LEN  256
  13 static char barg_buf[BARG_LEN] = { 0 };
  14 static char fetched __initdata = 0;
  15 
  16 char * __init
  17 prom_getbootargs(void)
  18 {
  19         int iter;
  20         char *cp, *arg;
  21 
  22         /* This check saves us from a panic when bootfd patches args. */
  23         if (fetched) {
  24                 return barg_buf;
  25         }
  26 
  27         switch (prom_vers) {
  28         case PROM_V0:
  29                 cp = barg_buf;
  30                 /* Start from 1 and go over fd(0,0,0)kernel */
  31                 for (iter = 1; iter < 8; iter++) {
  32                         arg = (*(romvec->pv_v0bootargs))->argv[iter];
  33                         if (arg == NULL)
  34                                 break;
  35                         while (*arg != 0) {
  36                                 /* Leave place for space and null. */
  37                                 if (cp >= barg_buf + BARG_LEN - 2)
  38                                         /* We might issue a warning here. */
  39                                         break;
  40                                 *cp++ = *arg++;
  41                         }
  42                         *cp++ = ' ';
  43                         if (cp >= barg_buf + BARG_LEN - 1)
  44                                 /* We might issue a warning here. */
  45                                 break;
  46                 }
  47                 *cp = 0;
  48                 break;
  49         case PROM_V2:
  50         case PROM_V3:
  51                 /*
  52                  * V3 PROM cannot supply as with more than 128 bytes
  53                  * of an argument. But a smart bootstrap loader can.
  54                  */
  55                 strlcpy(barg_buf, *romvec->pv_v2bootargs.bootargs, sizeof(barg_buf));
  56                 break;
  57         default:
  58                 break;
  59         }
  60 
  61         fetched = 1;
  62         return barg_buf;
  63 }

/* [<][>][^][v][top][bottom][index][help] */