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