[PATCH 2/3] shared MMU initialization for ARM BSPs

Hesham Moustafa heshamelmatary at gmail.com
Mon Sep 16 17:02:14 UTC 2013


Hesham
On Sep 16, 2013 6:38 PM, "Gedare Bloom" <gedare at 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
> <heshamelmatary at gmail.com> wrote:
> > Please review the patch on the previous reply only.
> >
> >
> >
> > On Mon, Sep 16, 2013 at 6:23 PM, Hesham Moustafa <
heshamelmatary at gmail.com>
> > wrote:
> >>
> >> From 4d2a4662da9b0988c9e871490ed4ca466940754b Mon Sep 17 00:00:00 2001
> >> From: Hesham AL-Matary <heshamelmatary at 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
> >> <heshamelmatary at 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 at rtems.org
> > http://www.rtems.org/mailman/listinfo/rtems-devel
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20130916/ba31617e/attachment-0001.html>


More information about the devel mailing list