<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/src</tt></b></td></tr>
<tr><td><tt>sh4/<a href="#file1">sh4trans.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+2</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-2</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">ee6ce5804608 -> 072131b61d2a</td></tr>
<tr class="alt" style=";" ><td><tt>test/<a href="#file2">testxlt.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+3</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-3</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">ee6ce5804608 -> 072131b61d2a</td></tr>
<tr><td><tt>xlat/<a href="#file3">xltcache.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+55</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-34</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">ee6ce5804608 -> 072131b61d2a</td></tr>
<tr class="alt" style=";" ><td><tt>    /<a href="#file4">xltcache.h</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+4</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-2</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">ee6ce5804608 -> 072131b61d2a</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+64</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-41</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >4 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;" >
Handle branch delay-slot instruction that falls on the next page correctly.
 - Generate the right end PC in the first place (sh4trans.c)
 - Allow blocks to be marked as both entry point + continuation, and
   specifically handle invalidation when first entry of a page is a continuation ==
   flush previous page as well.
</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/src/sh4</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>sh4trans.c</b></big> <small id="info" style="color: #888888;" >ee6ce5804608 -> 072131b61d2a</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/sh4/sh4trans.c
+++ lxdream/src/sh4/sh4trans.c
@@ -112,7 +112,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         done = sh4_translate_instruction( pc ); 
         assert( xlat_output <= eob );
         pc += 2;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        if ( pc >= lastpc ) {
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        if ( pc >= lastpc <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >&& done == 0 </span>) {
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             done = 2;
         }
 #ifdef SINGLESTEP
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -140,7 +140,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     xlat_current_block->recover_table_offset = xlat_output - (uint8_t *)xlat_current_block->code;
     xlat_current_block->recover_table_size = xlat_recovery_posn;
     xlat_current_block->xlat_sh4_mode = sh4r.xlat_sh4_mode;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    xlat_commit_block( finalsize, <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pc-start</span> );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    xlat_commit_block( finalsize, <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >start, pc</span> );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     return xlat_current_block->code;
 }
 
</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/src/test</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>testxlt.c</b></big> <small id="info" style="color: #888888;" >ee6ce5804608 -> 072131b61d2a</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/test/testxlt.c
+++ lxdream/src/test/testxlt.c
@@ -37,7 +37,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     assert( block->active == 1 );
     assert( block->size == XLAT_NEW_CACHE_SIZE - (2*sizeof(struct xlat_cache_block)) );
     memset( block->code, 0xB5, 8192 );
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    xlat_commit_block( 8192, 100 );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    xlat_commit_block( 8192, 0x0C008000, 0x0C008100 );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     assert( block->active == 1 );
     assert( block->size == 8192 );
     
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -46,7 +46,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     assert( block2->active == 1 );
     assert( block2->size == XLAT_NEW_CACHE_SIZE - (3*sizeof(struct xlat_cache_block)) - 8192 );
     memset( block2->code, 0x6D, size );
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    xlat_commit_block( size, 200 );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    xlat_commit_block( size, 0x0C009000, 0x0C009200 );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     assert( block2->active == 1 );
     assert( block2->size == size );
     
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -74,7 +74,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     for( i=4096; i<8192; i++ ) {
        assert( block3a->code[i] == 0xB5 );
     }
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    xlat_commit_block(6142, 432);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    xlat_commit_block(6142, 0x0D009800, 0x0D009C32);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     addr = xlat_get_code( 0x0D009800 );
     assert( addr == &block3a->code );
 }
</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/xlat</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>xltcache.c</b></big> <small id="info" style="color: #888888;" >ee6ce5804608 -> 072131b61d2a</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/xlat/xltcache.c
+++ lxdream/src/xlat/xltcache.c
@@ -43,6 +43,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define NEXT(block) ( (xlat_cache_block_t)&((block)->code[(block)->size]))
 #define IS_ENTRY_POINT(ent) (ent > XLAT_LUT_ENTRY_USED)
 #define IS_ENTRY_USED(ent) (ent != XLAT_LUT_ENTRY_EMPTY)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define IS_ENTRY_CONTINUATION(ent) (((uintptr_t)ent) & ((uintptr_t)XLAT_LUT_ENTRY_USED))
