<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
<channel>
    <title>green at spindazzle dot org</title>
    <link>http://spindazzle.org/greenblog/</link>
    <description>Notes from Anthony Green</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.0 - http://www.s9y.org/</generator>
    <pubDate>Thu, 21 Jan 2010 19:12:18 GMT</pubDate>

    <image>
        <url>http://spindazzle.org/greenblog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: green at spindazzle dot org - Notes from Anthony Green</title>
        <link>http://spindazzle.org/greenblog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Whassup</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/129-Whassup.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/129-Whassup.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=129</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=129</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    It&#039;s been a while, so here are some updates from me:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceware.org/libffi&quot;&gt;libffi&lt;/a&gt; 3.0.9 left the building on Dec 31.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;I continue to toy around with my lisp-based web app framework for Java servlet containers, &lt;a href=&quot;http://spindazzle.org/blow&quot;&gt;blow&lt;/a&gt;.  I&#039;m hoping to get it running on Google App Engine soon.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;http://moxielogic.org/blog&quot;&gt;moxie&lt;/a&gt; development continues, although I haven&#039;t blogged about it in a really long time.  What&#039;s exciting is that I&#039;m very close to a major milestone in the development of my libre core.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
I also just came across Peter Micheaux&#039;s &lt;a href=&quot;http://peter.michaux.ca/articles/scheme-from-scratch-introduction&quot;&gt;Scheme From Scratch&lt;/a&gt; project - a blow by blow blog series on the development of a scheme implementation from scratch - kind of like what I did with ggx/moxie in the early days.  If you&#039;re into lisp or scheme, or are just curious, then I think you&#039;ll enjoy the series.&lt;br /&gt;
&lt;br /&gt;
And, finally, I upgraded my laptop to f12 a few weeks ago.  Best Fedora Yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 21 Jan 2010 14:12:18 -0500</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/129-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Moxie uClinux getting close.</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/128-Moxie-uClinux-getting-close..html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/128-Moxie-uClinux-getting-close..html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=128</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=128</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    Time to plug my FOSS project to a wider audience again!  I&#039;m developing a Free embedded microprocessor called Moxie suitable for implementation in FPGA devices.**&lt;br /&gt;
&lt;br /&gt;
The moxie uClinux port is coming along nicely, and I&#039;m getting really close to running userland apps.  &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://moxielogic.org/blog&quot;&gt;Click here&lt;/a&gt; to read the development blog.&lt;br /&gt;
&lt;br /&gt;
That is all!&lt;br /&gt;
&lt;br /&gt;
**I&#039;m developing on Fedora with Java-based tools, so I hope my Fedora and Classpath Planet compadres will forgive me for these periodic intrusions. :-)&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 30 Jul 2009 14:52:54 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/128-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Fedora 11, OpenJDK, OpenSolaris, Moxie</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/127-Fedora-11,-OpenJDK,-OpenSolaris,-Moxie.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/127-Fedora-11,-OpenJDK,-OpenSolaris,-Moxie.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=127</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=127</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    Some notes:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Congratulations to the Fedora team for &lt;a href=&quot;http://fedoraproject.org/wiki/Releases/11/FeatureList&quot; &gt;another great Fedora release&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Congratulations also go out to my friend Andrew Haley for being selected to &lt;a href=&quot;http://mail.openjdk.java.net/pipermail/announce/2009-June/000079.html&quot; &gt;join the OpenJDK Interim Governance Board&lt;/a&gt;.  From a GCJ/GNU Classpath perspective, this certainly feels like a &quot;Mission Accomplished&quot; moment (in the non-ironic sense).&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Did you know that OpenSolaris has been &lt;a href=&quot;http://opensolaris.org/os/project/osarm/&quot; &gt;ported to an ARM processor&lt;/a&gt;?  That&#039;s certainly a surprise.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;In other embedded news... my own Free Software embedded processor project (&lt;a href=&quot;http://www.moxielogic.org/blog&quot; &gt;Moxie&lt;/a&gt;) is chugging along.  As of this week the GNU toolchain port is now merged into the upstream FSF repositories.  The project blog is here: &lt;a href=&quot;http://www.moxielogic.org/blog&quot;&gt;http://moxielogic.org/blog&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 11 Jun 2009 07:42:51 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/127-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Fedora and Moxie</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/126-Fedora-and-Moxie.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/126-Fedora-and-Moxie.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=126</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=126</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    I&#039;ve been a falling a little behind on my Fedora packages, so thanks to everybody who is either being patient with me or picking up the slack.   I&#039;d be happy to have more co-maintainers, or to hand off any of the following to motivated packagers: zynaddsubfx, whysynth-dssi, vkeybd, seq24, phasex, liblo, lash, ladspa-swh-plugins, hexter-dssi, fluidsynth-dssi, fluidsynth, dssi, and aubio.&lt;br /&gt;
&lt;br /&gt;
My microprocessor, &lt;a href=&quot;http://moxielogic.org/wiki&quot;&gt;moxie&lt;/a&gt;, is coming along nicely.  I have &lt;a href=&quot;http://www.denx.de/wiki/U-Boot&quot; &gt;U-Boot&lt;/a&gt; running on the qemu port, which I find amazingly cool.  Please read all about it on the &lt;a href=&quot;http://moxielogic.org/blog&quot;&gt;moxie blog&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
That is all!&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 02 Apr 2009 21:50:21 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/126-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Moving ggx blogging.  And now it's called &quot;moxie&quot;</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/125-Moving-ggx-blogging.-And-now-its-called-moxie.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/125-Moving-ggx-blogging.-And-now-its-called-moxie.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=125</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    A couple of quick notes...&lt;br /&gt;
&lt;br /&gt;
* I&#039;ve upgraded the &quot;ggx&quot; name to &quot;moxie&quot;.  moxie-elf-gcc is more fun to type!&lt;br /&gt;
&lt;br /&gt;
* All blogging about this project has moved to a new blog here &lt;a href=&quot;http://moxielogic.org/blog&quot;&gt;http://moxielogic.org/blog&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you&#039;re curious enough to follow this effort, please &lt;a href=&quot;http://moxielogic.org/blog/?feed=rss2&quot;&gt;subscribe to the new blog&lt;/a&gt;, because it won&#039;t really be showing up on Planet Classpath or Fedora People anymore.&lt;br /&gt;
&lt;br /&gt;
The moxie qemu port is working decently now, complete with UART simulation.   Read all about it &lt;a href=&quot;http://moxielogic.org/blog&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sat, 07 Mar 2009 06:24:50 -0500</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/125-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>ggx update</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/124-ggx-update.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/124-ggx-update.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=124</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=124</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    I&#039;m back at it after a very long break.  The &lt;a href=&quot;http://bellard.org/qemu/&quot; &gt;qemu&lt;/a&gt; port was working well enough off the 0.9.1 branch, so I started looking at the qemu trunk and, wow,  things have changed.  The dynamic translator is now using Bellard&#039;s &lt;a href=&quot;http://bellard.org/tcc/&quot; &gt;Tiny C Compiler&lt;/a&gt; backend. This should be a nice improvement over the code template system used in 0.9.1, but it means recoding the translator.   &lt;br /&gt;
&lt;br /&gt;
I&#039;ve got the qemu build hooked into the &lt;a href=&quot;http://mercurial.intuxication.org/hg/ggxdev&quot; &gt;ggxdev repository&lt;/a&gt; now, and will check it in once it starts simulating code again.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 09 Feb 2009 15:05:34 -0500</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/124-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>qemu-ggx-softmmu starts crawling</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/123-qemu-ggx-softmmu-starts-crawling.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/123-qemu-ggx-softmmu-starts-crawling.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=123</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=123</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    I&#039;m at the point with the ggx linux kernel bring-up that running it on something more than the gdb simulator seems like a good idea.  The basic sim I&#039;ve implemented is nice for running user-land style programs with limited IO requirements, but the kernel expects a lot more h/w to be in play.  &lt;a href=&quot;http://bellard.org/qemu/&quot;&gt;qemu&lt;/a&gt; is a popular system-level simulator that does JIT code translation, and it seems to be the natural choice (vs &lt;a href=&quot;http://sourceware.org/sid&quot;&gt;SID&lt;/a&gt;, for instance, which is nice technology but doesn&#039;t have qemu&#039;s community momentum).&lt;br /&gt;
&lt;br /&gt;
I&#039;ve recently been grumbling about the poor state of kernel documentation relative to what we get with the GNU tools.  Well, qemu is in a whole different league.  There&#039;s very little to go on other than ports to a handful of architectures, but even then there&#039;s a lot of variability in how those are implemented.  Still, after lots of trial and error, I was just able to execute my first basic block of jitted ggx code:&lt;br /&gt;
&lt;br /&gt;
_start:&lt;br /&gt;
    ldi.l   $sp, 0x200000&lt;br /&gt;
    ldi.l   $fp, 0x0&lt;br /&gt;
    jsra    0x1074&lt;br /&gt;
