Subversion Repositories HelenOS

Rev

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