ARC: explicit'ify uboot support
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
parent
fd1557923b
commit
036b2c5664
@ -388,6 +388,18 @@ config ARC_DBG_TLB_MISS_COUNT
|
|||||||
Counts number of I and D TLB Misses and exports them via Debugfs
|
Counts number of I and D TLB Misses and exports them via Debugfs
|
||||||
The counters can be cleared via Debugfs as well
|
The counters can be cleared via Debugfs as well
|
||||||
|
|
||||||
|
config ARC_UBOOT_SUPPORT
|
||||||
|
bool "Support uboot arg Handling"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
ARC Linux by default checks for uboot provided args as pointers to
|
||||||
|
external cmdline or DTB. This however breaks in absence of uboot,
|
||||||
|
when booting from Metaware debugger directly, as the registers are
|
||||||
|
not zeroed out on reset by mdb and/or ARCv2 based cores. The bogus
|
||||||
|
registers look like uboot args to kernel which then chokes.
|
||||||
|
So only enable the uboot arg checking/processing if users are sure
|
||||||
|
of uboot being in play.
|
||||||
|
|
||||||
config ARC_BUILTIN_DTB_NAME
|
config ARC_BUILTIN_DTB_NAME
|
||||||
string "Built in DTB"
|
string "Built in DTB"
|
||||||
help
|
help
|
||||||
|
@ -83,6 +83,7 @@ stext:
|
|||||||
st.ab 0, [r5, 4]
|
st.ab 0, [r5, 4]
|
||||||
1:
|
1:
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARC_UBOOT_SUPPORT
|
||||||
; Uboot - kernel ABI
|
; Uboot - kernel ABI
|
||||||
; r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2
|
; r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2
|
||||||
; r1 = magic number (board identity, unused as of now
|
; r1 = magic number (board identity, unused as of now
|
||||||
@ -90,6 +91,7 @@ stext:
|
|||||||
; These are handled later in setup_arch()
|
; These are handled later in setup_arch()
|
||||||
st r0, [@uboot_tag]
|
st r0, [@uboot_tag]
|
||||||
st r2, [@uboot_arg]
|
st r2, [@uboot_arg]
|
||||||
|
#endif
|
||||||
|
|
||||||
; setup "current" tsk and optionally cache it in dedicated r25
|
; setup "current" tsk and optionally cache it in dedicated r25
|
||||||
mov r9, @init_task
|
mov r9, @init_task
|
||||||
|
@ -319,13 +319,16 @@ static inline int is_kernel(unsigned long addr)
|
|||||||
|
|
||||||
void __init setup_arch(char **cmdline_p)
|
void __init setup_arch(char **cmdline_p)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_ARC_UBOOT_SUPPORT
|
||||||
/* make sure that uboot passed pointer to cmdline/dtb is valid */
|
/* make sure that uboot passed pointer to cmdline/dtb is valid */
|
||||||
if (uboot_tag && is_kernel((unsigned long)uboot_arg))
|
if (uboot_tag && is_kernel((unsigned long)uboot_arg))
|
||||||
panic("Invalid uboot arg\n");
|
panic("Invalid uboot arg\n");
|
||||||
|
|
||||||
/* See if u-boot passed an external Device Tree blob */
|
/* See if u-boot passed an external Device Tree blob */
|
||||||
machine_desc = setup_machine_fdt(uboot_arg); /* uboot_tag == 2 */
|
machine_desc = setup_machine_fdt(uboot_arg); /* uboot_tag == 2 */
|
||||||
if (!machine_desc) {
|
if (!machine_desc)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
/* No, so try the embedded one */
|
/* No, so try the embedded one */
|
||||||
machine_desc = setup_machine_fdt(__dtb_start);
|
machine_desc = setup_machine_fdt(__dtb_start);
|
||||||
if (!machine_desc)
|
if (!machine_desc)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user