&lt;br /&gt;
This is the start of a basic program.  We&#039;re simply setting the stack and frame pointers and jumping to a routine.   Those three ggx instructions currently blow out into 15 qemu instructions that look something like this:&lt;br /&gt;
&lt;br /&gt;
0x0000: movl_T0_im 0x200000&lt;br /&gt;
0x0001: movl_r1_T0&lt;br /&gt;
0x0002: movl_T0_im 0x0&lt;br /&gt;
0x0003: movl_r0_T0&lt;br /&gt;
0x0004: movl_T0_im 0x1074&lt;br /&gt;
0x0005: movl_r1_T0&lt;br /&gt;
0x0006: subl_T0_im 0x4&lt;br /&gt;
0x0007: subl_T0_im 0x4&lt;br /&gt;
0x0008: movl_T1_im 0x1094&lt;br /&gt;
0x0009: stl_T0_T1_kernel&lt;br /&gt;
0x000a: subl_T0_im 0x4&lt;br /&gt;
0x000b: movl_r0_T1&lt;br /&gt;
0x000c: stl_T0_T1_kernel&lt;br /&gt;
0x000d: movl_T0_r0&lt;br /&gt;
0x000e: movl_T0_r1&lt;br /&gt;
&lt;br /&gt;
ggx&#039;s jsra instruction accounts for most of that, as it has to allocate stack space and stash the current stack pointer, frame pointer and return address.&lt;br /&gt;
&lt;br /&gt;
qemu then expands these 15 intermediate instructions into 150 x86 instructions, which appear to execute cleanly.  I still have a lot to learn and implement, but it doesn&#039;t seem impossible now.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 31 Oct 2008 09:13:38 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/123-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>ggx: more offset addressing</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/122-ggx-more-offset-addressing.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/122-ggx-more-offset-addressing.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=122</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=122</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    The MiBench consumer_jpeg_d benchmark is 30% faster now that I&#039;ve added 8- and 16-bit loads and stores with offset addressing.  So, for instance,...&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
  ldo.b $r1, 0x8($r2)&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
