1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.
  24  * Copyright 2019 Peter Tribble.
  25  */
  26 
  27 #ifndef _BOOT_PLAT_H
  28 #define _BOOT_PLAT_H
  29 
  30 #ifdef __cplusplus
  31 extern "C" {
  32 #endif
  33 
  34 
  35 /*
  36  * boot platform defaults per architecture
  37  */
  38 typedef struct bootplat_defaults {
  39         char    *plat_defaults_name;
  40         char    *plat_defaults_path;
  41         int     plat_defaults_vac;
  42 } bootplat_defaults_t;
  43 
  44 /* boot_plat.c */
  45 extern int      verbosemode;
  46 extern char     filename[];
  47 extern char     *const defname;
  48 extern char     *const defname64;
  49 
  50 extern int      bootprog(char *, char *, boolean_t);
  51 extern char     *choose_default_filename(char *, char *);
  52 extern char     *get_default_filename(void);
  53 extern void     post_mountroot(char *, char *);
  54 extern void     redirect_boot_path(char *, char *);
  55 extern void     set_client_bootargs(const char *, const char *);
  56 extern boolean_t is_netdev(char *devpath);
  57 
  58 
  59 /* bootops.c */
  60 extern struct bootops   bootops;
  61 
  62 extern void     setup_bootops(void);
  63 extern void     update_memlist(char *, char *, struct memlist **);
  64 
  65 
  66 /*
  67  * bootprop.c.  These variables will be exported to the standalone as boot
  68  * properties.
  69  */
  70 extern char     *v2path, *kernname, *systype, *my_own_name;
  71 extern char     v2args_buf[];
  72 #define V2ARGS_BUF_SZ   OBP_MAXPATHLEN
  73 extern char     *v2args;
  74 extern char     *mfg_name;
  75 extern char     *impl_arch_name;
  76 extern char     *bootp_response;
  77 extern char     *boot_message;
  78 extern int      cache_state;
  79 extern uint64_t memlistextent;
  80 extern char     *netdev_path;
  81 
  82 extern void     set_default_filename(char *filename);
  83 
  84 
  85 /* get.c */
  86 extern int      cons_gets(char *, int);
  87 
  88 
  89 /* machdep.c */
  90 extern int  vac;
  91 
  92 extern void     fiximp(void);
  93 extern void     retain_nvram_page();
  94 
  95 
  96 /* memlist.c */
  97 extern void             init_memlists(void);
  98 extern struct memlist   *fill_memlists(char *name, char *prop,
  99     struct memlist *old);
 100 
 101 
 102 /* srt0.c */
 103 extern void     _start(void *romp, ...);
 104 extern void     exitto(int (*entrypoint)());
 105 extern void     exitto64(int (*entrypoint)(), void *bootvec);
 106 
 107 
 108 /* standalloc.c */
 109 extern caddr_t  memlistpage;
 110 extern caddr_t  scratchmemp;
 111 
 112 
 113 
 114 #ifdef __cplusplus
 115 }
 116 #endif
 117 
 118 #endif /* _BOOT_PLAT_H */