Caches

API for configuring caches.

Functions

int metal_l2cache_init(void)

Initialize L2 cache controller. Enables all available cache ways.

Return

0 If no error

Parameters
  • None:

int metal_l2cache_get_enabled_ways(void)

Get the current number of enabled L2 cache ways.

Return

The current number of enabled L2 cache ways

Parameters
  • None:

int metal_l2cache_set_enabled_ways(int ways)

Enable the requested number of L2 cache ways.

Return

0 if the ways are successfully enabled

Parameters
  • ways: Number of ways to enable

__inline__ void metal_cache_init(struct metal_cache *cache, int ways)

Initialize a cache.

Initializes a cache with the requested number of ways enabled. Note: API to be deprecated in next release.

Parameters
  • cache: The handle for the cache to initialize

  • ways: The number of ways to enable

__inline__ int metal_cache_get_enabled_ways(struct metal_cache *cache)

Get the current number of enabled cache ways.

Return

The current number of enabled cache ways Note: API to be deprecated in next release.

Parameters
  • cache: The handle for the cache

__inline__ int metal_cache_set_enabled_ways(struct metal_cache *cache, int ways)

Enable the requested number of cache ways.

Return

0 if the ways are successfully enabled Note: API to be deprecated in next release.

Parameters
  • cache: The handle for the cache

  • ways: The number of ways to enabled

int metal_dcache_l1_available(int hartid)

Check if dcache is supported on the core.

Return

1 if dcache is present

Parameters
  • hartid: The core to check

void metal_dcache_l1_flush(int hartid, uintptr_t address)

Flush dcache for L1 on the requested core with write back.

Return

None

Parameters
  • hartid: The core to flush

  • address: The virtual address of cacheline to invalidate

void metal_dcache_l1_discard(int hartid, uintptr_t address)

Discard dcache for L1 on the requested core with no write back.

Return

None

Parameters
  • hartid: The core to discard

  • address: The virtual address of cacheline to invalidate

int metal_icache_l1_available(int hartid)

Check if icache is supported on the core.

Return

1 if icache is present

Parameters
  • hartid: The core to check

struct metal_cache
#include <cache.h>

a handle for a cache Note: To be deprecated in next release.