36#ifndef _MINIOS_IPI_IPI_H_
37#define _MINIOS_IPI_IPI_H_
63 __asm__
volatile(
"lock subl $1, %0" :
"+m"(b->
ack_count) : :
"memory");
72 __asm__
volatile(
"pause" : : :
"memory");
ipi_barrier_t g_tlb_barrier
Definition ipi.c:29
void tlb_shootdown_isr(void *frame)
ISR for TLB_SHOOTDOWN_VECTOR (51) on remote CPUs.
Definition ipi.c:57
void panic_halt_isr(void *frame)
ISR for PANIC_HALT_VECTOR (52) on APs.
Definition ipi.c:110
void ipi_panic_halt(void)
Broadcast halt IPI to all APs on kernel panic.
Definition ipi.c:71
static void ipi_barrier_ack(ipi_barrier_t *b)
Atomically decrement the barrier's ack_count.
Definition ipi.h:62
void ipi_tlb_shootdown(uint64_t virt)
Broadcast TLB-shootdown IPI and wait for all CPUs to flush.
Definition ipi.c:31
static void ipi_barrier_wait(ipi_barrier_t *b)
Spin until barrier->ack_count reaches 0.
Definition ipi.h:70
uint64_t virt
Definition ipi.h:52
volatile uint32_t ack_count
Definition ipi.h:51
unsigned int uint32_t
Definition types.h:34
unsigned long int uint64_t
Definition types.h:37