Please review the patch on the previous reply only.
On Mon, Sep 16, 2013 at 6:23 PM, Hesham Moustafa <heshamelmat...@gmail.com>wrote: > From 4d2a4662da9b0988c9e871490ed4ca466940754b Mon Sep 17 00:00:00 2001 > From: Hesham AL-Matary <heshamelmat...@gmail.com> > Date: Sun, 15 Sep 2013 12:37:25 +0200 > Subject: [PATCH 2/3] shared MMU initialization for ARM BSPs > > The newly added ORed flag: ARM_CP15_CTRL_XP is vital to get RaspberryPi > MMU working properly and to share the container function between various > ARM BSPs. The new ORed flags do not affect the current BSPs that make use > of arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache > function. > > The rest is of the patch targets MMU initialization for ARM architectures, > desgined to be shared. Later patches make use of shared mminit > implementation. > --- > .../lib/libbsp/arm/shared/include/arm-cp15-start.h | 12 +++++---- > c/src/lib/libbsp/arm/shared/mminit.c | 27 > +++++++++++++++++++ > c/src/lib/libbsp/shared/include/mm.h | 31 > ++++++++++++++++++++++ > 3 files changed, 65 insertions(+), 5 deletions(-) > create mode 100644 c/src/lib/libbsp/arm/shared/mminit.c > create mode 100644 c/src/lib/libbsp/shared/include/mm.h > > diff --git a/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h > b/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h > index 01f3104..70b0f60 100644 > --- a/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h > +++ b/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h > @@ -1,4 +1,5 @@ > -/* > +/* > + * Copyright (c) 2013 Hesham AL-Matary. > * Copyright (c) 2009-2013 embedded brains GmbH. All rights reserved. > * > * embedded brains GmbH > @@ -16,7 +17,6 @@ > #define LIBBSP_ARM_SHARED_ARM_CP15_START_H > > #include <libcpu/arm-cp15.h> > - > #include <bsp/start.h> > > #ifdef __cplusplus > @@ -87,9 +87,9 @@ > arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache( > arm_cp15_set_domain_access_control(dac); > arm_cp15_set_translation_table_base(ttb); > > - /* Initialize translation table with invalid entries */ > + /* Initialize translation table with fixed-map read-write entries */ > for (i = 0; i < ARM_MMU_TRANSLATION_TABLE_ENTRY_COUNT; ++i) { > - ttb [i] = 0; > + ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | ARMV7_MMU_DATA_READ_WRITE; > } > > for (i = 0; i < config_count; ++i) { > @@ -97,7 +97,9 @@ > arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache( > } > > /* Enable MMU and cache */ > - ctrl |= ARM_CP15_CTRL_I | ARM_CP15_CTRL_C | ARM_CP15_CTRL_M; > + ctrl |= ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S | ARM_CP15_CTRL_I | > + ARM_CP15_CTRL_C | ARM_CP15_CTRL_M | ARM_CP15_CTRL_XP; > + > arm_cp15_set_control(ctrl); > } > > diff --git a/c/src/lib/libbsp/arm/shared/mminit.c > b/c/src/lib/libbsp/arm/shared/mminit.c > new file mode 100644 > index 0000000..c3d9f16 > --- /dev/null > +++ b/c/src/lib/libbsp/arm/shared/mminit.c > @@ -0,0 +1,27 @@ > +/* > + * Copyright (c) 2013 Hesham AL-Matary. > + * > + * 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/arm-cp15-start.h> > +#include <bsp/linker-symbols.h> > +#include <bsp/mm.h> > +#include <bsp/start.h> > + > +extern const arm_cp15_start_section_config bsp_mm_config_table[]; > +extern const size_t bsp_mm_config_table_size; > + > +BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void) > +{ > + uint32_t ctrl = arm_cp15_get_control(); > + > + arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache( > + ctrl, > + (uint32_t *) bsp_translation_table_base, > + ARM_MMU_DEFAULT_CLIENT_DOMAIN, > + &bsp_mm_config_table[0], > + bsp_mm_config_table_size > + ); > +} > diff --git a/c/src/lib/libbsp/shared/include/mm.h > b/c/src/lib/libbsp/shared/include/mm.h > new file mode 100644 > index 0000000..476c288 > --- /dev/null > +++ b/c/src/lib/libbsp/shared/include/mm.h > @@ -0,0 +1,31 @@ > +/* > + * Copyright (c) 2013 Hesham AL-Matary. > + * Copyright (c) 2013 Gedare Bloom. > + * > + * 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. > + */ > + > +#ifndef __LIBBSP_MM_H > +#define __LIBBSP_MM_H > + > +#include <stdint.h> > +#include <stdlib.h> > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +void bsp_memory_management_initialize(void); > + > +void bsp_memory_management_set_attributes( > + uintptr_t base, > + size_t size, > + uint32_t attr > +); > + > +#ifdef __cplusplus > +} > +#endif > +#endif > -- > 1.8.3.1 > > > > On Mon, Sep 16, 2013 at 6:17 PM, Hesham AL-Matary < > heshamelmat...@gmail.com> wrote: > >> The newly added ORed flag: ARM_CP15_CTRL_XP is vital to get RaspberryPi >> MMU working properly and to share the container function between various >> ARM BSPs. The new ORed flags do not affect the current BSPs that make use >> of arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache >> function. >> >> The rest is of the patch targets MMU initialization for ARM architectures, >> desgined to be shared. Later patches make use of shared mminit >> implementation. >> >> --- >> c/src/lib/libbsp/arm/shared/mminit.c | 27 +++++++++++++++++++++++++++ >> c/src/lib/libbsp/shared/include/mm.h | 31 +++++++++++++++++++++++++++++++ >> 2 files changed, 58 insertions(+) >> create mode 100644 c/src/lib/libbsp/arm/shared/mminit.c >> create mode 100644 c/src/lib/libbsp/shared/include/mm.h >> >> diff --git a/c/src/lib/libbsp/arm/shared/mminit.c >> b/c/src/lib/libbsp/arm/shared/mminit.c >> new file mode 100644 >> index 0000000..c3d9f16 >> --- /dev/null >> +++ b/c/src/lib/libbsp/arm/shared/mminit.c >> @@ -0,0 +1,27 @@ >> +/* >> + * Copyright (c) 2013 Hesham AL-Matary. >> + * >> + * 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/arm-cp15-start.h> >> +#include <bsp/linker-symbols.h> >> +#include <bsp/mm.h> >> +#include <bsp/start.h> >> + >> +extern const arm_cp15_start_section_config bsp_mm_config_table[]; >> +extern const size_t bsp_mm_config_table_size; >> + >> +BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void) >> +{ >> + uint32_t ctrl = arm_cp15_get_control(); >> + >> + arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache( >> + ctrl, >> + (uint32_t *) bsp_translation_table_base, >> + ARM_MMU_DEFAULT_CLIENT_DOMAIN, >> + &bsp_mm_config_table[0], >> + bsp_mm_config_table_size >> + ); >> +} >> diff --git a/c/src/lib/libbsp/shared/include/mm.h >> b/c/src/lib/libbsp/shared/include/mm.h >> new file mode 100644 >> index 0000000..476c288 >> --- /dev/null >> +++ b/c/src/lib/libbsp/shared/include/mm.h >> @@ -0,0 +1,31 @@ >> +/* >> + * Copyright (c) 2013 Hesham AL-Matary. >> + * Copyright (c) 2013 Gedare Bloom. >> + * >> + * 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. >> + */ >> + >> +#ifndef __LIBBSP_MM_H >> +#define __LIBBSP_MM_H >> + >> +#include <stdint.h> >> +#include <stdlib.h> >> + >> +#ifdef __cplusplus >> +extern "C" { >> +#endif >> + >> +void bsp_memory_management_initialize(void); >> + >> +void bsp_memory_management_set_attributes( >> + uintptr_t base, >> + size_t size, >> + uint32_t attr >> +); >> + >> +#ifdef __cplusplus >> +} >> +#endif >> +#endif >> -- >> 1.8.3.1 >> >> >
_______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel