summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2013-05-21 03:05:49 +0000
committermarcel <marcel@FreeBSD.org>2013-05-21 03:05:49 +0000
commit65b2bbd1ff199671c94b2cda153da397c3ccf21b (patch)
tree0d3cc07ded5112e72a074450de122954cf708679 /sys/amd64
parent1d4da2d9049dfe73f6d7dbb505b2eb67b74bb01a (diff)
downloadFreeBSD-src-65b2bbd1ff199671c94b2cda153da397c3ccf21b.zip
FreeBSD-src-65b2bbd1ff199671c94b2cda153da397c3ccf21b.tar.gz
Add basic support for FDT to i386 & amd64. This change includes:
1. Common headers for fdt.h and ofw_machdep.h under x86/include with indirections under i386/include and amd64/include. 2. New modinfo for loader provided FDT blob. 3. Common x86_init_fdt() called from hammer_time() on amd64 and init386() on i386. 4. Split-off FDT specific low-level console functions from FDT bus methods for the uart(4) driver. The low-level console logic has been moved to uart_cpu_fdt.c and is used for arm, mips & powerpc only. The FDT bus methods are shared across all architectures. 5. Add dev/fdt/fdt_x86.c to hold the fdt_fixup_table[] and the fdt_pic_table[] arrays. Both are empty right now. FDT addresses are I/O ports on x86. Since the core FDT code does not handle different address spaces, adding support for both I/O ports and memory addresses requires some thought and discussion. It may be better to use a compile-time option that controls this. Obtained from: Juniper Networks, Inc.
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/machdep.c8
-rw-r--r--sys/amd64/include/fdt.h6
-rw-r--r--sys/amd64/include/metadata.h1
-rw-r--r--sys/amd64/include/ofw_machdep.h6
4 files changed, 21 insertions, 0 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index a543421..bc336e9 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$");
#include "opt_maxmem.h"
#include "opt_mp_watchdog.h"
#include "opt_perfmon.h"
+#include "opt_platform.h"
#include "opt_sched.h"
#include "opt_kdtrace.h"
@@ -133,6 +134,9 @@ __FBSDID("$FreeBSD$");
#ifdef SMP
#include <machine/smp.h>
#endif
+#ifdef FDT
+#include <x86/fdt.h>
+#endif
#ifdef DEV_ATPIC
#include <x86/isa/icu.h>
@@ -1886,6 +1890,10 @@ hammer_time(u_int64_t modulep, u_int64_t physfree)
cpu_probe_amdc1e();
+#ifdef FDT
+ x86_init_fdt();
+#endif
+
/* Location of kernel stack for locore */
return ((u_int64_t)thread0.td_pcb);
}
diff --git a/sys/amd64/include/fdt.h b/sys/amd64/include/fdt.h
new file mode 100644
index 0000000..1a03514
--- /dev/null
+++ b/sys/amd64/include/fdt.h
@@ -0,0 +1,6 @@
+/*-
+ * This file is in the public domain.
+ */
+/* $FreeBSD$ */
+
+#include <x86/fdt.h>
diff --git a/sys/amd64/include/metadata.h b/sys/amd64/include/metadata.h
index 4c7ec9e..73c9207 100644
--- a/sys/amd64/include/metadata.h
+++ b/sys/amd64/include/metadata.h
@@ -31,5 +31,6 @@
#define MODINFOMD_SMAP 0x1001
#define MODINFOMD_SMAP_XATTR 0x1002
+#define MODINFOMD_DTBP 0x1003
#endif /* !_MACHINE_METADATA_H_ */
diff --git a/sys/amd64/include/ofw_machdep.h b/sys/amd64/include/ofw_machdep.h
new file mode 100644
index 0000000..4457f85
--- /dev/null
+++ b/sys/amd64/include/ofw_machdep.h
@@ -0,0 +1,6 @@
+/*-
+ * This file is in the public domain.
+ */
+/* $FreeBSD$ */
+
+#include <x86/ofw_machdep.h>
OpenPOWER on IntegriCloud