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