linux/arch/sh/boards/mach-cayman/panic.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2003  Richard Curnow, SuperH UK Limited
   3 *
   4 * This file is subject to the terms and conditions of the GNU General Public
   5 * License.  See the file "COPYING" in the main directory of this archive
   6 * for more details.
   7 */
   8
   9#include <linux/kernel.h>
  10#include <linux/io.h>
  11#include <cpu/registers.h>
  12
  13/* THIS IS A PHYSICAL ADDRESS */
  14#define HDSP2534_ADDR (0x04002100)
  15
  16static void poor_mans_delay(void)
  17{
  18        int i;
  19
  20        for (i = 0; i < 2500000; i++)
  21                cpu_relax();
  22}
  23
  24static void show_value(unsigned long x)
  25{
  26        int i;
  27        unsigned nibble;
  28        for (i = 0; i < 8; i++) {
  29                nibble = ((x >> (i * 4)) & 0xf);
  30
  31                __raw_writeb(nibble + ((nibble > 9) ? 55 : 48),
  32                          HDSP2534_ADDR + 0xe0 + ((7 - i) << 2));
  33        }
  34}
  35
  36void
  37panic_handler(unsigned long panicPC, unsigned long panicSSR,
  38              unsigned long panicEXPEVT)
  39{
  40        while (1) {
  41                /* This piece of code displays the PC on the LED display */
  42                show_value(panicPC);
  43                poor_mans_delay();
  44                show_value(panicSSR);
  45                poor_mans_delay();
  46                show_value(panicEXPEVT);
  47                poor_mans_delay();
  48        }
  49}
  50