1f6f0c436SMarc Zyngier // SPDX-License-Identifier: GPL-2.0 2f6f0c436SMarc Zyngier 3f6f0c436SMarc Zyngier #ifndef __ARM64_ASM_SETUP_H 4f6f0c436SMarc Zyngier #define __ARM64_ASM_SETUP_H 5f6f0c436SMarc Zyngier 62e8cff0aSMark Rutland #include <linux/string.h> 72e8cff0aSMark Rutland 8f6f0c436SMarc Zyngier #include <uapi/asm/setup.h> 9f6f0c436SMarc Zyngier 10f6f0c436SMarc Zyngier void *get_early_fdt_ptr(void); 11f6f0c436SMarc Zyngier void early_fdt_map(u64 dt_phys); 12f6f0c436SMarc Zyngier 131dfde089SAnders Roxell /* 141dfde089SAnders Roxell * These two variables are used in the head.S file. 151dfde089SAnders Roxell */ 161dfde089SAnders Roxell extern phys_addr_t __fdt_pointer __initdata; 171dfde089SAnders Roxell extern u64 __cacheline_aligned boot_args[4]; 181dfde089SAnders Roxell arch_parse_debug_rodata(char * arg)192e8cff0aSMark Rutlandstatic inline bool arch_parse_debug_rodata(char *arg) 202e8cff0aSMark Rutland { 212e8cff0aSMark Rutland extern bool rodata_enabled; 222e8cff0aSMark Rutland extern bool rodata_full; 232e8cff0aSMark Rutland 24*1bf36832SWill Deacon if (!arg) 25*1bf36832SWill Deacon return false; 26*1bf36832SWill Deacon 27*1bf36832SWill Deacon if (!strcmp(arg, "full")) { 28*1bf36832SWill Deacon rodata_enabled = rodata_full = true; 29*1bf36832SWill Deacon return true; 30*1bf36832SWill Deacon } 31*1bf36832SWill Deacon 32*1bf36832SWill Deacon if (!strcmp(arg, "off")) { 33*1bf36832SWill Deacon rodata_enabled = rodata_full = false; 34*1bf36832SWill Deacon return true; 35*1bf36832SWill Deacon } 36*1bf36832SWill Deacon 37*1bf36832SWill Deacon if (!strcmp(arg, "on")) { 382e8cff0aSMark Rutland rodata_enabled = true; 39*1bf36832SWill Deacon rodata_full = false; 402e8cff0aSMark Rutland return true; 412e8cff0aSMark Rutland } 422e8cff0aSMark Rutland 432e8cff0aSMark Rutland return false; 442e8cff0aSMark Rutland } 452e8cff0aSMark Rutland #define arch_parse_debug_rodata arch_parse_debug_rodata 462e8cff0aSMark Rutland 47f6f0c436SMarc Zyngier #endif 48