diff options
author | Rich Felker <dalias@libc.org> | 2016-01-23 00:45:41 +0000 |
---|---|---|
committer | Rich Felker <dalias@libc.org> | 2016-03-17 19:46:11 +0000 |
commit | 7480e0aabd5f9e6c3e3b72ed206e89284e90f11f (patch) | |
tree | afcdb346dbec13ea4be79f062e9f849caedceaae /arch/sh/kernel/head_32.S | |
parent | 45624ac38926c8c2f1a63b4a39e7b1997743e1b3 (diff) | |
download | lwn-7480e0aabd5f9e6c3e3b72ed206e89284e90f11f.tar.gz lwn-7480e0aabd5f9e6c3e3b72ed206e89284e90f11f.zip |
sh: add device tree support and generic board using device tree
Add a new pseudo-board, within the existing SH boards/machine-vectors
framework, which does not represent any actual hardware but instead
requires all hardware to be described by the device tree blob provided
by the boot loader. Changes made are thus non-invasive and do not risk
breaking support for legacy boards.
New hardware, including the open-hardware J2 and associated SoC
devices, will use device free from the outset. Legacy SH boards can
transition to device tree once all their hardware has device tree
bindings, driver support for device tree, and a dts file for the
board.
It is intented that, once all boards are supported in the new
framework, the existing machine-vectors framework should be removed
and the new device tree setup code integrated directly.
Signed-off-by: Rich Felker <dalias@libc.org>
Diffstat (limited to 'arch/sh/kernel/head_32.S')
-rw-r--r-- | arch/sh/kernel/head_32.S | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/sh/kernel/head_32.S b/arch/sh/kernel/head_32.S index 7db248936b60..974bc152cc84 100644 --- a/arch/sh/kernel/head_32.S +++ b/arch/sh/kernel/head_32.S @@ -66,6 +66,10 @@ ENTRY(_stext) mov #0, r0 ldc r0, r6_bank #endif + +#ifdef CONFIG_OF + mov r4, r12 ! Store device tree blob pointer in r12 +#endif /* * Prefetch if possible to reduce cache miss penalty. @@ -314,6 +318,12 @@ ENTRY(_stext) 10: #endif +#ifdef CONFIG_OF + mov.l 8f, r0 ! Make flat device tree available early. + jsr @r0 + mov r12, r4 +#endif + ! Additional CPU initialization mov.l 6f, r0 jsr @r0 @@ -339,6 +349,9 @@ ENTRY(stack_start) 5: .long start_kernel 6: .long cpu_init 7: .long init_thread_union +#if defined(CONFIG_OF) +8: .long sh_fdt_init +#endif #ifdef CONFIG_PMB .LPMB_ADDR: .long PMB_ADDR |