....loads the byte at $r2+0x8 into $r1.  Every benchmark is smaller and faster, but consumer_jpeg_d wins the most.  The &lt;a href=&quot;http://mercurial.intuxication.org/hg/ggxdev/rev/3f5953419657&quot;&gt;patch&lt;/a&gt; is pretty straight forward.&lt;br /&gt;
&lt;br /&gt;
I&#039;m using the &quot;0x8($r2)&quot; syntax because it&#039;s a convention I&#039;m familiar with.  But maybe &quot;ldo.b $r1, $r2+0x8&quot; is easier to read.  Should I buck convention?&lt;br /&gt;
&lt;br /&gt;
I haven&#039;t had any time to work on the kernel bring-up recently. It&#039;s getting botched while shutting down the bootmem allocator.  Anybody interested in having a look would be very much &lt;a href=&quot;mailto:green@spindazzle.org&quot;&gt;appreciated&lt;/a&gt;... 
    </content:encoded>

    <pubDate>Fri, 03 Oct 2008 15:22:53 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/122-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Thank you, SGI.</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/121-Thank-you,-SGI..html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/121-Thank-you,-SGI..html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=121</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=121</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    &lt;a href=&quot;http://www.sgi.com&quot;&gt;SGI&lt;/a&gt; has &lt;a href=&quot;http://www.sgi.com/company_info/newsroom/press_releases/2008/september/opengl.html&quot;&gt;fixed the SGI Free Software License B&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I pulled my &lt;a href=&quot;https://jogl.dev.java.net/&quot;&gt;jogl&lt;/a&gt; package out of Fedora once I clued into the fact that the SGI Free Software License B wasn&#039;t actually a Free Software license.   I don&#039;t know what this means for jogl now that SGI has gone and fixed things, but I hope that somebody has the time and inclination to figure this out and resubmit jogl.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 19 Sep 2008 10:59:25 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/121-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>ggx: new instructions and porting the Linux kernel</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/120-ggx-new-instructions-and-porting-the-Linux-kernel.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/120-ggx-new-instructions-and-porting-the-Linux-kernel.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=120</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=120</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    The &lt;a href=&quot;http://mercurial.intuxication.org/hg/ggxdev&quot;&gt;ggxdev&lt;/a&gt; MiBench harness is working pretty well now (&quot;ant benchmark&quot; will run them).  I added my first new instructions based on benchmark results: inc and dec.  Prior to inc and dec, you would often see code like this:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
  ldi.l   $r1, 1 &lt;br /&gt;
  add.l $r0, $r1 # add 1 to $r0, and save result in $r0&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
