(This is similar to 908fb8 but for memory regions) Removes the weird offset encoding in favour of a metadata structure, similar to what there was before. However this structure overlaps with the cache ram itself and grows like a stack. This is to avoid wating memory since most games only use a few blocks. Simplify the "dual" block lookup routines too, since they are only an extrypoint to the other two real modes.
27 lines
848 B
C
27 lines
848 B
C
|
|
#ifndef GPSP_CONFIG_H
|
|
#define GPSP_CONFIG_H
|
|
|
|
/* Default ROM buffer size in megabytes (this is a maximum value!) */
|
|
#ifndef ROM_BUFFER_SIZE
|
|
#define ROM_BUFFER_SIZE 32
|
|
#endif
|
|
|
|
/* Cache sizes and their config knobs */
|
|
#if defined(SMALL_TRANSLATION_CACHE)
|
|
#define ROM_TRANSLATION_CACHE_SIZE (1024 * 1024 * 2)
|
|
#define RAM_TRANSLATION_CACHE_SIZE (1024 * 384)
|
|
#else
|
|
#define ROM_TRANSLATION_CACHE_SIZE (1024 * 1024 * 10)
|
|
#define RAM_TRANSLATION_CACHE_SIZE (1024 * 512)
|
|
#endif
|
|
|
|
/* Should be an upperbound to the maximum number of bytes a single JIT'ed
|
|
instruction can take. STM/LDM are tipically the biggest ones */
|
|
#define TRANSLATION_CACHE_LIMIT_THRESHOLD (1024 * 2)
|
|
|
|
/* Hash table size for ROM trans cache lookups */
|
|
#define ROM_BRANCH_HASH_BITS 16
|
|
#define ROM_BRANCH_HASH_SIZE (1 << ROM_BRANCH_HASH_BITS)
|
|
|
|
#endif
|