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 */
cpu_hpa(void)24 static u32 cpu_hpa(void)
25 {
26 	return 0xfffb0000;
27 }
28 
pa7300lc_lpmc(int code,struct pt_regs * regs)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 
pa7300lc_init(void)46 void pa7300lc_init(void)
47 {
48 	cpu_lpmc = pa7300lc_lpmc;
49 }
50