diff --git a/repos/base-hw/src/core/spec/arm_v8/kernel/thread.cc b/repos/base-hw/src/core/spec/arm_v8/kernel/thread.cc index b724f84e5d..73cb72bb34 100644 --- a/repos/base-hw/src/core/spec/arm_v8/kernel/thread.cc +++ b/repos/base-hw/src/core/spec/arm_v8/kernel/thread.cc @@ -75,10 +75,14 @@ void Thread::exception(Cpu & cpu) void Kernel::Thread::Tlb_invalidation::execute() { }; -bool Kernel::Pd::invalidate_tlb(Cpu &, addr_t addr, size_t size) +bool Kernel::Pd::invalidate_tlb(Cpu & cpu, addr_t addr, size_t size) { using namespace Genode; + /* only apply to the active cpu */ + if (cpu.id() != Cpu::executing_id()) + return false; + /** * The kernel part of the address space is mapped as global * therefore we have to invalidate it differently