1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2020 Marvell International Ltd. 4 */ 5 6 #ifndef __BOOTOCT_CMD_H__ 7 #define __BOOTOCT_CMD_H__ 8 9 #include "cvmx-coremask.h" 10 11 enum octeon_boot_cmd_type { 12 BOOTOCT, 13 BOOTOCTLINUX, 14 BOOTOCTELF 15 }; 16 17 /** Structure to contain results of command line argument parsing */ 18 struct octeon_boot_args { 19 struct cvmx_coremask coremask; /** Parsed coremask */ 20 int num_cores[CVMX_MAX_NODES]; /** number of cores */ 21 int num_skipped[CVMX_MAX_NODES];/** number of skipped cores */ 22 const char *app_name; /** Application name */ 23 const char *named_block; /** Named block to load Linux into */ 24 u32 stack_size; /** stack size */ 25 u32 heap_size; /** heap size */ 26 u32 boot_flags; /** boot flags */ 27 int node_mask; /** Node mask to use */ 28 int console_uart; /** serial console number */ 29 bool forceboot; /** force booting if core 0 not set */ 30 bool coremask_set; /** set if coremask was set */ 31 bool num_cores_set; /** Set if num_cores was set */ 32 bool num_skipped_set; /** Set if num_skipped was set */ 33 /** Set if endbootargs parameter was passed. */ 34 bool endbootargs; 35 }; 36 37 /** 38 * Parse command line arguments 39 * 40 * @param argc number of arguments 41 * @param[in] argv array of argument strings 42 * @param cmd command type 43 * @param[out] boot_args parsed values 44 * 45 * @return number of arguments parsed 46 */ 47 int octeon_parse_bootopts(int argc, char *const argv[], 48 enum octeon_boot_cmd_type cmd, 49 struct octeon_boot_args *boot_args); 50 51 void nmi_bootvector(void); 52 extern u64 nmi_handler_para[]; 53 54 #endif /* __BOOTOCT_CMD_H__ */ 55