summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2003-06-29 15:09:01 +0000
committerBjörn Stenberg <bjorn@haxx.se>2003-06-29 15:09:01 +0000
commit9bcbe3fd723d23a709873a0855f27b86bc5c96f1 (patch)
tree480b63814f0f6571b8dcdf81578a9ea8399e19fe
parent0dcc4a6fb95b4d567425ebeaabc9b6abfa0c754d (diff)
downloadrockbox-9bcbe3fd723d23a709873a0855f27b86bc5c96f1.tar.gz
rockbox-9bcbe3fd723d23a709873a0855f27b86bc5c96f1.zip
Added restart option to system exception screen (press ON)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3768 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/system.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/firmware/system.c b/firmware/system.c
index 3f75e020c1..1d5bb21ff6 100644
--- a/firmware/system.c
+++ b/firmware/system.c
@@ -23,6 +23,7 @@
23#include "font.h" 23#include "font.h"
24#include "led.h" 24#include "led.h"
25#include "system.h" 25#include "system.h"
26#include "rolo.h"
26 27
27#define default_interrupt(name,number) \ 28#define default_interrupt(name,number) \
28 extern __attribute__((weak,alias("UIE" #number))) void name (void); void UIE##number (void) 29 extern __attribute__((weak,alias("UIE" #number))) void name (void); void UIE##number (void)
@@ -323,7 +324,7 @@ void UIE (unsigned int pc) /* Unexpected Interrupt or Exception */
323 char str[32]; 324 char str[32];
324 325
325 asm volatile ("sts\tpr,%0" : "=r"(n)); 326 asm volatile ("sts\tpr,%0" : "=r"(n));
326 327
327 /* clear screen */ 328 /* clear screen */
328 lcd_clear_display (); 329 lcd_clear_display ();
329#ifdef HAVE_LCD_BITMAP 330#ifdef HAVE_LCD_BITMAP
@@ -347,6 +348,15 @@ void UIE (unsigned int pc) /* Unexpected Interrupt or Exception */
347 state = state?false:true; 348 state = state?false:true;
348 349
349 for (i = 0; i < 240000; ++i); 350 for (i = 0; i < 240000; ++i);
351
352 /* try to restart firmware if ON is pressed */
353#ifdef HAVE_LCD_CHARCELLS
354 if (!(PADR & 0x20))
355 rolo_load("/archos.mod");
356#else
357 if (!(PBDR & PBDR_BTN_ON))
358 rolo_load("/ajbrec.ajz");
359#endif
350 } 360 }
351} 361}
352 362