Rev 2089 | Rev 2141 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2089 | Rev 2134 | ||
---|---|---|---|
Line 37... | Line 37... | ||
37 | #include <arch.h> |
37 | #include <arch.h> |
38 | #include <arch/cpu.h> |
38 | #include <arch/cpu.h> |
39 | #include <arch/asm.h> |
39 | #include <arch/asm.h> |
40 | #include <config.h> |
40 | #include <config.h> |
41 | #include <mm/tlb.h> |
41 | #include <mm/tlb.h> |
- | 42 | #include <arch/mm/cache.h> |
|
42 | #include <arch/interrupt.h> |
43 | #include <arch/interrupt.h> |
43 | #include <arch/trap/interrupt.h> |
44 | #include <arch/trap/interrupt.h> |
44 | #include <arch/barrier.h> |
45 | #include <arch/barrier.h> |
45 | #include <preemption.h> |
46 | #include <preemption.h> |
46 | #include <time/delay.h> |
47 | #include <time/delay.h> |
Line 76... | Line 77... | ||
76 | do { |
77 | do { |
77 | asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_0, (uintptr_t) |
78 | asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_0, (uintptr_t) |
78 | func); |
79 | func); |
79 | asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_1, 0); |
80 | asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_1, 0); |
80 | asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_2, 0); |
81 | asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_2, 0); |
81 | asi_u64_write(ASI_UDB_INTR_W, (mid << |
82 | asi_u64_write(ASI_UDB_INTR_W, |
82 | INTR_VEC_DISPATCH_MID_SHIFT) | ASI_UDB_INTR_W_DISPATCH, |
83 | (mid << INTR_VEC_DISPATCH_MID_SHIFT) | |
83 | 0); |
84 | ASI_UDB_INTR_W_DISPATCH, 0); |
84 | 85 | ||
85 | membar(); |
86 | membar(); |
86 | 87 | ||
87 | do { |
88 | do { |
88 | status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0); |
89 | status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0); |
Line 122... | Line 123... | ||
122 | 123 | ||
123 | switch (ipi) { |
124 | switch (ipi) { |
124 | case IPI_TLB_SHOOTDOWN: |
125 | case IPI_TLB_SHOOTDOWN: |
125 | func = tlb_shootdown_ipi_recv; |
126 | func = tlb_shootdown_ipi_recv; |
126 | break; |
127 | break; |
- | 128 | #if (defined(CONFIG_SMP) && (defined(CONFIG_VIRT_IDX_DCACHE))) |
|
- | 129 | case IPI_DCACHE_SHOOTDOWN: |
|
- | 130 | func = dcache_shootdown_ipi_recv; |
|
- | 131 | break; |
|
- | 132 | #endif |
|
127 | default: |
133 | default: |
128 | panic("Unknown IPI (%d).\n", ipi); |
134 | panic("Unknown IPI (%d).\n", ipi); |
129 | break; |
135 | break; |
130 | } |
136 | } |
131 | 137 |