---
layout: default
---
<div class="sidenav-top">
  <!-- <a href="/"><img src="{{ "/assets/img/gem5ColorLong.gif" | prepend: site.baseurl }}" height="80"></a> -->
  <div class="search">
    <form action="/search" method="get">
      <!-- <label for="search-box"><i class="fa fa-search"></i></label> -->
      <input type="text" name="query">
      <button type="submit" name="submit"><i class="fa fa-search"></i></button>
    </form>
  </div>
</div>
<div class="sidenav">
  <!-- Pull navigation from _data/documentation.yml -->
  {% for item in site.data.documentation.docs %}
    <a class="item" {% if item.url %}href="{{ item.url | prepend: site.baseurl }}"{% else %}data-toggle="collapse" href="#{{ item.id }}"{% endif %} role="button" aria-expanded="false" aria-controls="collapseExample">
      {{ item.title }}
    </a>
    <div class="collapse {% if page.parent == item.id %}show{% endif %}" id="{{ item.id }}">
      {% for subitem in item.subitems %}
        <a class="subitem {% if subitem.page == page.title %}active{% endif %}" href="{{ subitem.url | prepend: site.baseurl }}">{{ subitem.page }}</a>
      {% endfor %}
    </div>
  {% endfor %}
</div>


<div class="container" id="doc-container">
  <div class="edit"><a href="{{ site.sourceurl }}{{ page.path }}">Edit this page</a></div>
  {% if page.author %}<b>authors:</b> {{ page.author }}<br>{% endif %}
  {% if page.date %}<b>last edited:</b> {{ page.date }}<br>{% endif %}

  <br>
  {{ content }}
  <br>

  <!-- RETRIVE PREVIOUS PAGE LINK -->
  {% for item in site.data.documentation.docs %}
    {% if page.parent == item.id %}
      {% assign previous = "none" %}
      {% if item.subitems %}
        {% for subitem in item.subitems %}
          {% if page.title == subitem.page %}
            {% break %}
          {% else %}
            {% assign previous = subitem.url %}
          {% endif %}
        {% endfor %}
      {% endif %}
    {% endif %}
  {% endfor %}

  <!-- RETRIEVE NEXT PAGE LINK -->
  {% for item in site.data.documentation.docs %}
    {% if page.parent == item.id %}
      {% assign next = "none" %}
      {% if item.subitems %}
        {% for subitem in item.subitems reversed %}
          {% if page.title == subitem.page %}
            {% break %}
          {% else %}
            {% assign next = subitem.url %}
          {% endif %}
        {% endfor %}
      {% endif %}
    {% endif %}
  {% endfor %}


  <div class="navbuttons">
    {% if previous != "none" %}
      <a href="{{ previous | prepend: site.baseurl }}"><button type="button" class="btn btn-outline-primary">PREVIOUS</button></a>
    {% endif %}

    {% if next != "none" %}
      <a href="{{ next | prepend: site.baseurl }}"><button type="button" class="btn btn-outline-primary">NEXT</button></a>
    {% endif %}
  </div>
</div>
