title: ARM Linux: Why does the linux expect the register r0 to be set to zero
body: <p>ARM Linux booting manual says that the register r0 should be zero. Why should the register r0 be zer0?</p>
  
  <p><a href="http://www.arm.linux.org.uk/developer/booting.php" rel="nofollow">http://www.arm.linux.org.uk/developer/booting.php</a></p>
  
  <pre><code>CPU register settings
      r0 = 0.
      r1 = machine type number discovered in (3) above.
      r2 = physical address of tagged list in system RAM. 
  </code></pre>
  
  <p>I browsed through the arch/arm/kernel/head.S but could not find the reason for that.</p>