[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