Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 <asm/io.h> | |
f15cbe6f | 11 | #include <cpu/registers.h> |
1da177e4 LT |
12 | |
13 | /* THIS IS A PHYSICAL ADDRESS */ | |
14 | #define HDSP2534_ADDR (0x04002100) | |
15 | ||
16 | #ifdef CONFIG_SH_CAYMAN | |
17 | ||
18 | static void poor_mans_delay(void) | |
19 | { | |
20 | int i; | |
21 | for (i = 0; i < 2500000; i++) { | |
22 | } /* poor man's delay */ | |
23 | } | |
24 | ||
25 | static void show_value(unsigned long x) | |
26 | { | |
27 | int i; | |
28 | unsigned nibble; | |
29 | for (i = 0; i < 8; i++) { | |
30 | nibble = ((x >> (i * 4)) & 0xf); | |
31 | ||
32 | ctrl_outb(nibble + ((nibble > 9) ? 55 : 48), | |
33 | HDSP2534_ADDR + 0xe0 + ((7 - i) << 2)); | |
34 | } | |
35 | } | |
36 | ||
37 | #endif | |
38 | ||
39 | void | |
40 | panic_handler(unsigned long panicPC, unsigned long panicSSR, | |
41 | unsigned long panicEXPEVT) | |
42 | { | |
43 | #ifdef CONFIG_SH_CAYMAN | |
44 | while (1) { | |
45 | /* This piece of code displays the PC on the LED display */ | |
46 | show_value(panicPC); | |
47 | poor_mans_delay(); | |
48 | show_value(panicSSR); | |
49 | poor_mans_delay(); | |
50 | show_value(panicEXPEVT); | |
51 | poor_mans_delay(); | |
52 | } | |
53 | #endif | |
54 | ||
55 | /* Never return from the panic handler */ | |
56 | for (;;) ; | |
57 | ||
58 | } |