This is a 8 byte sequence.  We can drop that down to a single 2 byte instruction with the new &quot;inc&quot;rement instruction, which looks like this:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
  inc  $r0, 1&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
It&#039;s encoded with a new 16-bit format that includes a single register operand and an unsigned 8-bit immediate value.  Similarly, the dec instruction decrements a register by an 8-bit value.  Teaching the compiler to use inc and dec was pretty easy.   The MiBench results are now 8% smaller and 7% faster. &lt;br /&gt;
&lt;br /&gt;
With the GCC test results &lt;a href=&quot;http://groups.google.com/group/ggxdev-testresults/browse_thread/thread/e7ab7efd8fc9a25c&quot;&gt;looking good&lt;/a&gt; and GDB stumbling along better than before, now is the time to port the Linux kernel...&lt;br /&gt;
&lt;br /&gt;
I started with the &lt;a href=&quot;http://en.wikipedia.org/wiki/FR-V&quot;&gt;FR-V&lt;/a&gt; linux port because it has a uClinux implementation, and I have a passing familiarity with both the architecture and the kernel maintainer (hi David!).   My basic strategy was to copy all of the FR-V bits over to new ggx directories, then hack and slash until it links.  Anything I didn&#039;t understand I simply replaced with a stub that loops forever.  This gets you to something that links very quickly, but doesn&#039;t boot very far.  Then you simply fire up the kernel in gdb and tackle each hang until it starts to crawl.  I also had to implement a Linux console that would talk to my simulator via the swi instruction, just as I had &lt;a href=&quot;http://spindazzle.org/greenblog/index.php?/archives/107-ggx-Hello-World!.html&quot;&gt;done in libgloss&lt;/a&gt;.  This gives me IO to the gdb/sim console.  So now....&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ ggx-elf-run vmlinux&lt;br /&gt;
Linux version 2.6.26 (green@spindazzle.org) (gcc version 4.4.0 20080827 (experimental) (GCC) ) #65 Wed Sep 10 06:02:38 PDT 2008&lt;br /&gt;
console [simcons0] enabled&lt;br /&gt;
Console: GDB GGX simulator stdio&lt;br /&gt;
uClinux GGX port by Anthony Green &lt;green@spindazzle.org&gt;&lt;br /&gt;
Memory 00400000-00800000&lt;br /&gt;
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 255&lt;br /&gt;
Kernel command line: &lt;br /&gt;
PID hash table entries: 16 (order: 4, 64 bytes)&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
...and then it hangs.&lt;br /&gt;
&lt;br /&gt;
The ggx ISA so far only includes instructions you might use in a typical user-land program.  The kernel, however, requires special support.  The first thing I&#039;ve hit is the need for some kind of program status word (PSW) to indicate if I&#039;m in &quot;user&quot; mode or &quot;supervisor&quot; mode.  I don&#039;t want to use any of my 16-registers for this.  One idea is to map the PSW to a special memory location, but instead I&#039;ve decided to add a new bank of registers to ggx, one of which will be the PSW register.&lt;br /&gt;
&lt;br /&gt;
Earlier in this post I described a new instruction encoding for inc and dec that included a register operand and an 8-bit immediate value.  I&#039;m going to use this same encoding for the new instructions Get Special Register (gsr) and Set Special Register (ssr).  The 8-bit value will identify one of 256 special registers that we can move in and out of the single register operand.  I&#039;ll use special register 0 as the program status word.  The other 255 registers will no doubt be handy for other system level things.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 10 Sep 2008 07:04:21 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/120-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Common Lisp for Fedora, and GCC's new Register Allocator</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/119-Common-Lisp-for-Fedora,-and-GCCs-new-Register-Allocator.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/119-Common-Lisp-for-Fedora,-and-GCCs-new-Register-Allocator.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=119</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=119</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    &lt;a href=&quot;http://fedoraproject.org/wiki/Development/SteeringCommittee&quot;&gt;FESCO&lt;/a&gt; just ratified the Fedora &lt;a href=&quot;http://fedoraproject.org/wiki/Packaging/Committee&quot;&gt;Packaging Committee&lt;/a&gt;&#039;s approval of my Common Lisp packaging &lt;a href=&quot;http://fedoraproject.org/wiki/PackagingDrafts/Lisp&quot;&gt;guidelines&lt;/a&gt;.  Excellent.&lt;br /&gt;
&lt;br /&gt;
Also worth mentioning is the fact that Vlad Makarov&#039;s new register allocator (the &quot;integrated register allocator&quot;, IRA) has been &lt;a href=&quot;http://gcc.gnu.org/ml/gcc-patches/2008-08/msg01932.html&quot;&gt;pushed into the GCC development trunk&lt;/a&gt;.  Vlad is always the first person I see when I visit Red Hat Toronto, and he&#039;s been heads down on this project for a very long time.   Somebody should update the &lt;a href=&quot;http://gcc.gnu.org/&quot;&gt;GCC News&lt;/a&gt; page because this is a very exciting development.  I&#039;ve tried it out with my &lt;a href=&quot;http://groups.google.com/group/ggxdev&quot;&gt;ggx port&lt;/a&gt; and it&#039;s definitely winning.  Check out his &lt;a href=&quot;http://ols.fedoraproject.org/GCC/Reprints-2007/makarov-reprint.pdf&quot;&gt;paper from the 2007 GCC Developers&#039; Summit&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Thu, 28 Aug 2008 21:08:23 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/119-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>ggx: three's a crowd.  Switching to two-operand instructions.</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/118-ggx-threes-a-crowd.-Switching-to-two-operand-instructions..html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/118-ggx-threes-a-crowd.-Switching-to-two-operand-instructions..html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=118</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=118</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    A few months ago, when I first started looking at exception handling support for ggx, I discovered that it would be really easy if only I had a few spare registers.  ggx only has 8 registers, and gcc likes to claim some for itself now and then.  EH support is possible with only 8, but far too tricky for my taste.&lt;br /&gt;
&lt;br /&gt;
About that same time I noticed that gcc was emitting a lot of code that looked like:&lt;br /&gt;
&lt;br /&gt;
  add.l $r1, $r1, $r2&lt;br /&gt;
