Rev 1896 | Rev 1909 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1896 | Rev 1904 | ||
---|---|---|---|
Line 43... | Line 43... | ||
43 | #include <ipc/sysipc.h> |
43 | #include <ipc/sysipc.h> |
44 | #include <arch/asm.h> |
44 | #include <arch/asm.h> |
45 | #include <arch/barrier.h> |
45 | #include <arch/barrier.h> |
46 | #include <print.h> |
46 | #include <print.h> |
47 | #include <genarch/kbd/z8530.h> |
47 | #include <genarch/kbd/z8530.h> |
- | 48 | #include <arch.h> |
|
- | 49 | #include <mm/tlb.h> |
|
- | 50 | #include <config.h> |
|
48 | 51 | ||
49 | /** Register Interrupt Level Handler. |
52 | /** Register Interrupt Level Handler. |
50 | * |
53 | * |
51 | * @param n Interrupt Level (1 - 15). |
54 | * @param n Interrupt Level (1 - 15). |
52 | * @param name Short descriptive string. |
55 | * @param name Short descriptive string. |
Line 95... | Line 98... | ||
95 | ipc_irq_send_notif(0); |
98 | ipc_irq_send_notif(0); |
96 | fhc_uart_reset(); |
99 | fhc_uart_reset(); |
97 | break; |
100 | break; |
98 | 101 | ||
99 | #endif |
102 | #endif |
- | 103 | default: |
|
- | 104 | if (data0 > config.base) { |
|
- | 105 | /* |
|
- | 106 | * This is a cross-call. |
|
- | 107 | * data0 contains address of kernel function. |
|
- | 108 | * We call the function only after we verify |
|
- | 109 | * it is on of the supported ones. |
|
- | 110 | */ |
|
- | 111 | #ifdef CONFIG_SMP |
|
- | 112 | if (data0 == (uintptr_t) tlb_shootdown_ipi_recv) { |
|
- | 113 | tlb_shootdown_ipi_recv(); |
|
- | 114 | break; |
|
- | 115 | } |
|
- | 116 | #endif |
|
- | 117 | } |
|
- | 118 | ||
- | 119 | printf("cpu%d: spurious interrupt (intrcv=%#llx, data0=%#llx)\n", CPU->id, intrcv, data0); |
|
- | 120 | break; |
|
100 | } |
121 | } |
101 | 122 | ||
102 | membar(); |
123 | membar(); |
103 | asi_u64_write(ASI_INTR_RECEIVE, 0, 0); |
124 | asi_u64_write(ASI_INTR_RECEIVE, 0, 0); |
104 | } |
125 | } |