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 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.