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 42... | Line 42... | ||
| 42 | #include <arch/asm.h> |
42 | #include <arch/asm.h> |
| 43 | #include <arch/barrier.h> |
43 | #include <arch/barrier.h> |
| 44 | #include <print.h> |
44 | #include <print.h> |
| 45 | #include <arch.h> |
45 | #include <arch.h> |
| 46 | #include <mm/tlb.h> |
46 | #include <mm/tlb.h> |
| - | 47 | #include <arch/mm/cache.h> |
|
| 47 | #include <config.h> |
48 | #include <config.h> |
| 48 | #include <synch/spinlock.h> |
49 | #include <synch/spinlock.h> |
| 49 | 50 | ||
| 50 | /** Register Interrupt Level Handler. |
51 | /** Register Interrupt Level Handler. |
| 51 | * |
52 | * |
| Line 81... | Line 82... | ||
| 81 | irq->handler(irq, irq->arg); |
82 | irq->handler(irq, irq->arg); |
| 82 | spinlock_unlock(&irq->lock); |
83 | spinlock_unlock(&irq->lock); |
| 83 | } else if (data0 > config.base) { |
84 | } else if (data0 > config.base) { |
| 84 | /* |
85 | /* |
| 85 | * This is a cross-call. |
86 | * This is a cross-call. |
| 86 | * data0 contains address of kernel function. |
87 | * data0 contains address of the kernel function. |
| 87 | * We call the function only after we verify |
88 | * We call the function only after we verify |
| 88 | * it is on of the supported ones. |
89 | * it is one of the supported ones. |
| 89 | */ |
90 | */ |
| 90 | #ifdef CONFIG_SMP |
91 | #ifdef CONFIG_SMP |
| 91 | if (data0 == (uintptr_t) tlb_shootdown_ipi_recv) { |
92 | if (data0 == (uintptr_t) tlb_shootdown_ipi_recv) { |
| 92 | tlb_shootdown_ipi_recv(); |
93 | tlb_shootdown_ipi_recv(); |
| - | 94 | #ifdef CONFIG_VIRT_IDX_DCACHE |
|
| - | 95 | } else if (data0 == (uintptr_t) dcache_shootdown_ipi_recv) { |
|
| - | 96 | dcache_shootdown_ipi_recv(); |
|
| - | 97 | #endif |
|
| 93 | } |
98 | } |
| 94 | #endif |
99 | #endif |
| 95 | } else { |
100 | } else { |
| 96 | /* |
101 | /* |
| 97 | * Spurious interrupt. |
102 | * Spurious interrupt. |