blob: a2388cdda610e5fa9a7a1e4d7f765bae1030a29a [file] [log] [blame]
/*
* Meta cache partition manipulation.
*
* Copyright 2010 Imagination Technologies Ltd.
*/
#ifndef _METAG_CACHEPART_H_
#define _METAG_CACHEPART_H_
/**
* get_dcache_size() - Get size of data cache.
*/
unsigned int get_dcache_size(void);
/**
* get_icache_size() - Get size of code cache.
*/
unsigned int get_icache_size(void);
/**
* get_global_dcache_size() - Get the thread's global dcache.
*
* Returns the size of the current thread's global dcache partition.
*/
unsigned int get_global_dcache_size(void);
/**
* get_global_icache_size() - Get the thread's global icache.
*
* Returns the size of the current thread's global icache partition.
*/
unsigned int get_global_icache_size(void);
/**
* cachepart_min_iglobal() - Ensure we have @min_size global icache.
* @min_size: Minimum size of global icache for this thread.
* @old_val: Pointer to area to store old cache information so it can be
* restored to it's previous setting.
*
* If possible, this will take cache from the thread local cache to satisfy the
* @min_size requirement. Returns 0 on success, or an error code on failure.
* The operation can be reversed with cachepart_restore_iglobal().
*/
int cachepart_min_iglobal(unsigned int min_size, unsigned int *old_val);
/**
* cachepart_restore_iglobal() - Restore global icache to previous setting.
* @old_val: Pointer to area to find old cache information so it can be
* restored, as given to cachepart_min_iglobal().
*/
void cachepart_restore_iglobal(unsigned int *old_val);
/**
* check_for_dache_aliasing() - Ensure that the bootloader has configured the
* dache and icache properly to avoid aliasing
* @thread_id: Hardware thread ID
*
*/
void check_for_cache_aliasing(int thread_id);
#endif