0
mirror of https://github.com/Indemsys/Frequency_Inverter.git synced 2026-04-19 17:44:31 +00:00
Files
2022-01-04 12:22:53 +02:00

154 lines
5.0 KiB
C

/*HEADER*********************************************************************
*
* Copyright (c) 2008 Freescale Semiconductor;
* All Rights Reserved
*
* Copyright (c) 2004-2008 Embedded Access Inc.;
* All Rights Reserved
*
* Copyright (c) 1989-2008 ARC International;
* All Rights Reserved
*
***************************************************************************
*
* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS 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.
*
**************************************************************************
*
* $FileName: mmu.h$
* $Version : 3.8.7.0$
* $Date : Oct-5-2011$
*
* Comments:
*
* This file contains the type definitions for the generic MMU interface
* functions.
*
*END************************************************************************/
#ifndef __mmu_h__
#define __mmu_h__
/* When a region is added to the mmu, the default is to make this region
* cachable, copyback, writeable, for both code and data accesses
*/
/* Write accesses to this page are not allowed. */
#define PSP_MMU_WRITE_PROTECTED (0x00000001)
/* This page is NOT to be cached in the code cache */
#define PSP_MMU_CODE_CACHE_INHIBITED (0x00000002)
/* This page is NOT to be cached in the data cache */
#define PSP_MMU_DATA_CACHE_INHIBITED (0x00000004)
/* This page is NOT to be cached in the code or data cache */
#define PSP_MMU_CACHE_INHIBITED (0x00000006)
/* Write accesses immediately propagate to physical memory. */
#define PSP_MMU_WRITE_THROUGH (0x00000008)
/* On some MMUs, a write can be made without updating the cache. */
#define PSP_MMU_WRITE_NO_UPDATE (0x00000020)
/* On some MMUs, a write can be stored into a write buffer, and
* stores to memory performed at some future time.
*/
#define PSP_MMU_WRITE_BUFFERED (0x00000040)
/* This page is shared with an external hardware device that can snoop. */
#define PSP_MMU_COHERENT (0x00000080)
/* This page requires that memory accesses are not out-of-order,
* or that memory not specifically requested by the software be accessed.
*/
#define PSP_MMU_GUARDED (0x00000100)
/* Read accesses to this page are not allowed. */
#define PSP_MMU_READ_PROTECTED (0x00000200)
/* Page can contain executable instructions. */
#define PSP_MMU_EXEC_ALLOWED (0x00000400)
/* Page is locked. Note: Cannot be used for a virtual context */
#define PSP_MMU_PAGE_LOCKED (0x00000800)
/* Page contains VLE code */
#define PSP_MMU_PAGE_VLE (0x00001000)
#ifndef __ASM__
/*--------------------------------------------------------------------------*/
/* PSP MMU VINIT STRUCT */
/*!
* \brief This structure is used to initialize the virtual memory support.
*/
typedef struct psp_mmu_vinit_struct
{
/*! \brief Where MMU pages can exist. */
uchar_ptr MMU_PAGE_TABLE_BASE;
/*! \brief How much memory allocated for the tables. */
uint_32 MMU_PAGE_TABLE_SIZE;
/*! \brief Where does unmapped memory start. */
uchar_ptr UNMAPPED_MEMORY_BASE;
/*! \brief How much memory available. */
uint_32 UNMAPPED_MEMORY_SIZE;
} PSP_MMU_VINIT_STRUCT, _PTR_ PSP_MMU_VINIT_STRUCT_PTR;
/*--------------------------------------------------------------------------*/
/*
* FUNCTION PROTOTYPES
*/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __TAD_COMPILE__
extern _mqx_uint _mmu_add_region(uchar_ptr, _mem_size, _mqx_uint);
extern void _mmu_disable(void);
extern void _mmu_enable(void);
extern void _mmu_init(pointer);
extern _mqx_uint _mmu_add_vregion(pointer, pointer, _mem_size, _mqx_uint);
extern _mem_size _mmu_get_vpage_size(void);
extern _mqx_uint _mmu_get_vmem_attributes(pointer, pointer _PTR_,
pointer _PTR_, _mem_size_ptr, _mqx_uint_ptr);
extern _mqx_uint _mmu_set_vmem_attributes(pointer, _mqx_uint, _mem_size);
extern _mqx_uint _mmu_vinit(_mqx_uint, pointer);
extern void _mmu_venable(void);
extern void _mmu_vdisable(void);
extern _mqx_uint _mmu_vtop(pointer, pointer _PTR_);
extern _mqx_uint _mmu_add_vcontext(_task_id, pointer, _mem_size, _mqx_uint);
extern _mqx_uint _mmu_create_vcontext(_task_id);
extern _task_id _mmu_create_vtask(_mqx_uint, _mqx_uint, pointer, pointer,
_mem_size, _mqx_uint);
extern _mqx_uint _mmu_destroy_vcontext(_task_id);
#endif
#ifdef __cplusplus
}
#endif
#endif /* __ASM__ */
#endif
/* EOF */