xref: /kvm-unit-tests/lib/x86/smp.h (revision 762b94763db4d8093e53e19c697bf061f93b1f97)
17d36db35SAvi Kivity #ifndef __SMP_H
27d36db35SAvi Kivity #define __SMP_H
37d36db35SAvi Kivity 
4*762b9476SJason Wang #define mb() 	asm volatile("mfence":::"memory")
5*762b9476SJason Wang #define rmb()	asm volatile("lfence":::"memory")
6*762b9476SJason Wang #define wmb()	asm volatile("sfence" ::: "memory")
7*762b9476SJason Wang 
87d36db35SAvi Kivity struct spinlock {
97d36db35SAvi Kivity     int v;
107d36db35SAvi Kivity };
117d36db35SAvi Kivity 
127d36db35SAvi Kivity void smp_init(void);
137d36db35SAvi Kivity 
147d36db35SAvi Kivity int cpu_count(void);
157d36db35SAvi Kivity int smp_id(void);
167d36db35SAvi Kivity void on_cpu(int cpu, void (*function)(void *data), void *data);
177d36db35SAvi Kivity void on_cpu_async(int cpu, void (*function)(void *data), void *data);
187d36db35SAvi Kivity void spin_lock(struct spinlock *lock);
197d36db35SAvi Kivity void spin_unlock(struct spinlock *lock);
207d36db35SAvi Kivity 
217d36db35SAvi Kivity #endif
22