1 #include <xen/mm.h>
2 #include <asm/system.h>
3 #include <asm/smp.h>
4 #include <asm/page.h>
5 #include <asm/gic.h>
6 #include <asm/flushtlb.h>
7 
arch_flush_tlb_mask(const cpumask_t * mask)8 void arch_flush_tlb_mask(const cpumask_t *mask)
9 {
10     /* No need to IPI other processors on ARM, the processor takes care of it. */
11     flush_all_guests_tlb();
12 }
13 
smp_send_event_check_mask(const cpumask_t * mask)14 void smp_send_event_check_mask(const cpumask_t *mask)
15 {
16     send_SGI_mask(mask, GIC_SGI_EVENT_CHECK);
17 }
18 
smp_send_call_function_mask(const cpumask_t * mask)19 void smp_send_call_function_mask(const cpumask_t *mask)
20 {
21     cpumask_t target_mask;
22 
23     cpumask_andnot(&target_mask, mask, cpumask_of(smp_processor_id()));
24 
25     send_SGI_mask(&target_mask, GIC_SGI_CALL_FUNCTION);
26 
27     if ( cpumask_test_cpu(smp_processor_id(), mask) )
28     {
29         local_irq_disable();
30         smp_call_function_interrupt();
31         local_irq_enable();
32     }
33 }
34 
35 /*
36  * Local variables:
37  * mode: C
38  * c-file-style: "BSD"
39  * c-basic-offset: 4
40  * indent-tabs-mode: nil
41  * End:
42  */
43