&lt;br /&gt;
This means &quot;add the contents of $r1 to $r2 and store them in $r1&quot;.  We don&#039;t actually need three operands for these instructions.  Two would do just fine as long as we always put the result value in one of the operand registers. &lt;br /&gt;
&lt;br /&gt;
If you recall, we currently encode three-operand instructions into 16 bits like so:&lt;br /&gt;
&lt;br /&gt;
    0ooooooaaabbbccc&lt;br /&gt;
 &lt;br /&gt;
   oooooo - FORM 1 opcode number&lt;br /&gt;
   aaa    - operand A&lt;br /&gt;
   bbb    - operand B&lt;br /&gt;
   ccc    - operand C&lt;br /&gt;
&lt;br /&gt;
Those three-bit operand fields only let us address 8 registers.  But if we only have to encode two operands in a 16-bit instruction, we can do something like this:&lt;br /&gt;
&lt;br /&gt;
    0oooooooaaaabbbb&lt;br /&gt;
 &lt;br /&gt;
Using 4 bits to represent the operands instead of 3 effectively doubles the number of registers we can address to 16!&lt;br /&gt;
&lt;br /&gt;
The down side is that it&#039;s possible that we&#039;ll end up with larger code in some cases.  For instance,&lt;br /&gt;
&lt;br /&gt;
  add.l $r1, $r2, $r3&lt;br /&gt;
