On Mon, Aug 26, 2013 at 4:54 PM, Gedare Bloom <ged...@rtems.org> wrote:
> On Sun, Aug 25, 2013 at 8:14 PM, Hesham AL-Matary > <heshamelmat...@gmail.com> wrote: > > --- > > cpukit/score/Makefile.am | 2 + > > cpukit/score/include/rtems/score/mm.h | 52 ++++++++++++++++++++ > > cpukit/score/include/rtems/score/mmimpl.h | 80 > +++++++++++++++++++++++++++++++ > > cpukit/score/preinstall.am | 8 ++++ > > 4 files changed, 142 insertions(+) > > create mode 100644 cpukit/score/include/rtems/score/mm.h > > create mode 100644 cpukit/score/include/rtems/score/mmimpl.h > > > > diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am > > index c9d2d47..b94af80 100644 > > --- a/cpukit/score/Makefile.am > > +++ b/cpukit/score/Makefile.am > > @@ -37,6 +37,8 @@ include_rtems_score_HEADERS += > include/rtems/score/interr.h > > include_rtems_score_HEADERS += include/rtems/score/isr.h > > include_rtems_score_HEADERS += include/rtems/score/isrlevel.h > > include_rtems_score_HEADERS += include/rtems/score/isrlock.h > > +include_rtems_score_HEADERS += include/rtems/score/mm.h > > +include_rtems_score_HEADERS += include/rtems/score/mmimpl.h > > include_rtems_score_HEADERS += include/rtems/score/freechain.h > > include_rtems_score_HEADERS += include/rtems/score/object.h > > include_rtems_score_HEADERS += include/rtems/score/objectimpl.h > > diff --git a/cpukit/score/include/rtems/score/mm.h > b/cpukit/score/include/rtems/score/mm.h > > new file mode 100644 > > index 0000000..43f6fc9 > > --- /dev/null > > +++ b/cpukit/score/include/rtems/score/mm.h > > @@ -0,0 +1,52 @@ > > +/** > > + * @file > > + * > > + * @brief Manages use of MPU/MMU units to provide memory management. > > + */ > > + > > +/* > > + * 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 _RTEMS_SCORE_MM_H > > +#define _RTEMS_SCORE_MM_H > > + > > +/* @defgroup SuperCoreMM Memory Management Support > > + * > > + * @ingroup Score > > + */ > > +/**@{*/ > > + > > +#ifdef __cplusplus > > +extern "C" { > > +#endif > > + > > +/** > > + * @brief _Memory_management_Region Flags defs > > + */ > > +#define RTEMS_MM_REGION_NO_PROTECTION 0x0 > > +#define RTEMS_MM_REGION_PROTECTION_READ_ONLY 0x1 > > +#define RTEMS_MM_REGION_PROTECTION_WRITE 0x2 > > +#define RTEMS_MM_REGION_NO_ACCESS 0x3 > > +//#define RTEMS_MM_REGION_PROTECTION_EXEC 0x4 > > + > Is there a reason to have "no protection"? Does it make sense to > define "No access" as 0x0? > I just give the option for applying no access attribute. In Sebastian's realview BSP code, all page tables entries are set to no access at startup and then re-set entries according to config_table and sections. Do you think we should remove it ? > > > +void _Memory_management_Initialize( void ); > > + > > +void _Memory_management_Set_attributes( > > + uintptr_t base, > > + size_t size, > > + uint32_t attr > > +); > > + > > +#ifdef __cplusplus > > +} > > +#endif > > + > > +/**@}*/ > > + > > +#endif > > diff --git a/cpukit/score/include/rtems/score/mmimpl.h > b/cpukit/score/include/rtems/score/mmimpl.h > > new file mode 100644 > > index 0000000..7eecef0 > > --- /dev/null > > +++ b/cpukit/score/include/rtems/score/mmimpl.h > > @@ -0,0 +1,80 @@ > > +/** > > + * @file > > + * > > + * @brief Inlined Routines from the Memory Management Manager > > + */ > > + > > +/* > > + * 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 _RTEMS_SCORE_MMIMPL_H > > +#define _RTEMS_SCORE_MMIMPL_H > > + > > +#ifdef RTEMS_SMP > > +#include <rtems/score/smplock.h> > > +#endif > > + > > +#include <stdint.h> > > +#include <stdlib.h> > > +#include <rtems/score/mm.h> > > +#include <libcpu/mm.h> > > + > > +#ifdef __cplusplus > > +extern "C" { > > +#endif > > + > > +/** > > + * @addtogroup SuperCoreMM > > + */ > > +/**@{**/ > > + > > +#ifdef RTEMS_SMP > > +SMP_lock_Control mm_lock; > > +#endif > > + > > +/** > > + * @brief Calls _CPU_Memory_management_Initialize. > > + */ > > +void _Memory_management_Initialize( void ) > > +{ > > +#ifdef RTEMS_SMP > > + _SMP_lock_Initialize( &mm_lock ); > > +#endif > > + > > + _CPU_Memory_management_Initialize(); > > +} > > + > > +/** > > + * @brief Calls _CPU_Memory_management_Set_attributes. > > + */ > > +void _Memory_management_Set_attributes( > > + uintptr_t base, > > + size_t size, > > + uint32_t attr > > +) > > +{ > > +#ifdef RTEMS_SMP > > + _SMP_lock_Acquire( &mm_lock ); > > +#endif > > + > > + _CPU_Memory_management_Set_attributes(base, size, attr); > > + > > +#ifdef RTEMS_SMP > > + _SMP_lock_Release( &mm_lock ); > > +#endif > > +} > > + > > +/** @}*/ > > + > > +#ifdef __cplusplus > > +} > > +#endif > > + > > +#endif > > +/* end of include file */ > > diff --git a/cpukit/score/preinstall.am b/cpukit/score/preinstall.am > > index 79a18b5..4b3bfcf 100644 > > --- a/cpukit/score/preinstall.am > > +++ b/cpukit/score/preinstall.am > > @@ -131,6 +131,14 @@ $(PROJECT_INCLUDE)/rtems/score/isrlock.h: > include/rtems/score/isrlock.h $(PROJEC > > $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/isrlock.h > > PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/isrlock.h > > > > +$(PROJECT_INCLUDE)/rtems/score/mm.h: include/rtems/score/mm.h > $(PROJECT_INCLUDE)/rtems/score/$(dirstamp) > > + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/mm.h > > +PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/mm.h > > + > > +$(PROJECT_INCLUDE)/rtems/score/mmimpl.h: include/rtems/score/mmimpl.h > $(PROJECT_INCLUDE)/rtems/score/$(dirstamp) > > + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/mmimpl.h > > +PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/mmimpl.h > > + > > $(PROJECT_INCLUDE)/rtems/score/freechain.h: > include/rtems/score/freechain.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp) > > $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/freechain.h > > PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/freechain.h > > -- > > 1.8.3.1 > > > > _______________________________________________ > > rtems-devel mailing list > > rtems-devel@rtems.org > > http://www.rtems.org/mailman/listinfo/rtems-devel >
_______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel