mirror of
https://github.com/Retropex/dolphin.git
synced 2025-06-11 03:42:30 +02:00

SPDX standardizes how source code conveys its copyright and licensing information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX tags are adopted in many large projects, including things like the Linux kernel.
41 lines
993 B
C++
41 lines
993 B
C++
// Copyright 2008 Dolphin Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <array>
|
|
|
|
#include "Common/CommonTypes.h"
|
|
|
|
class PointerWrap;
|
|
|
|
namespace PowerPC
|
|
{
|
|
constexpr u32 ICACHE_SETS = 128;
|
|
constexpr u32 ICACHE_WAYS = 8;
|
|
// size of an instruction cache block in words
|
|
constexpr u32 ICACHE_BLOCK_SIZE = 8;
|
|
|
|
constexpr u32 ICACHE_EXRAM_BIT = 0x10000000;
|
|
constexpr u32 ICACHE_VMEM_BIT = 0x20000000;
|
|
|
|
struct InstructionCache
|
|
{
|
|
std::array<std::array<std::array<u32, ICACHE_BLOCK_SIZE>, ICACHE_WAYS>, ICACHE_SETS> data;
|
|
std::array<std::array<u32, ICACHE_WAYS>, ICACHE_SETS> tags;
|
|
std::array<u32, ICACHE_SETS> plru;
|
|
std::array<u32, ICACHE_SETS> valid;
|
|
|
|
std::array<u8, 1 << 20> lookup_table;
|
|
std::array<u8, 1 << 21> lookup_table_ex;
|
|
std::array<u8, 1 << 20> lookup_table_vmem;
|
|
|
|
InstructionCache();
|
|
u32 ReadInstruction(u32 addr);
|
|
void Invalidate(u32 addr);
|
|
void Init();
|
|
void Reset();
|
|
void DoState(PointerWrap& p);
|
|
};
|
|
} // namespace PowerPC
|