[PATCH 0/4] libmm: support for memory management hardware

Gedare Bloom gedare at rtems.org
Thu Oct 11 19:10:19 UTC 2012


This patch series adds support for handling memory management
hardware such as MMUs/MPUs. This work is the result of 3 GSOC
efforts with contributions from Aanjhan Ranganathan, Quanming Shi,
and Hesham Al-Matary as student coders, and Thomas Doerfler,
Peter Dufault, and Gedare Bloom as primary mentors. These specific
patches are my (Gedare) revisions to the last pull request from
Hesham's GSOC2012 project. My revisions were mainly stylistic.

These patches add the high-level interface as a new library in cpukit
called libmm, with CPU-specific support in libcpu, and BSP-specific 
support in libbsp. We modelled this multi-layer software architecture
after the cache manager, and intend to allow maximum sharing of BSP
code for handling memory management hardware.

The patches add:
  1) cpukit API and libcpu glue code
  2) test cases
  3) powerpc/psim support
  4) arm/gumstix support

Currently supported BSPs are:
  * powerpc/psim
  * arm/gumstix

I tested the patch series with psim, but not gumstix (or other BSPs).
Additional code review and testing is required and appreciated.

Hesham AL-Matary (4):
  libmm: new library for memory management hardware
  testsuites: add test cases for libmm
  powerpc: add support for libmm for powerpc with psim bsp
  arm: add support for libmm for arm with gumstix bsp

 c/src/lib/libbsp/powerpc/psim/startup/bspstart.c   |    8 +-
 c/src/lib/libbsp/powerpc/psim/startup/device-tree  |    2 +-
 c/src/lib/libcpu/Makefile.am                       |    1 +
 c/src/lib/libcpu/arm/Makefile.am                   |   10 +-
 c/src/lib/libcpu/arm/preinstall.am                 |    8 +
 c/src/lib/libcpu/arm/shared/arm920/mmu_support.c   |  365 ++++++++++++++++++++
 c/src/lib/libcpu/arm/shared/arm920/mmu_support.h   |   95 +++++
 c/src/lib/libcpu/powerpc/Makefile.am               |    9 +-
 c/src/lib/libcpu/powerpc/mpc6xx/mmu/mmu_support.c  |  287 +++++++++++++++
 c/src/lib/libcpu/powerpc/mpc6xx/mmu/mmu_support.h  |   98 ++++++
 c/src/lib/libcpu/powerpc/mpc6xx/mmu/pagetable_.c   |  189 ++++++++++
 c/src/lib/libcpu/powerpc/preinstall.am             |    8 +
 c/src/lib/libcpu/shared/include/memorymanagement.h |   51 +++
 .../libcpu/shared/src/memorymanagement_manager.c   |   72 ++++
 c/src/lib/libcpu/shared/src/no_memorymanagement.c  |   51 +++
 cpukit/Makefile.am                                 |    4 +
 cpukit/configure.ac                                |    1 +
 cpukit/libmm/Makefile.am                           |    7 +
 cpukit/libmm/libmm.c                               |  200 +++++++++++
 cpukit/libmm/libmm.h                               |  137 ++++++++
 cpukit/preinstall.am                               |    4 +
 cpukit/sapi/include/confdefs.h                     |   10 +
 cpukit/wrapup/Makefile.am                          |    1 +
 testsuites/libtests/Makefile.am                    |    1 +
 testsuites/libtests/configure.ac                   |    2 +
 testsuites/libtests/mmtest1/Makefile.am            |   17 +
 testsuites/libtests/mmtest1/init.c                 |  215 ++++++++++++
 testsuites/libtests/mmtest1/mmtests.scn            |   30 ++
 testsuites/libtests/mmtest1/system.h               |   39 ++
 testsuites/libtests/mmtest2/Makefile.am            |   17 +
 testsuites/libtests/mmtest2/init.c                 |  148 ++++++++
 testsuites/libtests/mmtest2/mmtest2.scn            |   24 ++
 testsuites/libtests/mmtest2/system.h               |   38 ++
 33 files changed, 2141 insertions(+), 8 deletions(-)
 create mode 100644 c/src/lib/libcpu/arm/shared/arm920/mmu_support.c
 create mode 100644 c/src/lib/libcpu/arm/shared/arm920/mmu_support.h
 create mode 100644 c/src/lib/libcpu/powerpc/mpc6xx/mmu/mmu_support.c
 create mode 100644 c/src/lib/libcpu/powerpc/mpc6xx/mmu/mmu_support.h
 create mode 100644 c/src/lib/libcpu/powerpc/mpc6xx/mmu/pagetable_.c
 create mode 100644 c/src/lib/libcpu/shared/include/memorymanagement.h
 create mode 100644 c/src/lib/libcpu/shared/src/memorymanagement_manager.c
 create mode 100644 c/src/lib/libcpu/shared/src/no_memorymanagement.c
 create mode 100644 cpukit/libmm/Makefile.am
 create mode 100644 cpukit/libmm/libmm.c
 create mode 100644 cpukit/libmm/libmm.h
 create mode 100644 testsuites/libtests/mmtest1/Makefile.am
 create mode 100644 testsuites/libtests/mmtest1/init.c
 create mode 100644 testsuites/libtests/mmtest1/mmtests.scn
 create mode 100644 testsuites/libtests/mmtest1/system.h
 create mode 100644 testsuites/libtests/mmtest2/Makefile.am
 create mode 100644 testsuites/libtests/mmtest2/init.c
 create mode 100644 testsuites/libtests/mmtest2/mmtest2.scn
 create mode 100644 testsuites/libtests/mmtest2/system.h




More information about the devel mailing list