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

Gedare Bloom gedare at rtems.org
Mon Sep 16 16:38:27 UTC 2013


The first patch you sent is the right one to look at?

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
>



More information about the devel mailing list