summaryrefslogtreecommitdiffstats
path: root/sys/i386
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/i386
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/i386')
-rw-r--r--sys/i386/i386/machdep.c8
-rw-r--r--sys/i386/include/fdt.h6
-rw-r--r--sys/i386/include/metadata.h1
-rw-r--r--sys/i386/include/ofw_machdep.h6
4 files changed, 21 insertions, 0 deletions
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index 226b62b..f67f758 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$");
#include "opt_mp_watchdog.h"
#include "opt_npx.h"
#include "opt_perfmon.h"
+#include "opt_platform.h"
#include "opt_xbox.h"
#include "opt_kdtrace.h"
@@ -138,6 +139,9 @@ __FBSDID("$FreeBSD$");
#ifdef SMP
#include <machine/smp.h>
#endif
+#ifdef FDT
+#include <x86/fdt.h>
+#endif
#ifdef DEV_APIC
#include <machine/apicvar.h>
@@ -3113,6 +3117,10 @@ init386(first)
cpu_probe_amdc1e();
cpu_probe_cmpxchg8b();
+
+#ifdef FDT
+ x86_init_fdt();
+#endif
}
#endif
diff --git a/sys/i386/include/fdt.h b/sys/i386/include/fdt.h
new file mode 100644
index 0000000..1a03514
--- /dev/null
+++ b/sys/i386/include/fdt.h
@@ -0,0 +1,6 @@
+/*-
+ * This file is in the public domain.
+ */
+/* $FreeBSD$ */
+
+#include <x86/fdt.h>
diff --git a/sys/i386/include/metadata.h b/sys/i386/include/metadata.h
index 4c7ec9e..73c9207 100644
--- a/sys/i386/include/metadata.h
+++ b/sys/i386/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/i386/include/ofw_machdep.h b/sys/i386/include/ofw_machdep.h
new file mode 100644
index 0000000..4457f85
--- /dev/null
+++ b/sys/i386/include/ofw_machdep.h
@@ -0,0 +1,6 @@
+/*-
+ * This file is in the public domain.
+ */
+/* $FreeBSD$ */
+
+#include <x86/ofw_machdep.h>
OpenPOWER on IntegriCloud