parisc: Avoid function pointers for kernel exception routines
[pandora-kernel.git] / arch / parisc / kernel / pa7300lc.c
1 /*
2  *   linux/arch/parisc/kernel/pa7300lc.c
3  *      - PA7300LC-specific functions   
4  *
5  *   Copyright (C) 2000 Philipp Rumpf */
6
7 #include <linux/sched.h>
8 #include <linux/smp.h>
9 #include <linux/kernel.h>
10 #include <asm/io.h>
11 #include <asm/ptrace.h>
12 #include <asm/machdep.h>
13
14 /* CPU register indices */
15
16 #define MIOC_STATUS     0xf040
17 #define MIOC_CONTROL    0xf080
18 #define MDERRADD        0xf0e0
19 #define DMAERR          0xf0e8
20 #define DIOERR          0xf0ec
21 #define HIDMAMEM        0xf0f4
22
23 /* this returns the HPA of the CPU it was called on */
24 static u32 cpu_hpa(void)
25 {
26         return 0xfffb0000;
27 }
28
29 static void pa7300lc_lpmc(int code, struct pt_regs *regs)
30 {
31         u32 hpa;
32         printk(KERN_WARNING "LPMC on CPU %d\n", smp_processor_id());
33
34         show_regs(regs);
35
36         hpa = cpu_hpa();
37         printk(KERN_WARNING
38                 "MIOC_CONTROL %08x\n" "MIOC_STATUS  %08x\n"
39                 "MDERRADD     %08x\n" "DMAERR       %08x\n"
40                 "DIOERR       %08x\n" "HIDMAMEM     %08x\n",
41                 gsc_readl(hpa+MIOC_CONTROL), gsc_readl(hpa+MIOC_STATUS),
42                 gsc_readl(hpa+MDERRADD), gsc_readl(hpa+DMAERR),
43                 gsc_readl(hpa+DIOERR), gsc_readl(hpa+HIDMAMEM));
44 }
45
46 void pa7300lc_init(void)
47 {
48         cpu_lpmc = pa7300lc_lpmc;
49 }