{"id":3968,"date":"2015-06-14T12:38:11","date_gmt":"2015-06-14T02:38:11","guid":{"rendered":"https:\/\/www.flamingspork.com\/blog\/?p=3968"},"modified":"2015-06-12T17:55:24","modified_gmt":"2015-06-12T07:55:24","slug":"hello-world-as-ppc66le-opal-payload","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2015\/06\/14\/hello-world-as-ppc66le-opal-payload\/","title":{"rendered":"hello world as ppc66le OPAL payload!"},"content":{"rendered":"<p>While the <a href=\"https:\/\/github.com\/open-power\/skiboot\/tree\/master\/test\/hello_world\/hello_kernel\">in-tree hello-world kernel<\/a> (originally by me, and Mikey managed to CUT THE BLOAT of a whole <strong>SEVENTEEN<\/strong> instructions down to a tiny ten) is very, very dumb (and does one thing, print &#8220;Hello World&#8221; to the console), there&#8217;s now an alternative for those who like to play with a more feature-rich Hello World rather than booting a more &#8220;real&#8221; OS such as Linux. In case you&#8217;re wondering, we use the hello world kernel as a tiny test that we haven&#8217;t completely and utterly broken things when merging\/developing code.<\/p>\n<p><a href=\"https:\/\/github.com\/andreiw\/ppc64le_hello\">https:\/\/github.com\/andreiw\/ppc64le_hello<\/a> is a wonderful example of a small (INTERACTIVE!) starting point for a PowerNV (as it&#8217;s called in Linux) or &#8220;bare metal&#8221; (i.e. non-virtualised) OS on POWER.<\/p>\n<p>What&#8217;s more impressive is that this was all developed using the simulator rather than real hardware (although I think somebody has tried it on some now).<\/p>\n<p>Kind of neat!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>While the in-tree hello-world kernel (originally by me, and Mikey managed to CUT THE BLOAT of a whole SEVENTEEN instructions down to a tiny ten) is very, very dumb (and does one thing, print &#8220;Hello World&#8221; to the console), there&#8217;s &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2015\/06\/14\/hello-world-as-ppc66le-opal-payload\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[76,570,588,615],"tags":[],"class_list":["post-3968","post","type-post","status-publish","format-standard","hentry","category-code","category-ibm-work-et-al","category-opal","category-powerpc"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-120","jetpack-related-posts":[{"id":3965,"url":"https:\/\/www.flamingspork.com\/blog\/2015\/06\/12\/gcov-code-coverage-for-openpower-firmware\/","url_meta":{"origin":3968,"position":0},"title":"gcov code coverage for OpenPower firmware","author":"Stewart Smith","date":"2015-06-12","format":false,"excerpt":"For skiboot (which provides the OPAL boot and runtime firmware for OpenPower machines), I've been pretty interested at getting some automated code coverage data for booting on real hardware (as well as in a simulator). Why? Well, it's useful to see that various test suites are actually testing what you\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3775,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/07\/17\/openpower-firmware-up-on-github\/","url_meta":{"origin":3968,"position":1},"title":"OpenPower firmware up on github!","author":"Stewart Smith","date":"2014-07-17","format":false,"excerpt":"With the whole OpenPower thing, a lot of low level firmware is being open sourced, which is really exciting for the platform - the less proprietary code sitting in memory the better in my books. If you go to https:\/\/github.com\/open-power you'll see code for a bunch of the low level\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3972,"url":"https:\/\/www.flamingspork.com\/blog\/2015\/06\/16\/opal-firmware-specification-conformance-and-documentation\/","url_meta":{"origin":3968,"position":2},"title":"OPAL firmware specification, conformance and documentation","author":"Stewart Smith","date":"2015-06-16","format":false,"excerpt":"Now that we have an increasing amount of things that run on top of OPAL: Linux hello_world (in skiboot tree) ppc64le_hello (as I wrote about yesterday) FreeBSD and that the OpenPower ecosystem is rapidly growing (especially around people building OpenPower machines), the need for more formal specification, conformance testing and\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3912,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/12\/03\/running-skiboot-opal-on-the-power8-simulator\/","url_meta":{"origin":3968,"position":3},"title":"Running skiboot (OPAL) on the POWER8 Simulator","author":"Stewart Smith","date":"2014-12-03","format":false,"excerpt":"skiboot is open source boot and runtime firmware for OpenPOWER. On real POWER8 hardware, you will also need HostBoot to do this (basically, to make the chip work) but in a functional simulator (such as this one released by IBM) you don't need a bunch of hardware procedures to make\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3997,"url":"https:\/\/www.flamingspork.com\/blog\/2015\/10\/01\/papr-spec-publicly-available-to-download\/","url_meta":{"origin":3968,"position":4},"title":"PAPR spec publicly available to download","author":"Stewart Smith","date":"2015-10-01","format":false,"excerpt":"PAPR is the Power Architecture Platform Reference document. It's a short read at only 890 pages and defines the virtualised environment that guests run in on PowerKVM and PowerVM (i.e. what is referred to as 'pseries' platform in the Linux kernel). https:\/\/members.openpowerfoundation.org\/document\/dl\/469 As part of the OpenPower Foundation, we're looking\u2026","rel":"","context":"In &quot;IBM&quot;","block_context":{"text":"IBM","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/ibm-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4200,"url":"https:\/\/www.flamingspork.com\/blog\/2016\/10\/20\/workaround-for-opal-prd-using-100-cpu\/","url_meta":{"origin":3968,"position":5},"title":"Workaround for opal-prd using 100% CPU","author":"Stewart Smith","date":"2016-10-20","format":false,"excerpt":"opal-prd is the Processor RunTime Diagnostics daemon, the userspace process that on OpenPower systems is responsible for some of the runtime diagnostics. Although a userspace process, it memory maps (as in mmap) in some code loaded by early firmware (Hostboot) called the HostBoot RunTime (HBRT) and runs it, using calls\u2026","rel":"","context":"In &quot;IBM&quot;","block_context":{"text":"IBM","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/ibm-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3968","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=3968"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3968\/revisions"}],"predecessor-version":[{"id":3969,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3968\/revisions\/3969"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=3968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=3968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=3968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}