diff options
author | imp <imp@FreeBSD.org> | 2012-06-15 08:37:50 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2012-06-15 08:37:50 +0000 |
commit | 88f68062a5f9d1e85489c6f104cc59e12b41c7bb (patch) | |
tree | 9c000993641ecca80a8e61c6a9d90d36c19c762c /sys/arm/at91/at91_machdep.c | |
parent | 968a30af3f039378ca81b54c0f3ba5cdd06dcb58 (diff) | |
download | FreeBSD-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.c | 27 |
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; +} |