crime.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 2001 Keith M Wesolowski
  7.  */
  8. #include <linux/types.h>
  9. #include <linux/init.h>
  10. #include <linux/kernel.h>
  11. #include <asm/ip32/crime.h>
  12. #include <asm/ptrace.h>
  13. void __init crime_init (void)
  14. {
  15. u64 id = crime_read_64 (CRIME_ID);
  16. u64 rev = id & CRIME_ID_REV;
  17. id = (id & CRIME_ID_IDBITS) >> 4;
  18. printk ("CRIME id %1lx rev %ld detected at %016lxn", id, rev,
  19. (unsigned long) CRIME_BASE);
  20. }
  21. /* XXX Like on Sun, these give us various useful information to printk. */
  22. void crime_memerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs)
  23. {
  24. u64 memerr = crime_read_64 (CRIME_MEM_ERROR_STAT);
  25. u64 addr = crime_read_64 (CRIME_MEM_ERROR_ADDR);
  26. memerr &= CRIME_MEM_ERROR_STAT_MASK;
  27. printk ("CRIME memory error at physaddr 0x%08lx status %08lxn",
  28. addr << 2, memerr);
  29. crime_write_64 (CRIME_MEM_ERROR_STAT, 0);
  30. }
  31. void crime_cpuerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs)
  32. {
  33. u64 cpuerr = crime_read_64 (CRIME_CPU_ERROR_STAT);
  34. u64 addr = crime_read_64 (CRIME_CPU_ERROR_ADDR);
  35. cpuerr &= CRIME_CPU_ERROR_MASK;
  36. addr <<= 2UL;
  37. printk ("CRIME CPU interface error detected at %09lx status %08lxn",
  38. addr, cpuerr);
  39. crime_write_64 (CRIME_CPU_ERROR_STAT, 0);
  40. }