38#ifndef __ARCH_ARM_TLBI_HH__
39#define __ARCH_ARM_TLBI_HH__
143 :
TLBIALL(_target_regime, _secure)
156 :
TLBIALL(_target_regime, _secure)
169 :
TLBIOp(_target_regime, _secure)
226 :
TLBIOp(_target_regime, _secure),
asid(_asid),
243 :
TLBIASID(_target_regime, _secure, _asid)
256 :
TLBIASID(_target_regime, _secure, _asid)
269 :
TLBIOp(_target_regime, false)
296 Addr _addr,
bool last_level)
297 :
TLBIOp(_target_regime, _secure),
addr(_addr),
317 Addr _addr, uint16_t _asid,
bool last_level)
336 Addr _addr, uint16_t _asid)
337 :
TLBIMVA(_target_regime, _secure, _addr, _asid, false)
350 Addr _addr, uint16_t _asid)
351 :
TLBIMVA(_target_regime, _secure, _addr, _asid, false)
406 default:
return false;
428 panic(
"This shouldn't be called\n");
453 RegVal val, uint16_t _asid,
bool last_level)
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
DTLBIALL(TranslationRegime _target_regime, bool _secure)
Data TLB Invalidate by ASID match.
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
DTLBIASID(TranslationRegime _target_regime, bool _secure, uint16_t _asid)
Data TLB Invalidate by VA.
DTLBIMVA(TranslationRegime _target_regime, bool _secure, Addr _addr, uint16_t _asid)
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
Instruction TLB Invalidate All.
ITLBIALL(TranslationRegime _target_regime, bool _secure)
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
Instruction TLB Invalidate by ASID match.
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
ITLBIASID(TranslationRegime _target_regime, bool _secure, uint16_t _asid)
Instruction TLB Invalidate by VA.
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
ITLBIMVA(TranslationRegime _target_regime, bool _secure, Addr _addr, uint16_t _asid)
Implementaton of AArch64 TLBI ALLE(1,2,3)(IS) instructions.
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
bool stage2Flush() const override
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
TLBIALLEL(TranslationRegime _target_regime, bool _secure)
TLBIALLEL makeStage2() const
TLB Invalidate All, Non-Secure.
TLBIALLN makeStage2() const
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)
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
TLBIALL(TranslationRegime _target_regime, bool _secure)
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
bool stage2Flush() const override
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
TLBIALL makeStage2() const
void operator()(ThreadContext *tc) override
TLB Invalidate by ASID match.
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
TLBIASID(TranslationRegime _target_regime, bool _secure, uint16_t _asid)
TLB Invalidate by Intermediate Physical Address.
void operator()(ThreadContext *tc) override
TLBIIPA(TranslationRegime _target_regime, bool _secure, Addr _addr, bool last_level)
virtual TLBIMVAA makeStage2() const
TLBIIPA is basically a TLBIMVAA for stage2 TLBs.
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
bool stage1Flush() const override
Return true if the TLBI op needs to flush stage1 entries, Defaulting to true in the TLBIOp abstract c...
TLB Invalidate by VA, All ASID.
TLBIMVAA(TranslationRegime _target_regime, bool _secure, Addr _addr, bool last_level)
TlbEntry::Lookup lookupGen(vmid_t vmid) const
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
void operator()(ThreadContext *tc) override
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
TlbEntry::Lookup lookupGen(vmid_t vmid) const
TLBIMVA(TranslationRegime _target_regime, bool _secure, Addr _addr, uint16_t _asid, bool last_level)
void operator()(ThreadContext *tc) override
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
virtual bool match(TlbEntry *entry, vmid_t curr_vmid) const =0
virtual bool stage2Flush() const
Return true if the TLBI op needs to flush stage2 entries, Defaulting to false in the TLBIOp abstract ...
TLBIOp(TranslationRegime _target_regime, bool _secure)
virtual void operator()(ThreadContext *tc)
TLB Range Invalidate by VA, All ASIDs.
TLBIRIPA(TranslationRegime _target_regime, bool _secure, RegVal val, bool last_level)
virtual TLBIMVAA makeStage2() const
TLBIIPA is basically a TLBIMVAA for stage2 TLBs.
TLB Range Invalidate by VA, All ASIDs.
TLBIRMVAA(TranslationRegime _target_regime, bool _secure, RegVal val, bool last_level)
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
TLB Range Invalidate by VA.
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
TLBIRMVA(TranslationRegime _target_regime, bool _secure, RegVal val, uint16_t _asid, bool last_level)
Bitfield< 36, 0 > baseAddr
Addr startAddress() const
bool resTLBIttl(uint8_t tg, uint8_t ttl) const
BitUnion64(RangeData) Bitfield< 47
bool valid() const
Is the range valid? This mainly depends on the specified translation granule.
Implementaton of AArch64 TLBI VMALLE1(IS)/VMALLS112E1(IS) instructions.
TLBIVMALL makeStage2() const
bool match(TlbEntry *entry, vmid_t curr_vmid) const override
TLBIVMALL(TranslationRegime _target_regime, bool _secure, bool _stage2)
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 ...
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual System * getSystemPtr()=0
constexpr uint64_t sext(uint64_t val)
Sign-extend an N-bit value to 64 bits.
#define EndBitUnion(name)
This closes off the class and union started by the above macro.
#define panic(...)
This implements a cprintf based panic() function.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria 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.