summaryrefslogtreecommitdiffstats
path: root/sys/arm/xscale/i80321/ep80219_machdep.c
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-02-09 02:39:00 +0000
committerian <ian@FreeBSD.org>2014-02-09 02:39:00 +0000
commit0a3cc34ebf8a1addd43696f8b6d67b2cac66f4ef (patch)
tree266f29fe769a24ec0a2d14b68ffda3be4d51f89b /sys/arm/xscale/i80321/ep80219_machdep.c
parent968d73cfcfb42ebbae51433827c6cc01429139fe (diff)
downloadFreeBSD-src-0a3cc34ebf8a1addd43696f8b6d67b2cac66f4ef.zip
FreeBSD-src-0a3cc34ebf8a1addd43696f8b6d67b2cac66f4ef.tar.gz
It turns out a global variable is the only straightforward way to
communicate the kernel's physical load address from where it's known in initarm() into cpu_mp_start() which is called from non-arm code and takes no parameters. This adds the global variable and ensures that all the various copies of initarm() set it. It uses the variable in cpu_mp_start(), eliminating the last uses of KERNPHYSADDR outside of locore.S (where we can now calculate it instead of relying on the constant).
Diffstat (limited to 'sys/arm/xscale/i80321/ep80219_machdep.c')
-rw-r--r--sys/arm/xscale/i80321/ep80219_machdep.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/arm/xscale/i80321/ep80219_machdep.c b/sys/arm/xscale/i80321/ep80219_machdep.c
index cf2e35e..4a58f37 100644
--- a/sys/arm/xscale/i80321/ep80219_machdep.c
+++ b/sys/arm/xscale/i80321/ep80219_machdep.c
@@ -86,6 +86,7 @@ __FBSDID("$FreeBSD$");
#include <machine/metadata.h>
#include <machine/armreg.h>
#include <machine/bus.h>
+#include <machine/physmem.h>
#include <sys/reboot.h>
#include <arm/xscale/i80321/i80321reg.h>
@@ -175,6 +176,7 @@ initarm(struct arm_boot_params *abp)
uint32_t memsize, memstart;
lastaddr = parse_boot_param(abp);
+ arm_physmem_kernaddr = abp->abp_physaddr;
set_cpufuncs();
pcpu_init(pcpup, 0, sizeof(struct pcpu));
PCPU_SET(curthread, &thread0);
OpenPOWER on IntegriCloud