A new post titled "[GSoC] coreboot for ARM64 Qemu – Week #6" has been published on the coreboot blog. Find the full post at http://blogs.coreboot.org/blog/2015/07/13/gsoc-coreboot-for-arm64-qemu-week-6/

<p>This week I worked on completing the build and sorting all complications imposed by it. As I talked in the last post, I was facing some issues regarding setting up smp for this port. I solved this issue by adding an assembly file which declared smp_processor_id and then defined it by setting the right registers. I had to do some background reading on arm64 details. <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0488c/BABGDAIC.html">This</a> provided me with the information I needed.</p>
<p>Next up, was another hitch. During the build, ‘mmu_enable()’ and ‘arch_secondary_cpu_init()’ function calls are happening for all stages but the definitions for these functions are getting compiled only for ramstage. So this gave recurrent errors since the compiler couldn’t find these definitions. While attempting to sort this, I stumbled across something on the chromium tree. There was a <a href="https://chromium-review.googlesource.com/#/c/228389/">patch</a> which dealt with some of the issues, similar to mine. I had to cherry pick and apply this change.</p>
<p>After debugging and sorting through some more errors, I was finally able to get it to build successfully.</p>
<blockquote><p>coreboot.rom: 4096 kB, bootblocksize 37008, romsize 4194304, offset 0x90c0 alignment: 64 bytes, architecture: arm64</p>
<div class="de1">Name                                       Offset     Type         Size</div>
<div class="de1">fallback/romstage               0x90c0     stage        12108</div>
<div class="de1">fallback/ramstage               0xc080     stage        17768</div>
<div class="de1">config                                    0x10640    raw          2034</div>
<div class="de1">revision                                0x10e80    raw          577</div>
<div class="de1">(empty)                                 0x11100    null         4124312</div>
<div class="de1">      HOSTCC     cbfstool/rmodtool.o</div>
<div class="de1">     HOSTCC     cbfstool/rmodule.o</div>
<div class="de1">     HOSTCC     cbfstool/rmodtool (link)</div>
</blockquote>
<div class="de1">The complete build can be found <a href="http://pastebin.com/qFzBXYGL">here</a>.</div>
<div class="de1">I attempted to boot off on qemu after this,</div>
<div class="de1"></div>
<pre class="de1">$qemu-system-aarch64 -machine type=virt -nographic -bios ~/coreboot/build/coreboot.rom</pre>
<div class="de1">This did not give any output, which meant probably I had to make some changes in the uart set up. I attempted to debug this by adding few printks early in bootblock once the console_init is done. This process ongoing, I hope to get through. Another aspect in question is the bootblock initialisation. The src/arch/arm64/armv8/bootblock_simple.c calls for an appropriate bootblock_cpu_init(). This is another thing I will be working on in the coming days.</div>
<div class="de1"></div>