summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Mahone <andrew.mahone@gmail.com>2009-11-14 11:27:41 +0000
committerAndrew Mahone <andrew.mahone@gmail.com>2009-11-14 11:27:41 +0000
commit81f72ddef6ff4e07ad437b48b5460f761a7f17f3 (patch)
treefc5b9e0c9f08c6ee9fc3c8fb3e7626e96fb4c8f3
parentd1963e14dede231129a9ae9988b55c157181e8a0 (diff)
downloadrockbox-81f72ddef6ff4e07ad437b48b5460f761a7f17f3.tar.gz
rockbox-81f72ddef6ff4e07ad437b48b5460f761a7f17f3.zip
Set DRMODE_SOLID, uniform colors, and sysfont before clearing LCD to display panic or exception messages - see FS#10665.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23623 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/panic.c1
-rw-r--r--firmware/target/arm/system-arm.c10
-rw-r--r--firmware/target/coldfire/system-coldfire.c9
-rw-r--r--firmware/target/mips/ingenic_jz47xx/system-jz4740.c10
-rw-r--r--firmware/target/sh/system-sh.c10
5 files changed, 35 insertions, 5 deletions
diff --git a/firmware/panic.c b/firmware/panic.c
index 0e575e0114..9230337ba4 100644
--- a/firmware/panic.c
+++ b/firmware/panic.c
@@ -63,6 +63,7 @@ void panicf( const char *fmt, ...)
63 63
64#if LCD_DEPTH > 1 64#if LCD_DEPTH > 1
65 lcd_set_backdrop(NULL); 65 lcd_set_backdrop(NULL);
66 lcd_set_drawmode(DRMODE_SOLID);
66 lcd_set_foreground(LCD_BLACK); 67 lcd_set_foreground(LCD_BLACK);
67 lcd_set_background(LCD_WHITE); 68 lcd_set_background(LCD_WHITE);
68#endif 69#endif
diff --git a/firmware/target/arm/system-arm.c b/firmware/target/arm/system-arm.c
index 920dbacd10..91d8613bac 100644
--- a/firmware/target/arm/system-arm.c
+++ b/firmware/target/arm/system-arm.c
@@ -36,10 +36,16 @@ static const char* const uiename[] = {
36 */ 36 */
37void __attribute__((noreturn)) UIE(unsigned int pc, unsigned int num) 37void __attribute__((noreturn)) UIE(unsigned int pc, unsigned int num)
38{ 38{
39 lcd_clear_display(); 39#if LCD_DEPTH > 1
40#ifdef HAVE_LCD_BITMAP 40 lcd_set_backdrop(NULL);
41 lcd_set_drawmode(DRMODE_SOLID);
42 lcd_set_foreground(LCD_BLACK);
43 lcd_set_background(LCD_WHITE);
44#endif
41 lcd_setfont(FONT_SYSFIXED); 45 lcd_setfont(FONT_SYSFIXED);
46 lcd_set_viewport(NULL);
42#endif 47#endif
48 lcd_clear_display();
43 lcd_puts(0, 0, uiename[num]); 49 lcd_puts(0, 0, uiename[num]);
44 lcd_putsf(0, 1, "at %08x" IF_COP(" (%d)"), pc 50 lcd_putsf(0, 1, "at %08x" IF_COP(" (%d)"), pc
45 IF_COP(, CURRENT_CORE)); 51 IF_COP(, CURRENT_CORE));
diff --git a/firmware/target/coldfire/system-coldfire.c b/firmware/target/coldfire/system-coldfire.c
index 8ae702fdfc..a387824526 100644
--- a/firmware/target/coldfire/system-coldfire.c
+++ b/firmware/target/coldfire/system-coldfire.c
@@ -167,8 +167,15 @@ static void system_display_exception_info(unsigned long format,
167 int vector = (format >> 18) & 0xff; 167 int vector = (format >> 18) & 0xff;
168 168
169 /* clear screen */ 169 /* clear screen */
170 lcd_clear_display (); 170#if LCD_DEPTH > 1
171 lcd_set_backdrop(NULL);
172 lcd_set_drawmode(DRMODE_SOLID);
173 lcd_set_foreground(LCD_BLACK);
174 lcd_set_background(LCD_WHITE);
175#endif
171 lcd_setfont(FONT_SYSFIXED); 176 lcd_setfont(FONT_SYSFIXED);
177 lcd_set_viewport(NULL);
178 lcd_clear_display();
172 179
173 lcd_putsf(0, 0, "I%02x:%s", vector, irqname[vector]); 180 lcd_putsf(0, 0, "I%02x:%s", vector, irqname[vector]);
174 lcd_putsf(0, 1, "at %08x", pc); 181 lcd_putsf(0, 1, "at %08x", pc);
diff --git a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
index c5f99aba23..68d4759f4d 100644
--- a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
+++ b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
@@ -262,9 +262,17 @@ void exception_handler(void* stack_ptr, unsigned int cause, unsigned int epc)
262 "$1", "LO", "HI", "STATUS", "EPC" }; 262 "$1", "LO", "HI", "STATUS", "EPC" };
263 int i; 263 int i;
264 264
265#ifdef HAVE_LCD_BITMAP
266#if LCD_DEPTH > 1
265 lcd_set_backdrop(NULL); 267 lcd_set_backdrop(NULL);
266 lcd_clear_display(); 268 lcd_set_drawmode(DRMODE_SOLID);
269 lcd_set_foreground(LCD_BLACK);
270 lcd_set_background(LCD_WHITE);
271#endif
267 lcd_setfont(FONT_SYSFIXED); 272 lcd_setfont(FONT_SYSFIXED);
273 lcd_set_viewport(NULL);
274#endif
275 lcd_clear_display();
268 _backlight_on(); 276 _backlight_on();
269 277
270 snprintf(buffer, sizeof(buffer), "0x%08x at 0x%08x", read_c0_badvaddr(), epc); 278 snprintf(buffer, sizeof(buffer), "0x%08x at 0x%08x", read_c0_badvaddr(), epc);
diff --git a/firmware/target/sh/system-sh.c b/firmware/target/sh/system-sh.c
index 24821095e8..e054801b57 100644
--- a/firmware/target/sh/system-sh.c
+++ b/firmware/target/sh/system-sh.c
@@ -299,10 +299,18 @@ void UIE (unsigned int pc) /* Unexpected Interrupt or Exception */
299 asm volatile ("sts\tpr,%0" : "=r"(n)); 299 asm volatile ("sts\tpr,%0" : "=r"(n));
300 300
301 /* clear screen */ 301 /* clear screen */
302 lcd_clear_display();
303#ifdef HAVE_LCD_BITMAP 302#ifdef HAVE_LCD_BITMAP
303#if LCD_DEPTH > 1
304 lcd_set_backdrop(NULL);
305 lcd_set_drawmode(DRMODE_SOLID);
306 lcd_set_foreground(LCD_BLACK);
307 lcd_set_background(LCD_WHITE);
308#endif
304 lcd_setfont(FONT_SYSFIXED); 309 lcd_setfont(FONT_SYSFIXED);
310 lcd_set_viewport(NULL);
305#endif 311#endif
312
313 lcd_clear_display();
306 /* output exception */ 314 /* output exception */
307 n = (n - (unsigned)UIE4 + 12)>>2; /* get exception or interrupt number */ 315 n = (n - (unsigned)UIE4 + 12)>>2; /* get exception or interrupt number */
308 lcd_putsf(0, 0, "I%02x:%s", n, irqname[n]); 316 lcd_putsf(0, 0, "I%02x:%s", n, irqname[n]);