aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/head_32.S
diff options
context:
space:
mode:
authorRich Felker <dalias@libc.org>2016-01-23 00:45:41 +0000
committerRich Felker <dalias@libc.org>2016-03-17 19:46:11 +0000
commit7480e0aabd5f9e6c3e3b72ed206e89284e90f11f (patch)
treeafcdb346dbec13ea4be79f062e9f849caedceaae /arch/sh/kernel/head_32.S
parentsh: remove arch-specific localtimer and use generic one (diff)
downloadlinux-dev-7480e0aabd5f9e6c3e3b72ed206e89284e90f11f.tar.xz
linux-dev-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.S13
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