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