Hesham On Sep 16, 2013 6:38 PM, "Gedare Bloom" <ged...@rtems.org> wrote: > > The first patch you sent is the right one to look at? > No the second patch (on the reply) is the one to look at. The first one is missing arm-cp15-start.h changes. > On Mon, Sep 16, 2013 at 12:27 PM, Hesham Moustafa > <heshamelmat...@gmail.com> wrote: > > 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 > >
_______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel