クラス Onikiri::EmulatorUtility::TLB

#include <VirtualMemory.h>

Onikiri::EmulatorUtility::TLBのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public メソッド

void Flush ()
bool Lookup (u64 addr, PageTableEntry *entry) const
 TLB (int offsetBits)
void Write (u64 addr, const PageTableEntry &entry)
 ~TLB ()

Protected 変数

u64 m_addr
u64 m_addrMask
PageTableEntry m_body
u64 m_offsetBits
bool m_valid

説明

VirtualMemory.h67 行で定義されています。


コンストラクタとデストラクタ

TLB::TLB ( int  offsetBits  ) 

VirtualMemory.cpp60 行で定義されています。

参照先 m_addrm_addrMaskm_bodym_offsetBitsm_valid.

00061 {
00062     memset( &m_body, 0, sizeof(m_body) );
00063     m_addr = 0;
00064     m_valid = false;
00065 
00066     m_offsetBits = offsetBits;
00067     m_addrMask = shttl::mask( m_offsetBits, 64 - m_offsetBits );
00068 }

TLB::~TLB (  ) 

VirtualMemory.cpp70 行で定義されています。

00071 {
00072 }


関数

void TLB::Flush (  ) 

VirtualMemory.cpp95 行で定義されています。

参照先 m_valid.

参照元 Onikiri::EmulatorUtility::PageTable::AddMap()Onikiri::EmulatorUtility::PageTable::CopyMap()Onikiri::EmulatorUtility::PageTable::RemoveMap().

00096 {
00097     m_valid = false;
00098 }

Here is the caller graph for this function:

bool TLB::Lookup ( u64  addr,
PageTableEntry entry 
) const

VirtualMemory.cpp74 行で定義されています。

参照先 m_addrm_addrMaskm_bodym_valid.

参照元 Onikiri::EmulatorUtility::PageTable::GetMap()Onikiri::EmulatorUtility::PageTable::IsMapped()Onikiri::EmulatorUtility::PageTable::TargetToHost().

00075 {
00076 #ifndef ENABLED_EMULATOR_UTILITY_TLB
00077     return false;
00078 #endif
00079 
00080     if( m_valid && m_addr == ( addr & m_addrMask ) ){
00081         *entry = m_body;
00082         return true;
00083     }
00084 
00085     return false;
00086 }

Here is the caller graph for this function:

void TLB::Write ( u64  addr,
const PageTableEntry entry 
)

VirtualMemory.cpp88 行で定義されています。

参照先 m_addrm_addrMaskm_bodym_valid.

参照元 Onikiri::EmulatorUtility::PageTable::GetMap()Onikiri::EmulatorUtility::PageTable::SetMap()Onikiri::EmulatorUtility::PageTable::TargetToHost().

00089 {
00090     m_addr = addr & m_addrMask;
00091     m_body = entry;
00092     m_valid = true;
00093 }

Here is the caller graph for this function:


変数

u64 Onikiri::EmulatorUtility::TLB::m_addr [protected]

VirtualMemory.h70 行で定義されています。

参照元 Lookup()TLB()Write().

u64 Onikiri::EmulatorUtility::TLB::m_addrMask [protected]

VirtualMemory.h74 行で定義されています。

参照元 Lookup()TLB()Write().

PageTableEntry Onikiri::EmulatorUtility::TLB::m_body [protected]

VirtualMemory.h72 行で定義されています。

参照元 Lookup()TLB()Write().

u64 Onikiri::EmulatorUtility::TLB::m_offsetBits [protected]

VirtualMemory.h73 行で定義されています。

参照元 TLB().

bool Onikiri::EmulatorUtility::TLB::m_valid [protected]

VirtualMemory.h71 行で定義されています。

参照元 Flush()Lookup()TLB()Write().


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:30:19 2013に生成されました。  doxygen 1.4.7