&lt;br /&gt;
must now be...&lt;br /&gt;
&lt;br /&gt;
  mov.l $r1, $r2&lt;br /&gt;
  add.l $r1, $r3&lt;br /&gt;
&lt;br /&gt;
Happily, however, giving the compiler 8 more registers actually results in significantly smaller code.  Here are some relative code sizes from sample &lt;a href=&quot;http://www.eecs.umich.edu/mibench/&quot;  title=&quot;MiBench&quot;&gt;MiBench&lt;/a&gt; benchmarks:&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;img width=&#039;510&#039; height=&#039;255&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://spindazzle.org/greenblog/uploads/ggx-scount.jpg&quot; alt=&quot;&quot; /&gt;&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
The smaller code must be the result of spilling fewer registers to the stack.  A hardware implementation of this would also win from fewer memory accesses.&lt;br /&gt;
&lt;br /&gt;
We also see a corresponding performance improvement for the most part.  Each of these benchmarks runs from 10s to 100s of millions of instructions.  Here are the relative instruction counts for the 2-operand vs 3-operand ISA:&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;img width=&#039;519&#039; height=&#039;256&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://spindazzle.org/greenblog/uploads/ggx-icount.jpg&quot; alt=&quot;&quot; /&gt;&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
That automotive_bitcount benchmark will need some investigation, but I feel good enough about this change that I&#039;ve committed it to the ggxdev repository: &lt;a href=&quot;http://mercurial.intuxication.org/hg/ggxdev/rev/7dd29acfd29a&quot;  title=&quot;ggx patch&quot;&gt;http://mercurial.intuxication.org/hg/ggxdev/rev/7dd29acfd29a&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This patch also includes a change to how the simulator dumps instruction traces.  It turns out that dumping everything to a .csv is smart because OpenOffice.org&#039;s calc program makes a great instruction trace viewer.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 21 Aug 2008 22:11:59 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/118-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Mauve's second life?</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/117-Mauves-second-life.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/117-Mauves-second-life.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=117</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=117</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    &lt;img width=&#039;329&#039; height=&#039;108&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://spindazzle.org/greenblog/uploads/mauvelogo.gif&quot; alt=&quot;&quot; /&gt;Yes, it&#039;s fantastic that &lt;a href=&quot;http://www.iced-tea.org&quot;&gt;IcedTea&lt;/a&gt; passes that Java TCK.  Congratulations!   But, personally, I&#039;m more jazzed that Sun will be incorporating &lt;a href=&quot;http://sourceware.org/mauve&quot;&gt;Mauve&lt;/a&gt; testing into their OpenJDK development process.  Mauve is only about a quarter the size of the TCK but, to my knowledge, it is a giant among stand-alone FOSS test suite efforts, with 50+ contributors and ~250k lines of test code.&lt;br /&gt;
&lt;br /&gt;
The Mauve site has a comically dated &lt;a href=&quot;http://sourceware.org/mauve/faq.html&quot;&gt;FAQ&lt;/a&gt; (my fault).  And, like many an FAQ, it doesn&#039;t really list Frequently Asked Questions so much as it lists questions we were hoping people would ask frequently.  &lt;br /&gt;
&lt;br /&gt;
It took 10 years, but &lt;a href=&quot;http://weblogs.java.net/blog/robogeek/&quot;&gt;David Herron&lt;/a&gt; finally popped the big question (#8): &lt;a href=&quot;http://sources.redhat.com/ml/mauve-discuss/2008-q2/msg00001.html&quot;&gt;&quot;I&#039;m Sun. Can I use the Mauve Project&#039;s testsuite?&quot;&lt;/a&gt;.  Yes, David.  You can!&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 19 Jun 2008 20:44:18 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/117-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>Fedora 9 and jack audio</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/116-Fedora-9-and-jack-audio.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/116-Fedora-9-and-jack-audio.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=116</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=116</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    The audio production apps in F9 appear to be working well with &lt;a href=&quot;http://jackaudio.org&quot; &gt;jack&lt;/a&gt; audio.  Just be sure to add yourself to the &lt;strong&gt;jackuser&lt;/strong&gt; group via System-&gt;Administration-&gt;Users and Groups.  This will give you the permissions you need to run the jack audio server in Real Time mode (the default setting in &lt;a href=&quot;http://qjackctl.sourceforge.net/&quot;&gt;qjackctl&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
There&#039;s still no audio production group in comps.xml, so you&#039;ll have to do something like the following to install a nice collection of audio apps:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ yum install vkeybd hydrogen qjackctl ardour rosegarden4 \*dssi\* zynadd\* phasex libfreebob ladspa\* swh\* seq24 csound sooperlooper&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Remember, you don&#039;t need a MIDI keyboard to have fun.  Just fire up vkeybd and use the qjackctl Connections windows to hook it up to synths in the ALSA tab.&lt;br /&gt;
&lt;br /&gt;
&lt;img width=&#039;550&#039; height=&#039;309&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://spindazzle.org/greenblog/uploads/jack-alsa.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
  Also make sure that your soft synth audio is routed to the system audio ports.&lt;br /&gt;
