From 0846e98f0d40365fe04f5b990792bfd674b8d71b Mon Sep 17 00:00:00 2001
From: Terraneo Federico <fede.tft@hotmail.it>
Date: Tue, 17 Apr 2012 16:05:09 +0200
Subject: [PATCH] Fixed fault handlers

---
 main.cpp                        | 17 +++++------------
 miosix/config/Makefile.inc      |  4 ++--
 miosix/config/miosix_settings.h |  2 +-
 miosix/kernel/kernel.cpp        |  1 +
 4 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/main.cpp b/main.cpp
index 74a32a07..1db1b55a 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,8 +7,12 @@
 using namespace std;
 using namespace miosix;
 
-void ledThread(void *)
+int main()
 {
+    getchar();
+    
+    ElfProgram prog(reinterpret_cast<const unsigned int*>(main_elf),main_elf_len);
+    Process::create(prog);
     for(;;)
     {
         ledOn();
@@ -17,14 +21,3 @@ void ledThread(void *)
         Thread::sleep(200);
     }
 }
-
-int main()
-{
-    Thread::create(ledThread,STACK_MIN);
-    
-    getchar();
-    
-    ElfProgram prog(reinterpret_cast<const unsigned int*>(main_elf),main_elf_len);
-    Process::create(prog);
-    for(;;) Thread::sleep(1000);
-}
diff --git a/miosix/config/Makefile.inc b/miosix/config/Makefile.inc
index 4fdf4fdc..ef5b472f 100644
--- a/miosix/config/Makefile.inc
+++ b/miosix/config/Makefile.inc
@@ -27,8 +27,8 @@ OPT_BOARD := stm32f207ig_stm3220g-eval
 ## -O2 is recomended otherwise, as it provides a good balance between code
 ## size and speed
 ##
-#OPT_OPTIMIZATION := -O0
-OPT_OPTIMIZATION := -O2
+OPT_OPTIMIZATION := -O0
+#OPT_OPTIMIZATION := -O2
 #OPT_OPTIMIZATION := -O3
 #OPT_OPTIMIZATION := -Os
 
diff --git a/miosix/config/miosix_settings.h b/miosix/config/miosix_settings.h
index 42a80ac7..655c5310 100644
--- a/miosix/config/miosix_settings.h
+++ b/miosix/config/miosix_settings.h
@@ -130,7 +130,7 @@ const unsigned char MAX_OPEN_FILES=8;
  * mode, so to use debugging it is necessary to disble sleep in the idle thread.
  * By default it is not defined (idle thread calls sleep).
  */
-//#define JTAG_DISABLE_SLEEP
+#define JTAG_DISABLE_SLEEP
 
 /// Minimum stack size (MUST be divisible by 4)
 const unsigned int STACK_MIN=256;
diff --git a/miosix/kernel/kernel.cpp b/miosix/kernel/kernel.cpp
index 38efdd53..965d7980 100644
--- a/miosix/kernel/kernel.cpp
+++ b/miosix/kernel/kernel.cpp
@@ -616,6 +616,7 @@ bool Thread::IRQreportFault(const miosix_private::FaultData& fault)
         return false;
     cur->proc->fault=fault;
     const_cast<Thread*>(cur)->flags.IRQsetUserspace(false);
+    ::ctxsave=cur->ctxsave;
     return true;
 }
 
-- 
GitLab