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

Reply via email to