summaryrefslogtreecommitdiffstats
path: root/sys/arm/at91/at91_machdep.c
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2012-06-15 08:37:50 +0000
committerimp <imp@FreeBSD.org>2012-06-15 08:37:50 +0000
commit88f68062a5f9d1e85489c6f104cc59e12b41c7bb (patch)
tree9c000993641ecca80a8e61c6a9d90d36c19c762c /sys/arm/at91/at91_machdep.c
parent968a30af3f039378ca81b54c0f3ba5cdd06dcb58 (diff)
downloadFreeBSD-src-88f68062a5f9d1e85489c6f104cc59e12b41c7bb.zip
FreeBSD-src-88f68062a5f9d1e85489c6f104cc59e12b41c7bb.tar.gz
Make it possible to link together a sam and an rm kernel. The results
aren't very pretty yet, but this takes DELAY and cpu_reset and makes them pointers. # I worry that these are set too late in the boot, especially cpu_reset.
Diffstat (limited to 'sys/arm/at91/at91_machdep.c')
-rw-r--r--sys/arm/at91/at91_machdep.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/sys/arm/at91/at91_machdep.c b/sys/arm/at91/at91_machdep.c
index 63aa644..b0508de 100644
--- a/sys/arm/at91/at91_machdep.c
+++ b/sys/arm/at91/at91_machdep.c
@@ -201,11 +201,22 @@ const struct pmap_devmap at91_devmap[] = {
{ 0, 0, 0, 0, 0, }
};
+#ifdef LINUX_BOOT_ABI
+extern int membanks;
+extern int memstart[];
+extern int memsize[];
+#endif
+
long
at91_ramsize(void)
{
uint32_t cr, mr;
int banks, rows, cols, bw;
+#ifdef LINUX_BOOT_ABI
+ // If we found any ATAGs that were for memory, return the first bank.
+ if (membanks > 0)
+ return memsize[0];
+#endif
if (at91_is_rm92()) {
uint32_t *SDRAMC = (uint32_t *)(AT91_BASE + AT91RM92_SDRAMC_BASE);
@@ -593,3 +604,19 @@ cpu_initclocks(void)
{
}
+
+void
+DELAY(int n)
+{
+ if (soc_data.delay)
+ soc_data.delay(n);
+}
+
+void
+cpu_reset(void)
+{
+ if (soc_data.reset)
+ soc_data.reset();
+ while (1)
+ continue;
+}
OpenPOWER on IntegriCloud