<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:Arial;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>All<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>I am currently using RTEMS 4.8.1 running on a LEON2
processor. I am currently trying to implement a robust mechanism that allows
the system I am developing to fail gracefully on error conditions, namely those
associated with Traps. So far I have been able to successfully register trap
handlers via RTEMS for Single EDAC Corrections and Memory Unaligned Errors.
These have been registered via RTEMS using the code below and appear to work
reliably and robustly:<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>//MEMORY:
Address Not Aligned<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>set_vector((rtems_isr_entry)
traphandler_0x07, SPARC_SYNCHRONOUS_TRAP(trap),
1);            
           
//SYNCHRONOUS -> Trap<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>//EDAC: Single
Correctable [AMBA Interrupt]<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>set_vector((rtems_isr_entry)
traphandler_0x11, SPARC_ASYNCHRONOUS_TRAP(trap),
1);                     
// ASYNCHRONOUS -> Interrupt<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>LEON_Unmask_interrupt(1);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>With regard to Double EDAC Errors, I have as yet to
find a way of getting the trap handler to work reliably. Again the handler for
this trap was registered via RTEMS using the same technique:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>           
//DATA: Access Exception (DOUBLE EDAC or BUSEX)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>           
set_vector((rtems_isr_entry)traphandler_0x09, SPARC_SYNCHRONOUS_TRAP(trap), 1);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>Within a single TASK system, I can get the above
handler to trigger and work reliably, however as soon as implement the trap
handler within a more complex system with multiple tasks, I get the following
error via GRMON:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>           
Cannot continue, processor not in debug mode<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>watchpoint
0  __end + 0xe018 (0x401cfb50)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>The other situation I wish to be able to deal with is
a Bus Exception, which again is supposed to trigger Traps 0x01, 0x09 or 0x2B.
For the LEON2 a bus exception is triggered via an input to the processor and is
generated by some external hardware I have developed. The Bus Exception is
triggered on an illegal register address access. Again these have been
registered via RTEMS using the code below:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>//INSTRUCTION:
Access Exception (EDAC/ BUSEX)<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>set_vector((rtems_isr_entry)
traphandler_0x01, SPARC_SYNCHRONOUS_TRAP(trap), 1);<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>//DATA: Store
Exception (BUSEX)<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>set_vector((rtems_isr_entry)
traphandler_0x2B, SPARC_SYNCHRONOUS_TRAP(trap), 1);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>Everything I have tried with regard to the Bus
Exception results in the following error via GRMON:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>Cannot
continue, processor not in debug mode<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span lang=EN-GB style='font-size:12.0pt'>watchpoint
0  __end + 0x1727e0 (0x40334818)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>Any help would be most appreciated.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>Kind regards<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-GB
style='font-size:12.0pt'>           
Jamie<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
lang=EN-GB style='font-size:12.0pt;color:navy'><o:p> </o:p></span></font></p>

</div>

</body>

</html>