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

Gedare Bloom gedare at rtems.org
Fri Sep 27 19:07:13 UTC 2013


I think something is wrong with this patch. Please regenerate, and
note my two comments below. Make sure the patch set you send compiles
and executes on the raspberry pi, and that the patches contain all of
your changes.. Thanks

On Mon, Sep 16, 2013 at 12: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;
> +
Where are these two variables defined? the "extern" declaration should
go in a header file that is included here.

> +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
> +);
I don't see the "bsp_memory_management_set_attributes" function
defined anywhere.

> +
> +#ifdef __cplusplus
> +}
> +#endif
> +#endif
> --
> 1.8.3.1
>



More information about the devel mailing list