&lt;br /&gt;
&lt;img width=&#039;550&#039; height=&#039;309&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://spindazzle.org/greenblog/uploads/jack-audio.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Have fun!  And don&#039;t forget about the &lt;a href=&quot;http://www.redhat.com/mailman/listinfo/fedora-music-list&quot;&gt;fedora-music&lt;/a&gt; mailing list. 
    </content:encoded>

    <pubDate>Mon, 12 May 2008 21:13:38 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/116-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>
<item>
    <title>ggx: mailing list and mercurial host</title>
    <link>http://spindazzle.org/greenblog/index.php?/archives/115-ggx-mailing-list-and-mercurial-host.html</link>
            <category>foss</category>
    
    <comments>http://spindazzle.org/greenblog/index.php?/archives/115-ggx-mailing-list-and-mercurial-host.html#comments</comments>
    <wfw:comment>http://spindazzle.org/greenblog/wfwcomment.php?cid=115</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://spindazzle.org/greenblog/rss.php?version=2.0&amp;type=comments&amp;cid=115</wfw:commentRss>
    

    <author>nospam@example.com (Anthony Green)</author>
    <content:encoded>
    There&#039;s a new google group for &lt;a href=&quot;http://spindazzle.org/ggx&quot;&gt;ggx&lt;/a&gt; discussion:  &lt;a href=&quot;http://groups.google.com/group/ggxdev&quot;&gt;http://groups.google.com/group/ggxdev&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Also, &lt;a href=&quot;http://intuxication.org&quot;&gt;intuxication.org&lt;/a&gt; is hosting a mercurial &lt;a href=&quot;http://mercurial.intuxication.org/hg/ggxdev&quot;&gt;repository&lt;/a&gt; with all of the tools sources.  Details are available &lt;a href=&quot;http://groups.google.com/group/ggxdev/browse_thread/thread/c49be0f8ec563943&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I&#039;m pretty impressed with how easy it was to create and use the mercurial repo at intuxication.org.  Nice job guys!&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 05 May 2008 06:04:46 -0400</pubDate>
    <guid isPermaLink="false">http://spindazzle.org/greenblog/index.php?/archives/115-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/1.0/</creativeCommons:license>
</item>

</channel>
</rss>