38#ifndef __ARCH_ARM_TLBI_HH__
39#define __ARCH_ARM_TLBI_HH__
173 :
TLBIOp(_target_regime, _ss, _attr)
219 :
TLBIOp(_target_regime, _ss, _attr),
asid(_asid),
237 :
TLBIASID(_target_regime, _ss, _asid)
251 :
TLBIASID(_target_regime, _ss, _asid)
286 :
TLBIOp(_target_regime, _ss, _attr),
addr(_addr),
306 Addr _addr, uint16_t _asid,
bool last_level,
326 Addr _addr, uint16_t _asid)
327 :
TLBIMVA(_target_regime, _ss, _addr, _asid, false)
340 Addr _addr, uint16_t _asid)
341 :
TLBIMVA(_target_regime, _ss, _addr, _asid, false)
396 default:
return false;
412 :
TLBIOp(_target_regime, _ss, _attr),
421 :
TLBIOp(_target_regime, _ss, _attr),
439 panic(
"Invalid SecurityState\n");
491 TLBIIPA(tc, _target_regime, _ss,
val, last_level, _attr)
void operator()(ThreadContext *tc) override
DTLBIALL(TranslationRegime _target_regime, SecurityState _ss)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
DTLBIASID(TranslationRegime _target_regime, SecurityState _ss, uint16_t _asid)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
DTLBIMVA(TranslationRegime _target_regime, SecurityState _ss, Addr _addr, uint16_t _asid)
void operator()(ThreadContext *tc) override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
ITLBIALL(TranslationRegime _target_regime, SecurityState _ss)
void operator()(ThreadContext *tc) override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
ITLBIASID(TranslationRegime _target_regime, SecurityState _ss, uint16_t _asid)
ITLBIMVA(TranslationRegime _target_regime, SecurityState _ss, Addr _addr, uint16_t _asid)
void operator()(ThreadContext *tc) override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
bool stage2Flush() const override
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
TLBIALLEL(TranslationRegime _target_regime, SecurityState _ss, Attr _attr)
bool stage2Flush() const override
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
TLBIALLN(TranslationRegime _target_regime)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
TLBIALL(TranslationRegime _target_regime, SecurityState _ss, Attr _attr=Attr::None)
bool stage2Flush() const override
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
void operator()(ThreadContext *tc) override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
TLBIASID(TranslationRegime _target_regime, SecurityState _ss, uint16_t _asid, Attr _attr=Attr::None)
TLBIIPA(ThreadContext *tc, TranslationRegime _target_regime, SecurityState _ss, RegVal val, bool last_level, Attr _attr=Attr::None)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
TlbEntry::KeyType lookupGen(vmid_t vmid) const
TLBIIPA(TranslationRegime _target_regime, SecurityState _ss, Addr _addr, bool last_level, Attr _attr=Attr::None)
bool stage1Flush() const override
Return true if the TLBI op needs to flush stage1 entries, Defaulting to true in the TLBIOp abstract c...
TLBIMVAA(TranslationRegime _target_regime, SecurityState _ss, Addr _addr, bool last_level, Attr _attr=Attr::None)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
TlbEntry::KeyType lookupGen(vmid_t vmid) const
void operator()(ThreadContext *tc) override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
TlbEntry::KeyType lookupGen(vmid_t vmid) const
void operator()(ThreadContext *tc) override
TLBIMVA(TranslationRegime _target_regime, SecurityState _ss, Addr _addr, uint16_t _asid, bool last_level, Attr _attr=Attr::None)
void broadcast(ThreadContext *tc)
Broadcast the TLB Invalidate operation to all TLBs in the Arm system.
virtual bool stage1Flush() const
Return true if the TLBI op needs to flush stage1 entries, Defaulting to true in the TLBIOp abstract c...
TranslationRegime targetRegime
bool match(TlbEntry *entry, vmid_t curr_vmid) const
virtual bool stage2Flush() const
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
virtual bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const =0
TLBIOp(TranslationRegime _target_regime, SecurityState _ss, Attr _attr)
virtual void operator()(ThreadContext *tc)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
TLBIRIPA(ThreadContext *tc, TranslationRegime _target_regime, SecurityState _ss, RegVal val, bool last_level, Attr _attr)
TLBIRMVAA(TranslationRegime _target_regime, SecurityState _ss, RegVal val, bool last_level, Attr _attr)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
TLBIRMVA(TranslationRegime _target_regime, SecurityState _ss, RegVal val, uint16_t _asid, bool last_level, Attr _attr)
Bitfield< 36, 0 > baseAddr
Addr startAddress() const
EndBitUnion(RangeData) static const expr std
bool resTLBIttl(uint8_t tg, uint8_t ttl) const
BitUnion64(RangeData) Bitfield< 47
bool valid() const
Is the range valid?
TLBIVMALL(TranslationRegime _target_regime, SecurityState _ss, bool _stage2, Attr _attr)
bool matchEntry(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
bool stage2Flush() const override
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
uint8_t physAddrRange() const
Returns the supported physical address range in bits.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual System * getSystemPtr()=0
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
constexpr uint64_t sext(uint64_t val)
Sign-extend an N-bit value to 64 bits.
#define panic(...)
This implements a cprintf based panic() function.
SecurityState
Security State.
PASpace
Physical Address Space.
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Overload hash function for BasicBlockRange type.
TLBTypes::KeyType KeyType