diff options
author | marcel <marcel@FreeBSD.org> | 2013-05-21 03:05:49 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2013-05-21 03:05:49 +0000 |
commit | 65b2bbd1ff199671c94b2cda153da397c3ccf21b (patch) | |
tree | 0d3cc07ded5112e72a074450de122954cf708679 /sys/amd64 | |
parent | 1d4da2d9049dfe73f6d7dbb505b2eb67b74bb01a (diff) | |
download | FreeBSD-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.c | 8 | ||||
-rw-r--r-- | sys/amd64/include/fdt.h | 6 | ||||
-rw-r--r-- | sys/amd64/include/metadata.h | 1 | ||||
-rw-r--r-- | sys/amd64/include/ofw_machdep.h | 6 |
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> |