Skip to content

TLB

struct tlb_shootdown_cpu {
    _Atomic uintptr_t  queue[TLB_QUEUE_SIZE];
    _Atomic uint32_t   head;
    _Atomic uint32_t   tail;
    atomic_bool        in_tlb_shootdown;
    _Atomic uint8_t    flush_all;
    _Atomic uint64_t   req_gen;
    _Atomic uint64_t   done_gen;
};
void tlb_init(void);
enum irq_result tlb_shootdown_isr(void *ctx, irq_t irq, struct irq_context *rsp);
void tlb_shootdown(uintptr_t addr, bool synchronous);
#define TLB_QUEUE_SIZE 64