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

<compiler_spec>
  <data_organization>
        <pointer_size value="4"/>
        <float_size value="4" />
        <double_size value="8" />
        <long_double_size value="8" />
        <size_alignment_map>
			<entry size="1" alignment="1" />
			<entry size="2" alignment="2" />
			<entry size="4" alignment="4" />
			<entry size="8" alignment="8" />
		</size_alignment_map>
  </data_organization>

  <stackpointer register="sp" space="ram"/>
  <funcptr align="2"/>
  <spacebase name="gp" register="gp" space="ram"/>
  <global>
    <range space="gp"/>
    <range space="ram"/>
    <range space="register" first="0x2000" last="0x2fff"/>
  </global>
  <returnaddress>
    <register name="ra"/>
  </returnaddress>
  <default_proto>
    <prototype name="__stdcall" extrapop="0" stackshift="0">
      <input>
        <pentry minsize="1" maxsize="8" metatype="float">
          <register name="f12"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float">
          <register name="f14"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="a0"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="a1"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="a2"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="a3"/>
        </pentry>
        <pentry minsize="1" maxsize="500" align="4">
          <addr offset="16" space="stack"/>
        </pentry>
      </input>
      <output>
        <pentry minsize="1" maxsize="8" metatype="float">
          <register name="f0"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="v0"/>
        </pentry>
        <pentry minsize="5" maxsize="8">
          <addr space="join" piece1="v0" piece2="v1"/>
        </pentry>
      </output>
      <unaffected>
        <register name="s0"/>
        <register name="s1"/>
        <register name="s2"/>
        <register name="s3"/>
        <register name="s4"/>
        <register name="s5"/>
        <register name="s6"/>
        <register name="s7"/>
        <register name="s8"/>
        <register name="sp"/>
        <register name="gp"/>
        <register name="f20"/>
        <register name="f22"/>
        <register name="f24"/>
        <register name="f26"/>
        <register name="f28"/>
        <register name="f30"/>
      </unaffected>
      <localrange>
        <range space="stack" first="0xfff0bdc0" last="0xffffffff"/>
        <range space="stack" first="0" last="15"/>  <!-- This is backup storage space for register params, but we treat as locals -->
      </localrange>
    </prototype>
  </default_proto>
    
</compiler_spec>
