Changes in kernel/arch/sparc64/src/trap/sun4v/interrupt.c [7da160b:95c4776] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/trap/sun4v/interrupt.c
r7da160b r95c4776 36 36 #include <arch/trap/interrupt.h> 37 37 #include <arch/sparc64.h> 38 #include <arch/trap/interrupt.h> 38 39 #include <interrupt.h> 39 40 #include <ddi/irq.h> … … 86 87 CPU_MONDO_QUEUE_ID, 87 88 KA2PA(cpu_mondo_queues[CPU->id]), 88 CPU_MONDO_NENTRIES) != HV_EOK)89 CPU_MONDO_NENTRIES) != EOK) 89 90 panic("Initializing mondo queue failed on CPU %d.\n", 90 91 CPU->arch.id); 91 92 } 92 93 … … 97 98 void cpu_mondo(void) 98 99 { 99 #ifdef CONFIG_SMP100 100 unsigned int tail = asi_u64_read(ASI_QUEUE, VA_CPU_MONDO_QUEUE_TAIL); 101 101 unsigned int head = asi_u64_read(ASI_QUEUE, VA_CPU_MONDO_QUEUE_HEAD); 102 102 103 103 while (head != tail) { 104 104 105 uint64_t data1 = cpu_mondo_queues[CPU->id][0]; 105 106 106 107 head = (head + CPU_MONDO_ENTRY_SIZE * sizeof(uint64_t)) % 107 108 (CPU_MONDO_QUEUE_SIZE * sizeof(uint64_t)); 108 109 asi_u64_write(ASI_QUEUE, VA_CPU_MONDO_QUEUE_HEAD, head); 109 110 110 if (data1 == (uint ptr_t) tlb_shootdown_ipi_recv) {111 if (data1 == (uint64_t) tlb_shootdown_ipi_recv) { 111 112 ((void (*)(void)) data1)(); 112 113 } else { 113 114 printf("Spurious interrupt on %d, data = %lx.\n", 114 115 CPU->arch.id, data1); 115 116 } 117 116 118 } 117 #endif 119 118 120 } 119 121
Note:
See TracChangeset
for help on using the changeset viewer.