diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-09-28 14:38:26 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-09-28 14:38:26 +0000 |
commit | f140fdc244e082f612eaae60a1feae542e0e19d3 (patch) | |
tree | 4654d0e5fabfdc2f9e9f5edab8c2607436b40be4 /c/src/lib/libbsp/arm/lpc32xx/misc | |
parent | 2010-09-28 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-f140fdc244e082f612eaae60a1feae542e0e19d3.tar.bz2 |
2010-09-28 Sebastian Huber <sebastian.huber@embedded-brains.de>
* misc/mmu.c: New file.
* Makefile.am: Reflect change above.
* configure.ac, include/bspopts.h.in, include/irq.h,
include/lpc32xx.h, include/mmu.h, misc/emc.c, misc/restart.c,
startup/bspstarthooks.c: Changes throughout.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/misc/emc.c | 26 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c | 39 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/misc/restart.c | 6 |
3 files changed, 46 insertions, 25 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c b/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c index 0a6d75c5bc..c03aed0052 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c +++ b/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c @@ -26,22 +26,6 @@ static volatile lpc32xx_emc *const emc = &lpc32xx.emc; -static void set_translation_table_entries( - uint32_t begin, - uint32_t size -) -{ - uint32_t end = begin + size; - uint32_t *ttb = arm_cp15_get_translation_table_base(); - uint32_t i = ARM_MMU_SECT_GET_INDEX(begin); - uint32_t iend = ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(end)); - - while (i < iend) { - ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | LPC32XX_MMU_READ_WRITE; - ++i; - } -} - static void dynamic_init(const lpc32xx_emc_dynamic_config *cfg) { uint32_t chip_begin = LPC32XX_BASE_EMC_DYCS_0; @@ -89,11 +73,15 @@ static void dynamic_init(const lpc32xx_emc_dynamic_config *cfg) /* Set modes */ for (i = 0; i < EMC_DYN_CHIP_COUNT; ++i) { if (cfg->chip [i].size != 0) { - set_translation_table_entries(chip_begin, cfg->chip [i].size); + lpc32xx_set_translation_table_entries( + (void *) chip_begin, + (void *) (chip_begin + cfg->chip [i].size), + LPC32XX_MMU_READ_WRITE + ); emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_MODE; - *(volatile uint32_t *)(LPC32XX_BASE_EMC_DYCS_0 + cfg->chip [i].mode); + *(volatile uint32_t *)(chip_begin + cfg->chip [i].mode); emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_MODE; - *(volatile uint32_t *)(LPC32XX_BASE_EMC_DYCS_0 + cfg->chip [i].extmode); + *(volatile uint32_t *)(chip_begin + cfg->chip [i].extmode); } chip_begin += 0x20000000; } diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c b/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c new file mode 100644 index 0000000000..9eeee9a11e --- /dev/null +++ b/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c @@ -0,0 +1,39 @@ +/** + * @file + * + * @ingroup lpc32xx_mmu + * + * @brief MMU support implementation. + */ + +/* + * Copyright (c) 2010 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#include <bsp/mmu.h> + +void lpc32xx_set_translation_table_entries( + void *begin, + void *end, + uint32_t section_flags +) +{ + uint32_t *ttb = arm_cp15_get_translation_table_base(); + uint32_t i = ARM_MMU_SECT_GET_INDEX(begin); + uint32_t iend = ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(end)); + + while (i < iend) { + ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | section_flags; + ++i; + } +} diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c b/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c index b286390237..0d658f712d 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c +++ b/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c @@ -31,12 +31,6 @@ void lpc32xx_restart(void *addr) rtems_interrupt_level level; uint32_t ctrl = 0; - /* FIXME: DMA shutdown */ - - /* FIXME: USB shutdown */ - - /* FIXME: Ethernet interface reset */ - rtems_interrupt_disable(level); arm_cp15_data_cache_test_and_clean(); |