xref: /kvm-unit-tests/lib/arm/asm/smp.h (revision 48d5952451de62a4db23cf73024f702cf1a64fc3)
168ea0e0bSAndrew Jones #ifndef _ASMARM_SMP_H_
268ea0e0bSAndrew Jones #define _ASMARM_SMP_H_
368ea0e0bSAndrew Jones /*
468ea0e0bSAndrew Jones  * Copyright (C) 2015, Red Hat Inc, Andrew Jones <drjones@redhat.com>
568ea0e0bSAndrew Jones  *
668ea0e0bSAndrew Jones  * This work is licensed under the terms of the GNU LGPL, version 2.
768ea0e0bSAndrew Jones  */
8dfc1fec2SAndrew Jones #include <cpumask.h>
9*b2d54669SAndrew Jones #include <on-cpus.h>
1005a76472SAndrew Jones #include <asm/barrier.h>
1168ea0e0bSAndrew Jones #include <asm/thread_info.h>
1268ea0e0bSAndrew Jones 
1368ea0e0bSAndrew Jones #define smp_processor_id()		(current_thread_info()->cpu)
1468ea0e0bSAndrew Jones 
156afb9481SAlexandru Elisei typedef void (*secondary_entry_fn)(void);
166afb9481SAlexandru Elisei 
176afb9481SAlexandru Elisei struct secondary_data {
186afb9481SAlexandru Elisei 	void *stack;            /* must be first member of struct */
196afb9481SAlexandru Elisei 	secondary_entry_fn entry;
206afb9481SAlexandru Elisei };
216afb9481SAlexandru Elisei extern struct secondary_data secondary_data;
226afb9481SAlexandru Elisei 
2305a76472SAndrew Jones #define smp_wait_for_event()	wfe()
2405a76472SAndrew Jones #define smp_send_event()	sev()
2505a76472SAndrew Jones 
2668ea0e0bSAndrew Jones extern void halt(void);
2768ea0e0bSAndrew Jones 
2801855004SAndrew Jones extern void smp_boot_secondary(int cpu, secondary_entry_fn entry);
2901855004SAndrew Jones extern void smp_boot_secondary_nofail(int cpu, secondary_entry_fn entry);
3001855004SAndrew Jones 
3168ea0e0bSAndrew Jones #endif /* _ASMARM_SMP_H_ */
32