Hi, I have made the suggested changes.
git send-email is failing to send the patch, need to settle it. Please review the attached file. Thanks. On Wed, Jul 8, 2015 at 7:04 PM, Sebastian Huber < sebastian.hu...@embedded-brains.de> wrote: > > > On 08/07/15 15:10, Rohini Kulkarni wrote: > >> >> >> On Wed, Jul 8, 2015 at 6:29 PM, Sebastian Huber >> <sebastian.hu...@embedded-brains.de >> <mailto:sebastian.hu...@embedded-brains.de>> wrote: >> >> Hello Rohini, >> >> please use git format-patch to generate the patches. >> >> Actually,that is what I have used. I pasted the patch here from the >> resulting file. >> > > Better use git send-email, or send the file as is since this will preserve > the commit message and author. > > >> >> On 08/07/15 14:44, Rohini Kulkarni wrote: >> >> +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c >> @@ -0,0 +1,30 @@ >> +#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION >> + >> +#include <bsp/start.h> >> +#include <bsp/arm-cp15-start.h> >> +#include <bsp/linker-symbols.h> >> +#include <libcpu/arm-cp15.h> >> +#include <bsp/mm.h> >> +#include <bsp.h> >> + >> +uint32_t bsp_initial_mmu_ctrl_set; >> +uint32_t bsp_initial_mmu_ctrl_clear; >> +uint32_t domain_set; >> + >> +void raspberrypi_setup_mmu_and_cache(void) >> +{ >> +#if (BSP_IS_RPI2 == 1) >> + /* Enable SMP in auxiliary control */ >> + uint32_t actlr = arm_cp15_get_auxiliary_control(); >> + actlr |= ARM_CORTEX_A9_ACTL_SMP; >> + arm_cp15_set_auxiliary_control(actlr); >> + bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A; >> + bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z; >> +#else >> + bsp_initial_mmu_ctrl_clear = 0; >> + bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | >> ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP; >> +#endif >> + domain_set = ARM_MMU_DEFAULT_CLIENT_DOMAIN; >> + >> + bsp_memory_management_initialize(); >> +} >> >> >> Is there a reason, why you use global variables instead of >> function parameters? >> >> I have set them as extern in mm.h and are directly used in mminit.c >> instead of being passed to bsp_memory_management_initialize. They will >> be set by the bsp the source is being compiled for. >> > > You should avoid global variables and functions in general. I don't see a > necessity for them here. > > -- > Sebastian Huber, embedded brains GmbH > > Address : Dornierstr. 4, D-82178 Puchheim, Germany > Phone : +49 89 189 47 41-16 > Fax : +49 89 189 47 41-09 > E-Mail : sebastian.hu...@embedded-brains.de > PGP : Public key available on request. > > Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG. > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel -- Rohini Kulkarni
From fa03daaa813419a0996e0b5cad0025ef85eebfbe Mon Sep 17 00:00:00 2001 From: RCK <rck@ubuntu.(none)> Date: Thu, 9 Jul 2015 17:16:49 +0530 Subject: [PATCH 15/15] Code refactor: Changes to memory management initialization --- c/src/lib/libbsp/arm/raspberrypi/Makefile.am | 1 + c/src/lib/libbsp/arm/raspberrypi/include/bsp.h | 14 ++++---- .../libbsp/arm/raspberrypi/startup/bspstarthooks.c | 8 ++--- .../libbsp/arm/raspberrypi/startup/bspstartmmu.c | 34 ++++++++++++++++++++ c/src/lib/libbsp/arm/shared/mminit.c | 20 ++++++++---- c/src/lib/libbsp/shared/include/mm.h | 6 +++- 6 files changed, 65 insertions(+), 18 deletions(-) create mode 100644 c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c diff --git a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am index d59263c..74545d6 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am +++ b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am @@ -131,6 +131,7 @@ libbsp_a_CPPFLAGS += -I$(srcdir)/../../../libcpu/arm/shared/include # Start hooks libbsp_a_SOURCES += startup/bspstarthooks.c +libbsp_a_SOURCES += startup/bspstartmmu.c # LIBMM libbsp_a_SOURCES += startup/mm_config_table.c diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h b/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h index c05a410..410d9ab 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h +++ b/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h @@ -33,12 +33,6 @@ extern "C" { #define BSP_FEATURE_IRQ_EXTENSION -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* LIBBSP_ARM_RASPBERRYPI_BSP_H */ - /** * @defgroup arm_raspberrypi Raspberry Pi Support * @@ -47,3 +41,11 @@ extern "C" { * @brief Raspberry Pi support package * */ + +void raspberrypi_setup_mmu_and_cache(void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* LIBBSP_ARM_RASPBERRYPI_BSP_H */ diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c index 047c8ad..107649f 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c @@ -26,15 +26,15 @@ #include <bsp/start.h> #include <bsp/raspberrypi.h> #include <bsp/mm.h> +#include <bsp.h> void BSP_START_TEXT_SECTION bsp_start_hook_0(void) -{ +{ } - void BSP_START_TEXT_SECTION bsp_start_hook_1(void) { bsp_start_copy_sections(); - bsp_memory_management_initialize(); + raspberrypi_setup_mmu_and_cache(); bsp_start_clear_bss(); -} +} \ No newline at end of file diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c new file mode 100644 index 0000000..3741070 --- /dev/null +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c @@ -0,0 +1,34 @@ +#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION + +#include <bsp/start.h> +#include <bsp/arm-cp15-start.h> +#include <bsp/linker-symbols.h> +#include <libcpu/arm-cp15.h> +#include <bsp/mm.h> +#include <bsp.h> + +void raspberrypi_setup_mmu_and_cache(void) +{ + uint32_t bsp_initial_mmu_ctrl_set; + uint32_t bsp_initial_mmu_ctrl_clear; + uint32_t domain_set; + +#if (BSP_IS_RPI2 == 1) + /* Enable SMP in auxiliary control */ + uint32_t actlr = arm_cp15_get_auxiliary_control(); + actlr |= ARM_CORTEX_A9_ACTL_SMP; + arm_cp15_set_auxiliary_control(actlr); + bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A; + bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z; +#else + bsp_initial_mmu_ctrl_clear = 0; + bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP; +#endif + domain_set = ARM_MMU_DEFAULT_CLIENT_DOMAIN; + + bsp_memory_management_initialize( + bsp_initial_mmu_ctrl_set, + bsp_initial_mmu_ctrl_clear, + domain_set + ); +} \ No newline at end of file diff --git a/c/src/lib/libbsp/arm/shared/mminit.c b/c/src/lib/libbsp/arm/shared/mminit.c index acfbfc0..b477482 100644 --- a/c/src/lib/libbsp/arm/shared/mminit.c +++ b/c/src/lib/libbsp/arm/shared/mminit.c @@ -11,19 +11,25 @@ #include <bsp/start.h> #include <bsp/arm-cp15-start.h> #include <bsp/linker-symbols.h> +#include <libcpu/arm-cp15.h> #include <bsp/mm.h> -BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void) -{ - uint32_t ctrl = arm_cp15_get_control(); - - ctrl |= ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP; +BSP_START_TEXT_SECTION void bsp_memory_management_initialize( + uint32_t bsp_initial_mmu_ctrl_set, + uint32_t bsp_initial_mmu_ctrl_clear, + uint32_t domain_set +) +{ + uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache( + bsp_initial_mmu_ctrl_clear, + bsp_initial_mmu_ctrl_set ); + arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache( ctrl, (uint32_t *) bsp_translation_table_base, - ARM_MMU_DEFAULT_CLIENT_DOMAIN, + domain_set, &arm_cp15_start_mmu_config_table[0], arm_cp15_start_mmu_config_table_size ); -} +} \ No newline at end of file diff --git a/c/src/lib/libbsp/shared/include/mm.h b/c/src/lib/libbsp/shared/include/mm.h index 2152f68..49ee472 100644 --- a/c/src/lib/libbsp/shared/include/mm.h +++ b/c/src/lib/libbsp/shared/include/mm.h @@ -33,7 +33,11 @@ extern "C" { * @brief MM Support Package */ -void bsp_memory_management_initialize(void); +void bsp_memory_management_initialize( + uint32_t bsp_initial_mmu_ctrl_set, + uint32_t bsp_initial_mmu_ctrl_clear, + uint32_t domain_set +); #ifdef __cplusplus } -- 1.7.9.5
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel