2009-01-21 20:58:33 +00:00
/***************************************************************************
* __________ __ ___ .
* Open \ ______ \ ____ ____ | | _ \ _ | __ _______ ___
* Source | _ // _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( < _ > ) \ ___ | < | \ _ \ ( < _ > > < <
* Firmware | ____ | _ / \ ____ / \ ___ > __ | _ \ | ___ / \ ____ / __ / \ _ \
* \ / \ / \ / \ / \ /
* $ Id $
*
* Copyright ( C ) 2009 by Maurus Cuelenaere
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This software is distributed on an " AS IS " basis , WITHOUT WARRANTY OF ANY
* KIND , either express or implied .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifndef __MMU_MIPS_INCLUDE_H
# define __MMU_MIPS_INCLUDE_H
2009-02-13 00:45:49 +00:00
# include "system-target.h"
2021-03-08 10:59:53 +00:00
/* By default the cache management functions go in .icode so they can be
* called safely eg . by the bootloader or RoLo , which need to flush the
* cache before jumping to the loaded binary .
*/
2021-04-25 12:43:58 +00:00
# define MIPS_CACHEFUNC_API(ret, name, args) \
ret name args __attribute__ ( ( section ( " .icode. " # name ) ) )
2021-03-08 10:59:53 +00:00
2009-02-04 17:37:05 +00:00
void map_address ( unsigned long virtual , unsigned long physical ,
unsigned long length , unsigned int cache_flags ) ;
2009-02-13 00:45:49 +00:00
void mmu_init ( void ) ;
2020-08-29 01:45:58 +00:00
/* Commits entire DCache */
2022-10-09 22:37:20 +00:00
#if 0 /* NOTE: This is currently aliased to commit_discard_dcache. Causes compilation errors with newer GCC if we try to assign it to a section here */
//MIPS_CACHEFUNC_API(void, commit_dcache, (void));
# else
void commit_dcache ( void ) ;
# endif
2020-08-29 01:45:58 +00:00
/* Commit and discard entire DCache, will do writeback */
2021-04-25 12:43:58 +00:00
MIPS_CACHEFUNC_API ( void , commit_discard_dcache , ( void ) ) ;
2020-08-29 01:45:58 +00:00
/* Write DCache back to RAM for the given range and remove cache lines
* from DCache afterwards */
2021-04-25 12:43:58 +00:00
MIPS_CACHEFUNC_API ( void , commit_discard_dcache_range , ( const void * base , unsigned int size ) ) ;
2020-08-29 01:45:58 +00:00
/* Write DCache back to RAM for the given range */
2021-04-25 12:43:58 +00:00
MIPS_CACHEFUNC_API ( void , commit_dcache_range , ( const void * base , unsigned int size ) ) ;
2020-08-29 01:45:58 +00:00
/*
* Remove cache lines for the given range from DCache
* will * NOT * do write back except for buffer edges not on a line boundary
*/
2021-04-25 12:43:58 +00:00
MIPS_CACHEFUNC_API ( void , discard_dcache_range , ( const void * base , unsigned int size ) ) ;
2020-08-29 01:45:58 +00:00
/* Discards the entire ICache, and commit+discards the entire DCache */
2021-04-25 12:43:58 +00:00
MIPS_CACHEFUNC_API ( void , commit_discard_idcache , ( void ) ) ;
2011-12-17 07:27:24 +00:00
2009-01-21 20:58:33 +00:00
# endif /* __MMU_MIPS_INCLUDE_H */