Linus TorvaldsLinux-2.6.12-rc21da177e21 years agoHistory
58 lines · 1.1 KB · C
RawDownload
/* * Copyright (C) 2003  Richard Curnow, SuperH UK Limited * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. */ #include <linux/kernel.h>#include <asm/io.h>#include <asm/registers.h> /* THIS IS A PHYSICAL ADDRESS */#define HDSP2534_ADDR (0x04002100) #ifdef CONFIG_SH_CAYMAN static void poor_mans_delay(void){	int i;	for (i = 0; i < 2500000; i++) {	}		/* poor man's delay */} static void show_value(unsigned long x){	int i;	unsigned nibble;	for (i = 0; i < 8; i++) {		nibble = ((x >> (i * 4)) & 0xf); 		ctrl_outb(nibble + ((nibble > 9) ? 55 : 48),			  HDSP2534_ADDR + 0xe0 + ((7 - i) << 2));	}} #endif voidpanic_handler(unsigned long panicPC, unsigned long panicSSR,	      unsigned long panicEXPEVT){#ifdef CONFIG_SH_CAYMAN	while (1) {		/* This piece of code displays the PC on the LED display */		show_value(panicPC);		poor_mans_delay();		show_value(panicSSR);		poor_mans_delay();		show_value(panicEXPEVT);		poor_mans_delay();	}#endif 	/* Never return from the panic handler */	for (;;) ; }