summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/mpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/atsam/libraries/libchip/source/mpu.c')
-rw-r--r--c/src/lib/libbsp/arm/atsam/libraries/libchip/source/mpu.c168
1 files changed, 0 insertions, 168 deletions
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/mpu.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/mpu.c
deleted file mode 100644
index 0083a5fd37..0000000000
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/mpu.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* ---------------------------------------------------------------------------- */
-/* Atmel Microcontroller Software Support */
-/* SAM Software Package License */
-/* ---------------------------------------------------------------------------- */
-/* Copyright (c) 2015, Atmel Corporation */
-/* */
-/* All rights reserved. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following condition is met: */
-/* */
-/* - Redistributions of source code must retain the above copyright notice, */
-/* this list of conditions and the disclaimer below. */
-/* */
-/* Atmel's name may not be used to endorse or promote products derived from */
-/* this software without specific prior written permission. */
-/* */
-/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
-/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
-/* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
-/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
-/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
-/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
-/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
-/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-/* ---------------------------------------------------------------------------- */
-
-/** \file */
-
-/**
- * \addtogroup mmu MMU Initialization
- *
- * \section Usage
- *
- * Translation Look-aside Buffers (TLBs) are an implementation technique that
- * caches translations or translation table entries. TLBs avoid the requirement
- * for every memory access to perform a translation table lookup.
- * The ARM architecture does not specify the exact form of the TLB structures
- * for any design. In a similar way to the requirements for caches, the
- * architecture only defines certain principles for TLBs:
- *
- * The MMU supports memory accesses based on memory sections or pages:
- * Super-sections Consist of 16MB blocks of memory. Support for Super sections
- * is optional.
- * -# Sections Consist of 1MB blocks of memory.
- * -# Large pages Consist of 64KB blocks of memory.
- * -# Small pages Consist of 4KB blocks of memory.
- *
- * Access to a memory region is controlled by the access permission bits and
- * the domain field in the TLB entry.
- * Memory region attributes
- * Each TLB entry has an associated set of memory region attributes. These
- * control accesses to the caches,
- * how the write buffer is used, and if the memory region is Shareable and
- * therefore must be kept coherent.
- *
- * Related files:\n
- * \ref mmu.c\n
- * \ref mmu.h \n
- */
-
-/*-------------------------------------------------------------------------- */
-/* Headers */
-/*-------------------------------------------------------------------------- */
-#include <chip.h>
-
-/*----------------------------------------------------------------------------
- * Exported functions
-
- *----------------------------------------------------------------------------*/
-/**
- * \brief Enables the MPU module.
- *
- * \param dwMPUEnable Enable/Disable the memory region.
- */
-void MPU_Enable(uint32_t dwMPUEnable)
-{
- MPU->CTRL = dwMPUEnable;
-}
-
-/**
- * \brief Set active memory region.
- *
- * \param dwRegionNum The memory region to be active.
- */
-void MPU_SetRegionNum(uint32_t dwRegionNum)
-{
- MPU->RNR = dwRegionNum;
-}
-
-/**
- * \brief Disable the current active region.
- */
-extern void MPU_DisableRegion(void)
-{
- MPU->RASR &= 0xfffffffe;
-}
-
-/**
- * \brief Setup a memory region.
- *
- * \param dwRegionBaseAddr Memory region base address.
- * \param dwRegionAttr Memory region attributes.
- */
-void MPU_SetRegion(uint32_t dwRegionBaseAddr, uint32_t dwRegionAttr)
-{
- MPU->RBAR = dwRegionBaseAddr;
- MPU->RASR = dwRegionAttr;
-}
-
-
-/**
- * \brief Calculate region size for the RASR.
- */
-uint32_t MPU_CalMPURegionSize(uint32_t dwActualSizeInBytes)
-{
- uint32_t dwRegionSize = 32;
- uint32_t dwReturnValue = 4;
-
- while (dwReturnValue < 31) {
- if (dwActualSizeInBytes <= dwRegionSize)
- break;
- else
- dwReturnValue++;
-
- dwRegionSize <<= 1;
- }
-
- return (dwReturnValue << 1);
-}
-
-
-/**
- * \brief Update MPU regions.
- *
- * \return Unused (ANSI-C compatibility).
- */
-void MPU_UpdateRegions(uint32_t dwRegionNum, uint32_t dwRegionBaseAddr,
- uint32_t dwRegionAttr)
-{
-
- /* Disable interrupt */
- __disable_irq();
-
- /* Clean up data and instruction buffer */
- __DSB();
- __ISB();
-
- /* Set active region */
- MPU_SetRegionNum(dwRegionNum);
-
- /* Disable region */
- MPU_DisableRegion();
-
- /* Update region attribute */
- MPU_SetRegion(dwRegionBaseAddr, dwRegionAttr);
-
- /* Clean up data and instruction buffer to make the new region taking
- effect at once */
- __DSB();
- __ISB();
-
- /* Enable the interrupt */
- __enable_irq();
-}
-