Subversion Repositories HelenOS

Rev

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
}