+#define IS_FIRST_ENTRY_IN_PAGE(addr) (((addr)&0x1FFE) == 0)
+#define XLAT_CODE_ADDR(ent) ((void *)(((uintptr_t)ent) & (~((uintptr_t)0x03))))
+#define XLAT_BLOCK_FOR_LUT_ENTRY(ent) XLAT_BLOCK_FOR_CODE(XLAT_CODE_ADDR(ent))
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 #define MIN_BLOCK_SIZE 32
 #define MIN_TOTAL_SIZE (sizeof(struct xlat_cache_block)+MIN_BLOCK_SIZE)
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -134,7 +139,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     int i;
     for( i=0; i<XLAT_LUT_PAGE_ENTRIES; i++ ) {
         if( IS_ENTRY_POINT(page[i]) ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-            void *p = page[i];
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+            void *p = XLAT_CODE_ADDR(page[i]);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             do {
                 xlat_cache_block_t block = XLAT_BLOCK_FOR_CODE(p);
                 xlat_delete_block(block);
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -150,6 +155,10 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     void **page = xlat_lut[XLAT_LUT_PAGE(addr)];
     if( page != NULL ) {
         int entry = XLAT_LUT_ENTRY(addr);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        if( entry == 0 && IS_ENTRY_CONTINUATION(page[entry]) ) {
+            /* First entry may be a delay-slot for the previous page */
+            xlat_flush_page_by_lut(xlat_lut[XLAT_LUT_PAGE(addr-2)]);
+        }
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         if( page[entry] != NULL ) {
             xlat_flush_page_by_lut(page);
         }
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -161,6 +170,10 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     void **page = xlat_lut[XLAT_LUT_PAGE(addr)];
     if( page != NULL ) {
         int entry = XLAT_LUT_ENTRY(addr);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        if( entry == 0 && IS_ENTRY_CONTINUATION(page[entry]) ) {
+            /* First entry may be a delay-slot for the previous page */
+            xlat_flush_page_by_lut(xlat_lut[XLAT_LUT_PAGE(addr-2)]);
+        }
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         if( *(uint64_t *)&page[entry] != 0 ) {
             xlat_flush_page_by_lut(page);
         }
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -173,6 +186,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     int entry_count = size >> 1; // words;
     uint32_t page_no = XLAT_LUT_PAGE(address);
     int entry = XLAT_LUT_ENTRY(address);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+
+    if( entry == 0 && xlat_lut[page_no] != NULL && IS_ENTRY_CONTINUATION(xlat_lut[page_no][entry])) {
+        /* First entry may be a delay-slot for the previous page */
+        xlat_flush_page_by_lut(xlat_lut[XLAT_LUT_PAGE(address-2)]);
+    }
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     do {
         void **page = xlat_lut[page_no];
         int page_entries = XLAT_LUT_PAGE_ENTRIES - entry;
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -212,7 +230,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     void *result = NULL;
     void **page = xlat_lut[XLAT_LUT_PAGE(address)];
     if( page != NULL ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        result = (void *)(((uintptr_t)(page[XLAT_LUT_ENTRY(address)])) & (~((uintptr_t)0x03)));
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        result = XLAT_CODE_ADDR(page[XLAT_LUT_ENTRY(address)]);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
     return result;
 }
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -235,18 +253,24 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     return NULL;     
 }
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-void ** FASTCALL xlat_get_lut_entry( sh4addr_t address )
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static void **xlat_get_lut_page( sh4addr_t address )
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
     void **page = xlat_lut[XLAT_LUT_PAGE(address)];
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    /* Add the LUT entry for the block */
-    if( page == NULL ) {
-        xlat_lut[XLAT_LUT_PAGE(address)] = page =
-            (void **)mmap( NULL, XLAT_LUT_PAGE_SIZE, PROT_READ|PROT_WRITE,
-                    MAP_PRIVATE|MAP_ANON, -1, 0 );
-        memset( page, 0, XLAT_LUT_PAGE_SIZE );
-    }
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     /* Add the LUT entry for the block */
+     if( page == NULL ) {
+         xlat_lut[XLAT_LUT_PAGE(address)] = page =
+             (void **)mmap( NULL, XLAT_LUT_PAGE_SIZE, PROT_READ|PROT_WRITE,
+                     MAP_PRIVATE|MAP_ANON, -1, 0 );
+         memset( page, 0, XLAT_LUT_PAGE_SIZE );
+     }
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     return page;
+}
+
+void ** FASTCALL xlat_get_lut_entry( sh4addr_t address )
+{
+    void **page = xlat_get_lut_page(address);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     return &page[XLAT_LUT_ENTRY(address)];
 }
 
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -408,26 +432,22 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     xlat_new_cache_ptr = NEXT(xlat_new_cache_ptr);
 
     /* Add the LUT entry for the block */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    if( xlat_lut[XLAT_LUT_PAGE(address)] == NULL ) {
-        xlat_lut[XLAT_LUT_PAGE(address)] =
-            (void **)mmap( NULL, XLAT_LUT_PAGE_SIZE, PROT_READ|PROT_WRITE,
-                    MAP_PRIVATE|MAP_ANON, -1, 0 );
-        memset( xlat_lut[XLAT_LUT_PAGE(address)], 0, XLAT_LUT_PAGE_SIZE );
-    }
-
-    if( IS_ENTRY_POINT(xlat_lut[XLAT_LUT_PAGE(address)][XLAT_LUT_ENTRY(address)]) ) {
-        void *p = xlat_lut[XLAT_LUT_PAGE(address)][XLAT_LUT_ENTRY(address)];
-        xlat_cache_block_t oldblock = XLAT_BLOCK_FOR_CODE(p);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    void **p = xlat_get_lut_entry(address);
+    void *entry = *p;
+    if( IS_ENTRY_POINT(entry) ) {
+        xlat_cache_block_t oldblock = XLAT_BLOCK_FOR_LUT_ENTRY(entry);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         assert( oldblock->active );
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        xlat_new_create_ptr->chain = p;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        xlat_new_create_ptr->chain = XLAT_CODE_ADDR(entry);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     } else {
         xlat_new_create_ptr->chain = NULL;
     }
     xlat_new_create_ptr->use_list = NULL;
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    xlat_lut[XLAT_LUT_PAGE(address)][XLAT_LUT_ENTRY(address)] = 
-        &xlat_new_create_ptr->code;
-    xlat_new_create_ptr->lut_entry = xlat_lut[XLAT_LUT_PAGE(address)] + XLAT_LUT_ENTRY(address);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    *p = &xlat_new_create_ptr->code;
+    if( IS_ENTRY_CONTINUATION(entry) ) {
+        *((uintptr_t *)p) |= (uintptr_t)XLAT_LUT_ENTRY_USED;
+    }
+    xlat_new_create_ptr->lut_entry = p;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
     return xlat_new_create_ptr;
 }
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -473,15 +493,16 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 }
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-void xlat_commit_block( uint32_t destsize, uint32_t srcsize )
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+void xlat_commit_block( uint32_t destsize, sh4addr_t startpc, sh4addr_t endpc )
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    void **ptr = xlat_new_create_ptr->lut_entry;
-    void **endptr = ptr + (srcsize>>1);
-    while( ptr < endptr ) {
-        if( *ptr == NULL ) {
-            *ptr = XLAT_LUT_ENTRY_USED;
-        }
-        ptr++;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    void **entry = xlat_get_lut_entry(startpc+2);
+    /* assume main entry has already been set at this point */
+
+    for( sh4addr_t pc = startpc+2; pc < endpc; pc += 2 ) {
+        if( XLAT_LUT_ENTRY(pc) == 0 )
+            entry = xlat_get_lut_entry(pc);
+        *((uintptr_t *)entry) |= (uintptr_t)XLAT_LUT_ENTRY_USED;
+        entry++;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
 
     xlat_new_cache_ptr = xlat_cut_block( xlat_new_create_ptr, destsize );
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -524,7 +545,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             for( j=0; j<XLAT_LUT_PAGE_ENTRIES; j++ ) {
                 void *entry = page[j];
                 if( ((uintptr_t)entry) > (uintptr_t)XLAT_LUT_ENTRY_USED ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-                    xlat_cache_block_t block = XLAT_BLOCK_FOR_<span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >CODE</span>(entry);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+                    xlat_cache_block_t block = XLAT_BLOCK_FOR_<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >LUT_ENTRY</span>(entry);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                     if( ptr >= block->code && ptr < block->code + block->size) {
                         /* Found it */
                         return (i<<13) | (j<<1);
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -620,7 +641,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         void **page = xlat_lut[i];
         if( page != NULL ) {
             for( unsigned j=0; j < XLAT_LUT_PAGE_ENTRIES; j++ ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-                void *code = (void *)(((uintptr_t)(page[j])) & (~((uintptr_t)0x03)));
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+                void *code = XLAT_CODE_ADDR(page[j]);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                 if( code != NULL ) {
                     xlat_cache_block_t ptr = XLAT_BLOCK_FOR_CODE(code);
                     sh4addr_t pc = XLAT_ADDR_FROM_ENTRY(i,j);
</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/xlat</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>xltcache.h</b></big> <small id="info" style="color: #888888;" >ee6ce5804608 -> 072131b61d2a</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/xlat/xltcache.h
+++ lxdream/src/xlat/xltcache.h
@@ -78,9 +78,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /**
  * Commit the current translation block
  * @param destsize final size of the translation in bytes.
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- * @param srcsize size of the original data that was translated in bytes
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ * @param startpc PC at the start of the translation block.
+ * @param endpc PC at the end of the translation block (i.e. the address of the
+ *  next instruction after the block).
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-void xlat_commit_block( uint32_t destsize, uint32_t srcsize );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+void xlat_commit_block( uint32_t destsize, sh4addr_t startpc, sh4addr_t endpc );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 /**
  * Dump the disassembly of the specified code block to a stream
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>