<html>
<body>
  <div id="body" style="background-color:#ffffff;" >
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head" style="border-bottom-width:1px;border-bottom-style:solid;" ><td class="headtd" style="padding:0;padding-top:.2em;" colspan="4">Commit in <b><tt>lxdream</tt></b></td></tr>
<tr><td><tt><a href="#file1">acinclude.m4</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">904fba59a705 -> 407659e01ef0</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file2">configure</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">904fba59a705 -> 407659e01ef0</td></tr>
<tr><td><tt>src/sh4/<a href="#file3">mmu.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">904fba59a705 -> 407659e01ef0</td></tr>
<tr class="alt" style=";" ><td><tt>       /<a href="#file4">sh4x86.in</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">904fba59a705 -> 407659e01ef0</td></tr>
<tr><td><tt>       /<a href="#file5">shadow.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">904fba59a705 -> 407659e01ef0</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+5</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-5</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >5 modified files</small><br />
<pre class="comment" style="white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;padding:4px;border:1px dashed #000000;background-color:#ffffdd;" >
Add volatile qualifier to return-address frobbing - works around optimizer
bug in GCC versions after 4.2
</pre>
<hr /><a name="file1" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>acinclude.m4</b></big> <small id="info" style="color: #888888;" >904fba59a705 -> 407659e01ef0</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/acinclude.m4
+++ lxdream/acinclude.m4
@@ -51,7 +51,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > int __attribute__((noinline)) foo( int arg, void *exc )
 {
     if( arg < 2 ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        *(((void **)__builtin_frame_address(0))+1) = exc;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        *(((void *<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" > volatile </span>*)__builtin_frame_address(0))+1) = exc;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
     return 0;
 }
</pre></div>
<hr /><a name="file2" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>configure</b></big> <small id="info" style="color: #888888;" >904fba59a705 -> 407659e01ef0</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/configure
+++ lxdream/configure
@@ -8203,7 +8203,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > int __attribute__((noinline)) foo( int arg, void *exc )
 {
     if( arg < 2 ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        *(((void **)__builtin_frame_address(0))+1) = exc;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        *(((void *<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" > volatile </span>*)__builtin_frame_address(0))+1) = exc;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
     return 0;
 }
</pre></div>
<hr /><a name="file3" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/sh4</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>mmu.c</b></big> <small id="info" style="color: #888888;" >904fba59a705 -> 407659e01ef0</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/sh4/mmu.c
+++ lxdream/src/sh4/mmu.c
@@ -1199,7 +1199,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 /********************** TLB Direct-Access Regions ***************************/
 #ifdef HAVE_FRAME_ADDRESS
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-#define EXCEPTION_EXIT() do{ *(((void **)__builtin_frame_address(0))+1) = exc; } while(0)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define EXCEPTION_EXIT() do{ *(((void *<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" > volatile </span>*)__builtin_frame_address(0))+1) = exc; } while(0)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #else
 #define EXCEPTION_EXIT() sh4_core_exit(CORE_EXIT_EXCEPTION)
 #endif
</pre></div>
<hr /><a name="file4" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/sh4</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>sh4x86.in</b></big> <small id="info" style="color: #888888;" >904fba59a705 -> 407659e01ef0</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/sh4/sh4x86.in
+++ lxdream/src/sh4/sh4x86.in
@@ -604,7 +604,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     *(void **)(backpatch+5) = XLAT_BLOCK_FOR_CODE(target)->use_list;
     XLAT_BLOCK_FOR_CODE(target)->use_list = backpatch; 
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    uint8_t **retptr = ((uint8_t **)__builtin_frame_address(0))+1;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    uint8_t * volatile *retptr = ((uint8_t * volatile *)__builtin_frame_address(0))+1;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     assert( *retptr == ((uint8_t *)__builtin_return_address(0)) );
        *retptr = backpatch;
 }
</pre></div>
<hr /><a name="file5" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/sh4</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>shadow.c</b></big> <small id="info" style="color: #888888;" >904fba59a705 -> 407659e01ef0</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/sh4/shadow.c
+++ lxdream/src/sh4/shadow.c
@@ -31,7 +31,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #ifdef HAVE_FRAME_ADDRESS
 static FASTCALL __attribute__((noinline)) void *__first_arg(void *a, void *b) { return a; }
 #define INIT_EXCEPTIONS(label) goto *__first_arg(&&fnstart,&&label); fnstart:
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-#define EXCEPTION_EXIT(exc) do{ *(((void **)__builtin_frame_address(0))+1) = exc; } while(0)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define EXCEPTION_EXIT(exc) do{ *(((void *<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" > volatile </span>*)__builtin_frame_address(0))+1) = exc; } while(0)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #else
 #define INIT_EXCEPTIONS(label)
 #define EXCEPTION_EXIT() sh4_core_exit(CORE_EXIT_EXCEPTION)
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>