CINXE.COM

Documentation/Platforms/RISCV: Difference between revisions - QEMU

<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"/> <title>Documentation/Platforms/RISCV: Difference between revisions - QEMU</title> <script>document.documentElement.className="client-js";RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"5fec5132af2d2f950b5775ac","wgCSPNonce":false,"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Documentation/Platforms/RISCV","wgTitle":"Documentation/Platforms/RISCV","wgCurRevisionId":10741,"wgRevisionId":10741,"wgArticleId":1252,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Documentation/Platforms/RISCV","wgRelevantArticleId":1252,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgVector2022PreviewPages":[], "wgDiffOldId":7741,"wgDiffNewId":10741};RLSTATE={"skins.vector.user.styles":"ready","site.styles":"ready","user.styles":"ready","skins.vector.user":"ready","user":"ready","user.options":"loading","mediawiki.interface.helpers.styles":"ready","mediawiki.diff.styles":"ready","mediawiki.ui.button":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","mediawiki.ui.icon":"ready"};RLPAGEMODULES=["mediawiki.diff","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","skins.vector.es6"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.implement("user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});});});</script> <link rel="stylesheet" href="/load.php?lang=en&amp;modules=mediawiki.diff.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.ui.button%2Cicon%7Cskins.vector.icons%2Cstyles&amp;only=styles&amp;skin=vector-2022"/> <script async="" src="/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="generator" content="MediaWiki 1.39.7"/> <meta name="robots" content="noindex,nofollow"/> <meta name="format-detection" content="telephone=no"/> <meta name="viewport" content="width=1000"/> <link rel="icon" href="/favicon.ico"/> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch_desc.php" title="QEMU (en)"/> <link rel="EditURI" type="application/rsd+xml" href="https://wiki.qemu.org/api.php?action=rsd"/> <link rel="license" href="http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"/> <link rel="alternate" type="application/atom+xml" title="QEMU Atom feed" href="/index.php?title=Special:RecentChanges&amp;feed=atom"/> </head> <body class="skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Documentation_Platforms_RISCV rootpage-Documentation_Platforms_RISCV skin-vector-2022 action-view skin-vector-disable-max-width vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-language-alert-in-sidebar-disabled vector-feature-sticky-header-disabled vector-feature-sticky-header-edit-disabled vector-feature-table-of-contents-disabled vector-feature-visual-enhancement-next-disabled"><div class="mw-page-container"> <span id="top-page"></span> <a class="mw-jump-link" href="#content">Jump to content</a> <div class="mw-page-container-inner"> <input type="checkbox" id="mw-sidebar-checkbox" class="mw-checkbox-hack-checkbox" > <header class="mw-header"> <div class="mw-header-aside"> <label id="mw-sidebar-button" class="mw-checkbox-hack-button mw-ui-icon mw-ui-button mw-ui-quiet mw-ui-icon-element" for="mw-sidebar-checkbox" role="button" aria-controls="mw-panel" data-event-name="ui.sidebar" tabindex="0" title="Main menu"> <span>Toggle sidebar</span> </label> <a href="/Main_Page" class="mw-logo"> <span class="mw-logo-container"> <img class="mw-logo-wordmark" alt="QEMU" src="/images/Qemu-logo-small.png" style="width: 9.375em; height: 3em;"> </span> </a> </div> <div class="mw-header-content"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/Special:Search" title="Search QEMU [f]" accesskey="f" class="mw-ui-button mw-ui-quiet mw-ui-icon mw-ui-icon-element mw-ui-icon-wikimedia-search search-toggle"> <span>Search</span> </a> <div> <form action="/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-moved"> <input class="vector-search-box-input" type="search" name="search" placeholder="Search QEMU" aria-label="Search QEMU" autocapitalize="sentences" title="Search QEMU [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Special:Search"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Search the pages for this text" value="Search"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Go to a page with this exact name if it exists" value="Go"> </div> </form> </div> </div> <nav class="vector-user-links" aria-label="Personal tools" role="navigation" > <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet mw-portlet-vector-user-menu-overflow emptyPortlet vector-user-menu-overflow" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"></ul> </div> </div> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal vector-user-menu vector-user-menu-logged-out vector-menu-dropdown" title="More options" > <input type="checkbox" id="p-personal-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-personal" class="vector-menu-checkbox" /> <label id="p-personal-label" for="p-personal-checkbox" class="vector-menu-heading mw-ui-button mw-ui-quiet mw-ui-icon mw-ui-icon-element mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis" > <span class="vector-menu-heading-label">Personal tools</span> </label> <div class="vector-menu-content"> <div class="vector-user-menu-create-account"><a href="/index.php?title=Special:CreateAccount&amp;returnto=Documentation%2FPlatforms%2FRISCV&amp;returntoquery=diff%3D10741%26oldid%3D7741" class="vector-menu-content-item user-links-collapsible-item" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="mw-ui-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></div> <div class="vector-user-menu-login"><a href="/index.php?title=Special:UserLogin&amp;returnto=Documentation%2FPlatforms%2FRISCV&amp;returntoquery=diff%3D10741%26oldid%3D7741" class="vector-menu-content-item vector-menu-content-item-login" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="mw-ui-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></div> <ul class="vector-menu-content-list"></ul> </div> </div> </nav> </div> </header> <div class="vector-sidebar-container "> <div id="mw-navigation"> <nav id="mw-panel" class="mw-sidebar" aria-label="Site" role="navigation"> <div id="p-Link_to_website" class="vector-menu mw-portlet mw-portlet-Link_to_website vector-menu-portal portal" > <div id="p-Link_to_website-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Link to website</span> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="n-About-QEMU" class="mw-list-item"><a href="/QEMU:About"><span>About QEMU</span></a></li></ul> </div> </div> <div id="p-Get" class="vector-menu mw-portlet mw-portlet-Get vector-menu-portal portal" > <div id="p-Get-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Get</span> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="n-Download" class="mw-list-item"><a href="/Download"><span>Download</span></a></li><li id="n-License" class="mw-list-item"><a href="/License"><span>License</span></a></li></ul> </div> </div> <div id="p-Contribute" class="vector-menu mw-portlet mw-portlet-Contribute vector-menu-portal portal" > <div id="p-Contribute-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Contribute</span> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="n-Start-Here" class="mw-list-item"><a href="/Contribute"><span>Start Here</span></a></li><li id="n-Report-a-Bug" class="mw-list-item"><a href="/Contribute/ReportABug"><span>Report a Bug</span></a></li><li id="n-Report-a-security-issue" class="mw-list-item"><a href="/SecurityProcess"><span>Report a security issue</span></a></li><li id="n-Submit-a-Patch" class="mw-list-item"><a href="/Contribute/SubmitAPatch"><span>Submit a Patch</span></a></li><li id="n-Mailing-Lists" class="mw-list-item"><a href="/Contribute/MailingLists"><span>Mailing Lists</span></a></li><li id="n-Testing-QEMU" class="mw-list-item"><a href="/Testing"><span>Testing QEMU</span></a></li></ul> </div> </div> <div id="p-Learn" class="vector-menu mw-portlet mw-portlet-Learn vector-menu-portal portal" > <div id="p-Learn-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Learn</span> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="n-Documentation" class="mw-list-item"><a href="/Documentation"><span>Documentation</span></a></li><li id="n-Links" class="mw-list-item"><a href="/Links"><span>Links</span></a></li></ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb vector-menu-portal portal" > <div id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Tools</span> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="t-whatlinkshere" class="mw-list-item"><a href="/Special:WhatLinksHere/Documentation/Platforms/RISCV" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/Special:RecentChangesLinked/Documentation/Platforms/RISCV" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/index.php?title=Documentation/Platforms/RISCV&amp;oldid=10741" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/index.php?title=Documentation/Platforms/RISCV&amp;action=info" title="More information about this page"><span>Page information</span></a></li></ul> </div> </div> </nav> </div> </div> <div class="vector-sitenotice-container"> <div id="siteNotice"></div> </div> <input type="checkbox" id="vector-toc-collapsed-checkbox" class="mw-checkbox-hack-checkbox"> <div class="mw-table-of-contents-container"> <div class="vector-sticky-toc-container mw-sticky-header-element"> <nav id="mw-panel-toc" class="sidebar-toc" role="navigation" aria-labelledby="sidebar-toc-label" data-event-name="ui.sidebar-toc"> <div id="sidebar-toc-label" class="sidebar-toc-header"> <p class="sidebar-toc-title"> Contents <button class="vector-toc-uncollapse-button">move to sidebar</button> <button class="vector-toc-collapse-button">hide</button> </p> </div> <ul class="sidebar-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="sidebar-toc-list-item sidebar-toc-level-1"> <a href="#top-page" class="sidebar-toc-link"> <div class="sidebar-toc-text">Beginning</div> </a> </li> <li id="toc-Description" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#Description"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">1</span>Description</div> </a> <ul id="toc-Description-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Build_Directions" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#Build_Directions"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">2</span>Build Directions</div> </a> <ul id="toc-Build_Directions-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Booting_Linux" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#Booting_Linux"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">3</span>Booting Linux</div> </a> <button aria-controls="toc-Booting_Linux-sublist" class="mw-ui-icon mw-ui-icon-wikimedia-expand mw-ui-icon-small sidebar-toc-toggle"> Toggle Booting Linux subsection </button> <ul id="toc-Booting_Linux-sublist" class="sidebar-toc-list"> <li id="toc-Booting_64-bit_Debian" class="sidebar-toc-list-item sidebar-toc-level-2"> <a class="sidebar-toc-link" href="#Booting_64-bit_Debian"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">3.1</span>Booting 64-bit Debian</div> </a> <ul id="toc-Booting_64-bit_Debian-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Booting_64-bit_Fedora" class="sidebar-toc-list-item sidebar-toc-level-2"> <a class="sidebar-toc-link" href="#Booting_64-bit_Fedora"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">3.2</span>Booting 64-bit Fedora</div> </a> <ul id="toc-Booting_64-bit_Fedora-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Booting_32-bit_OpenEmbedded_Images" class="sidebar-toc-list-item sidebar-toc-level-2"> <a class="sidebar-toc-link" href="#Booting_32-bit_OpenEmbedded_Images"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">3.3</span>Booting 32-bit OpenEmbedded Images</div> </a> <ul id="toc-Booting_32-bit_OpenEmbedded_Images-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Booting_64-bit_OpenEmbedded_Images" class="sidebar-toc-list-item sidebar-toc-level-2"> <a class="sidebar-toc-link" href="#Booting_64-bit_OpenEmbedded_Images"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">3.4</span>Booting 64-bit OpenEmbedded Images</div> </a> <ul id="toc-Booting_64-bit_OpenEmbedded_Images-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Booting_32-bit_Buildroot_Images" class="sidebar-toc-list-item sidebar-toc-level-2"> <a class="sidebar-toc-link" href="#Booting_32-bit_Buildroot_Images"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">3.5</span>Booting 32-bit Buildroot Images</div> </a> <ul id="toc-Booting_32-bit_Buildroot_Images-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Booting_64-bit_Buildroot_Images" class="sidebar-toc-list-item sidebar-toc-level-2"> <a class="sidebar-toc-link" href="#Booting_64-bit_Buildroot_Images"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">3.6</span>Booting 64-bit Buildroot Images</div> </a> <ul id="toc-Booting_64-bit_Buildroot_Images-sublist" class="sidebar-toc-list"> </ul> </li> </ul> </li> <li id="toc-Microchip_PolarFire_SoC_Icicle_Kit" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#Microchip_PolarFire_SoC_Icicle_Kit"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">4</span>Microchip PolarFire SoC Icicle Kit</div> </a> <ul id="toc-Microchip_PolarFire_SoC_Icicle_Kit-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Attaching_GDB" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#Attaching_GDB"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">5</span>Attaching GDB</div> </a> <ul id="toc-Attaching_GDB-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-RISC-V_Foundation_Extensions" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#RISC-V_Foundation_Extensions"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">6</span>RISC-V Foundation Extensions</div> </a> <ul id="toc-RISC-V_Foundation_Extensions-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-RISC-V_Custom_Extensions/Instructions" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#RISC-V_Custom_Extensions/Instructions"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">7</span>RISC-V Custom Extensions/Instructions</div> </a> <ul id="toc-RISC-V_Custom_Extensions/Instructions-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Links" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#Links"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">8</span>Links</div> </a> <ul id="toc-Links-sublist" class="sidebar-toc-list"> </ul> </li> <li id="toc-Contacts" class="sidebar-toc-list-item sidebar-toc-level-1 sidebar-toc-list-item-expanded"> <a class="sidebar-toc-link" href="#Contacts"> <div class="sidebar-toc-text"> <span class="sidebar-toc-numb">9</span>Contacts</div> </a> <ul id="toc-Contacts-sublist" class="sidebar-toc-list"> </ul> </li> </ul> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body" role="main"> <a id="top"></a> <header class="mw-body-header"> <label id="vector-toc-collapsed-button" class="mw-ui-button mw-ui-quiet mw-ui-icon mw-ui-icon-element mw-ui-icon-wikimedia-listBullet mw-checkbox-hack-button" for="vector-toc-collapsed-checkbox" role="button" aria-controls="toc-toggle-list" data-event-name="vector.toc-toggle-list" tabindex="0" title="Table of Contents"> Toggle the table of contents </label> <h1 id="firstHeading" class="firstHeading mw-first-heading">Documentation/Platforms/RISCV: Difference between revisions</h1> </header> <nav class="vector-article-toolbar" aria-label="Tools" role="navigation"> <div class="mw-article-toolbar-container"> <div id="left-navigation"> <div id="p-associated-pages" class="vector-menu mw-portlet mw-portlet-associated-pages vector-menu-tabs" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="ca-nstab-main" class="selected mw-list-item"><a href="/Documentation/Platforms/RISCV" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="new mw-list-item"><a href="/index.php?title=Talk:Documentation/Platforms/RISCV&amp;action=edit&amp;redlink=1" rel="discussion" title="Discussion about the content page (page does not exist) [t]" accesskey="t"><span>Discussion</span></a></li></ul> </div> </div> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-label="Change language variant" /> <label id="p-variants-label" for="p-variants-checkbox" class="vector-menu-heading " > <span class="vector-menu-heading-label">English</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"></ul> </div> </div> </div> <div id="right-navigation" class="vector-collapsible "> <div id="p-views" class="vector-menu mw-portlet mw-portlet-views vector-menu-tabs" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="ca-view" class="selected mw-list-item"><a href="/Documentation/Platforms/RISCV"><span>Read</span></a></li><li id="ca-viewsource" class="mw-list-item"><a href="/index.php?title=Documentation/Platforms/RISCV&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="mw-list-item"><a href="/index.php?title=Documentation/Platforms/RISCV&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li></ul> </div> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown vector-has-collapsible-items" title="More options" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" /> <label id="p-cactions-label" for="p-cactions-checkbox" class="vector-menu-heading " > <span class="vector-menu-heading-label">More</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/Documentation/Platforms/RISCV"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/index.php?title=Documentation/Platforms/RISCV&amp;action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/index.php?title=Documentation/Platforms/RISCV&amp;action=history"><span>View history</span></a></li></ul> </div> </div> </div> </div> </nav> <div id="bodyContent" class="vector-body" data-mw-ve-target-container> <div class="mw-body-subheader"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From QEMU</div> </div> <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" class="diff-otitle diff-side-deleted"><div id="mw-diff-otitle1"><strong><a href="/index.php?title=Documentation/Platforms/RISCV&amp;oldid=7741" title="Documentation/Platforms/RISCV">Revision as of 17:01, 29 June 2018</a> <span class="mw-diff-edit">(<a href="/index.php?title=Documentation/Platforms/RISCV&amp;action=edit&amp;oldid=7741" title="Documentation/Platforms/RISCV">view source</a>)</span></strong></div><div id="mw-diff-otitle2"><a href="/index.php?title=User:Programmingkid&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Programmingkid (page does not exist)"><bdi>Programmingkid</bdi></a> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Programmingkid&amp;action=edit&amp;redlink=1" class="new mw-usertoollinks-talk" title="User talk:Programmingkid (page does not exist)">talk</a> | <a href="/Special:Contributions/Programmingkid" class="mw-usertoollinks-contribs" title="Special:Contributions/Programmingkid">contribs</a>)</span></div><div id="mw-diff-otitle3"> <span class="comment">(Add youtube video on Risc-V support on QEMU)</span></div><div id="mw-diff-otitle5"></div><div id="mw-diff-otitle4"><a href="/index.php?title=Documentation/Platforms/RISCV&amp;diff=prev&amp;oldid=7741" title="Documentation/Platforms/RISCV" id="differences-prevlink">← Older edit</a></div></td> <td colspan="2" class="diff-ntitle diff-side-added"><div id="mw-diff-ntitle1"><strong><a href="/index.php?title=Documentation/Platforms/RISCV&amp;oldid=10741" title="Documentation/Platforms/RISCV">Latest revision as of 03:02, 21 January 2022</a> <span class="mw-diff-edit">(<a href="/index.php?title=Documentation/Platforms/RISCV&amp;action=edit" title="Documentation/Platforms/RISCV">view source</a>)</span> </strong></div><div id="mw-diff-ntitle2"><a href="/index.php?title=User:Alistair&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Alistair (page does not exist)"><bdi>Alistair</bdi></a> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Alistair&amp;action=edit&amp;redlink=1" class="new mw-usertoollinks-talk" title="User talk:Alistair (page does not exist)">talk</a> | <a href="/Special:Contributions/Alistair" class="mw-usertoollinks-contribs" title="Special:Contributions/Alistair">contribs</a>)</span> </div><div id="mw-diff-ntitle3"> <span class="comment">(Add extension policy)</span></div><div id="mw-diff-ntitle5"></div><div id="mw-diff-ntitle4"> </div></td> </tr><tr><td colspan="4" class="diff-multi" lang="en">(13 intermediate revisions by 2 users not shown)</td></tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>== Description ==</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>== Description ==</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>RISC-V is an open source instruction set. It is a modular with only a small set of mandatory instructions. Every other module might be implemented by vendors</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>RISC-V is an open source instruction set. It is a modular with only a small set of mandatory instructions. Every other module might be implemented by vendors</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>allowing RISC-V to be suitable for small <del class="diffchange diffchange-inline">embended </del>systems up to large supercomputers.</div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>allowing RISC-V to be suitable for small <ins class="diffchange diffchange-inline">embedded </ins>systems up to large supercomputers.</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><br/></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><br/></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>== Build Directions ==</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>== Build Directions ==</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><br/></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><br/></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>For <del class="diffchange diffchange-inline">RV64GC</del>:</div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>For <ins class="diffchange diffchange-inline">RV64</ins>:</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>   ./configure --target-list=riscv64-softmmu &amp;&amp; make</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>   ./configure --target-list=riscv64-softmmu &amp;&amp; make</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>For <del class="diffchange diffchange-inline">RV32GC</del>:</div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>For <ins class="diffchange diffchange-inline">RV32</ins>:</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>   ./configure --target-list=riscv32-softmmu &amp;&amp; make</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>   ./configure --target-list=riscv32-softmmu &amp;&amp; make</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><br/></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><br/></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>== Booting Linux ==</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>== Booting Linux ==</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>Download the <del class="diffchange diffchange-inline">[</del>https://<del class="diffchange diffchange-inline">fedorapeople</del>.org/<del class="diffchange diffchange-inline">groups</del>/risc-v/<del class="diffchange diffchange-inline">disk</del>-images/ Fedora <del class="diffchange diffchange-inline">disk </del>images<del class="diffchange diffchange-inline">]</del></div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline">=== Booting 64-bit Debian ===</ins></div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>Decompress the <del class="diffchange diffchange-inline">disk image</del>:</div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline">Follow the instructions on the Debian wiki to boot Debian on QEMU: https://wiki.debian.org/RISC-V</ins></div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>   <del class="diffchange diffchange-inline">xzdec </del>-<del class="diffchange diffchange-inline">d stage4</del>-<del class="diffchange diffchange-inline">disk</del>.<del class="diffchange diffchange-inline">img</del>.xz <del class="diffchange diffchange-inline">&gt; stage4-disk.img</del></div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div> </div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline">=== Booting 64-bit Fedora ===</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>Download the <ins class="diffchange diffchange-inline">Fedora prebuilt images from: </ins>https://<ins class="diffchange diffchange-inline">dl.fedoraproject</ins>.org/<ins class="diffchange diffchange-inline">pub/alt</ins>/risc-v/<ins class="diffchange diffchange-inline">repo/virt-builder</ins>-images/<ins class="diffchange diffchange-inline">images/</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline">You will want to download Fedora-Minimal-Rawhide-*-fw_payload-uboot-qemu-virt-smode.elf and </ins>Fedora<ins class="diffchange diffchange-inline">-Minimal-Rawhide-*-sda.raw.xz </ins>images</div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div> </div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>Decompress the <ins class="diffchange diffchange-inline">rootFS</ins>:</div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>   <ins class="diffchange diffchange-inline">unxz Fedora-Minimal-Rawhide</ins>-<ins class="diffchange diffchange-inline">*</ins>-<ins class="diffchange diffchange-inline">sda</ins>.<ins class="diffchange diffchange-inline">raw</ins>.xz</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><br/></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><br/></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>Boot linux using RV64GC qemu:</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>Boot linux using RV64GC qemu:</div></td></tr> <tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l21">Line 21:</td> <td colspan="2" class="diff-lineno">Line 27:</td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>     -smp 4 \</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>     -smp 4 \</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>     -m 2G \</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>     -m 2G \</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>     -kernel <del class="diffchange diffchange-inline">bbl </del>\</div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>     -kernel <ins class="diffchange diffchange-inline">Fedora-Minimal-Rawhide-*-fw_payload-uboot-qemu-virt-smode.elf \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline">    -bios none </ins>\</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>     -object rng-random,filename=/dev/urandom,id=rng0 \</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>     -object rng-random,filename=/dev/urandom,id=rng0 \</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>     -device virtio-rng-device,rng=rng0 \</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>     -device virtio-rng-device,rng=rng0 \</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div><del class="diffchange">    -append "console=ttyS0 ro root=/dev/vda" \</del></div></td><td colspan="2" class="diff-side-added"></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>     -device virtio-blk-device,drive=hd0 \</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>     -device virtio-blk-device,drive=hd0 \</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>     -drive file=<del class="diffchange diffchange-inline">stage4</del>-<del class="diffchange diffchange-inline">disk</del>.<del class="diffchange diffchange-inline">img</del>,format=raw,id=hd0 \</div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>     -drive file=<ins class="diffchange diffchange-inline">Fedora</ins>-<ins class="diffchange diffchange-inline">Minimal-Rawhide-20200108.n.0-sda</ins>.<ins class="diffchange diffchange-inline">raw</ins>,format=raw,id=hd0 \</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>     -device virtio-net-device,netdev=usernet \</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>     -device virtio-net-device,netdev=usernet \</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>     -netdev user,id=usernet,hostfwd=tcp::10000-:22</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>     -netdev user,id=usernet,hostfwd=tcp::10000-:22</div></td></tr> <tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l32">Line 32:</td> <td colspan="2" class="diff-lineno">Line 38:</td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>* Login: root</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>* Login: root</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>* Password: riscv</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>* Password: riscv</div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">For more details on running Fedora see the Fedora Wiki: https://fedoraproject.org/wiki/Architectures/RISC-V/Installing</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">=== Booting 32-bit OpenEmbedded Images ===</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Follow the usual OpenEmbedded build flow using meta-riscv to build for the qemuriscv32 machine.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    MACHINE=qemuriscv32 bitbake core-image-minimal; runqemu qemuriscv32</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">More details on doing this can be found here: https://github.com/riscv/meta-riscv/#build-image</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">When using OpenEmbedded it is recommended to use the runqemu script to boot QEMU. It will dynamically handle display options as well as advanced networking.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">=== Booting 64-bit OpenEmbedded Images ===</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Follow the usual OpenEmbedded build flow using meta-riscv to build for the qemuriscv64 machine.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    MACHINE=qemuriscv64 bitbake core-image-minimal; runqemu qemuriscv64</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">More details on doing this can be found here: https://github.com/riscv/meta-riscv/#build-image</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">When using OpenEmbedded it is recommended to use the runqemu script to boot QEMU. It will dynamically handle display options as well as advanced networking.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">=== Booting 32-bit Buildroot Images ===</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Clone the Buildroot source code and cd into the directory.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Generate the default config:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  make qemu_riscv32_virt_defconfig</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Build the images</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  make</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Boot the images:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  qemu-system-riscv32 \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -M virt -nographic \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -bios output/images/fw_jump.elf \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -kernel output/images/Image \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -append "root=/dev/vda ro" \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -drive file=output/images/rootfs.ext2,format=raw,id=hd0 \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -device virtio-blk-device,drive=hd0 \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -netdev user,id=net0 -device virtio-net-device,netdev=net0</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">=== Booting 64-bit Buildroot Images ===</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Clone the Buildroot source code and cd into the directory.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Generate the default config:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  make qemu_riscv64_virt_defconfig</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Build the images</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  make</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Boot the images:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  qemu-system-riscv64 \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -M virt -nographic \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -bios output/images/fw_jump.elf \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -kernel output/images/Image \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -append "root=/dev/vda ro" \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -drive file=output/images/rootfs.ext2,format=raw,id=hd0 \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -device virtio-blk-device,drive=hd0 \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -netdev user,id=net0 -device virtio-net-device,netdev=net0</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">== Microchip PolarFire SoC Icicle Kit ==</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">QEMU 5.2.0 supports a new machine: Microchip PolarFire SoC Icicle Kit. The Icicle Kit board integrates a PolarFire SoC, with one SiFive's E51 plus four U54 cores and many on-chip peripherals and an FPGA.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">For more details about Microchip PolarFire Soc, please see:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">https://www.microsemi.com/product-directory/soc-fpgas/5498-polarfire-soc-fpga</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">The Icicle Kit board information can be found here:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">https://www.microsemi.com/existing-parts/parts/152514</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Boot the images:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  qemu-system-riscv64 -M microchip-icicle-kit -smp 5 \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -bios path/to/hss.bin -sd path/to/sdcard.img \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -nic user,model=cadence_gem \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -nic tap,ifname=tap,model=cadence_gem,script=no \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -display none -serial stdio \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -chardev socket,id=serial1,path=serial1.sock,server,wait \</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    -serial chardev:serial1</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">The BIOS image used by this machine is hss.bin, aka Hart Software Services, which can be built from: https://github.com/polarfire-soc/hart-software-services</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">QEMU does not support eMMC hence the SD configuration shall be used in the HSS and Yocto BSP build. The eMMC configuration is not supported.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Instructions to build HSS:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  $ cp boards/icicle-kit-es/def_config.sdcard .config</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  $ make BOARD=icicle-kit-es</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">The following commit of HSS was tested:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  commit 078ce16d8cb3a89e4c3e93916621b816dbdaa274</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  Merge: 76b34dd 2cd45c9</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  Author: Cyril-Jean &lt;cyril.jean@microchip.com></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  Date:  Fri Oct 9 17:07:12 2020 +0100</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  </ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    Merge pull request #7 from avpatel/custom_boot_flow_v1</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  </ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">    Custom boot flow for PolarFire boards</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">For Yocto build, "MACHINE=icicle-kit-es-sd" should be specified, otherwise when booting Linux kernel the rootfs cannot be mounted. The generated image is something like: mpfs-dev-cli-icicle-kit-es-sd.rootfs.wic. Resize the file with 'qemu-image' to a power of 2 before passing to QEMU '-sd' command line.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">The following commands download the official SD card image released by Microchip and prepare it for QEMU usage:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  $ wget ftp://ftpsoc.microsemi.com/outgoing/core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic.gz</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  $ gunzip core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic.gz</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  $ qemu-img resize core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic 4G</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">The memory is set to 1537 MiB by default which is the minimum required high memory size by HSS. A sanity check on ram size is performed in the machine init routine to prompt user to increase the RAM size to > 1537 MiB when less than 1537 MiB ram is detected.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">HSS output is on the first serial port (stdio) and U-Boot/Linux outputs on the 2nd serial port. OpenSBI outputs on a random serial port due to the lottery mechanism used during the multi-core boot.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">== Attaching GDB ==</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">To attach GDB to a QEMU RISC-V instance with only a single cluster (every machine except the sifive_u) run these commands from GDB:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  target extended-remote :1234</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  info threads</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">To attach GDB to a QEMU RISC-V instance with multiple clusters (the sifive_u) run these commands from GDB:</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  target extended-remote :1234</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  add-inferior</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  inferior 2</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  attach 2</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  set schedule-multiple</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">  info threads</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">The above commands assume the default GDB port exposed from QEMU of 1234. This will happen when you run QEMU with the '-s' command line argument.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">If you would like QEMU to not run the guest until you have connected GDB, you can specify the '-S' command line argument as well.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">== RISC-V Foundation Extensions ==</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">As RISC-V has a range of possible extensions, QEMU has guidelines for</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">supporting them all.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">If an extension is frozen or ratified by the RISC-V foundation, it can</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">be supported in QEMU. Generally we will try to support as many versions</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">as feasible, following the usual QEMU deprecation policy to remove old</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">versions.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">If an official RISC-V foundation extension is in a reasonable draft</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">state, that is not too many changes are still expected, it can be</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">supported experimentally by QEMU. Experimental support means it must</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">be disabled by default and marked with a "x-" in the CPU/board properties.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Draft extensions should also include the version information in the property.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Draft extensions can be enabled by specific CPUs or boards if the hardware</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">supports that extension.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">QEMU will only support the latest version of patches submitted for a draft</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">extension. A draft extension can also be removed at any time and does not</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">follow QEMU's deprecation policy.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">== RISC-V Custom Extensions/Instructions ==</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Support for custom instruction set extensions are an important part of RISC-V,</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">with large encoding spaces reserved of vendor extensions.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">QEMU follows similar rules to the RISC-V toolchain convention, as described</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">here: https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/17</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">QEMU will support vendor extensions. Vendor extensions must be</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">disabled by default, but can be enabled for specific vendor CPUs and</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">boards. The vendor extensions should use prefixes and names as described in</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">https://github.com/riscv-non-isa/riscv-toolchain-conventions</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Vendor extensions must be maintained and tested by the vendor. Upstream will</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">take efforts to not break extensions, but testing and bug fixes should be</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">done by the vendor. Patches to add support for open source toolchains are</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">unlikely to be accepted without specification documents being made available</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">publicly.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">Vendor extensions can not interfere with other extensions and can not</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">be obtrusive to the core RISC-V target code.</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange"></ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">If you are looking to add support for vendor extensions, it is recommended</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">that you get involved in the QEMU review process. It is also recommended that</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">you send your patches as early as possible to get community feedback before</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">they are fully implemented. This is especially important if you are modifying</ins></div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">core code.</ins></div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><br/></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><br/></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>== Links ==</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>== Links ==</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div><del class="diffchange">* [https://github.com/riscv/riscv-qemu/wiki github wiki]</del></div></td><td colspan="2" class="diff-side-added"></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>* [https://fedoraproject.org/wiki/Architectures/RISC-V Fedora RISC-V wiki]</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>* [https://fedoraproject.org/wiki/Architectures/RISC-V Fedora RISC-V wiki]</div></td></tr> <tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div><ins class="diffchange">* [https://github.com/riscv/meta-riscv/ OpenEmbedded meta-riscv]</ins></div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>* [https://www.youtube.com/watch?v=b5g8u3GA-lo Video: QEMU Support for the RISC-V Instruction Set Architecture]</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>* [https://www.youtube.com/watch?v=b5g8u3GA-lo Video: QEMU Support for the RISC-V Instruction Set Architecture]</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><br/></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><br/></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>== Contacts ==</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>== Contacts ==</div></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>Maintainers:</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>Maintainers:</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div><del class="diffchange">*[mailto:mjc@sifive.com Michael Clark]</del></div></td><td colspan="2" class="diff-side-added"></td></tr> <tr><td class="diff-marker"></td><td class="diff-context diff-side-deleted"><div>*[mailto:palmer@sifive.com Palmer Dabbelt]</div></td><td class="diff-marker"></td><td class="diff-context diff-side-added"><div>*[mailto:palmer@sifive.com Palmer Dabbelt]</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div>*[mailto:<del class="diffchange diffchange-inline">sagark@eecs</del>.<del class="diffchange diffchange-inline">berkeley.edu Sagar Karandikar]</del></div></td><td class="diff-marker" data-marker="+"></td><td class="diff-addedline diff-side-added"><div>*[mailto:<ins class="diffchange diffchange-inline">alistair</ins>.<ins class="diffchange diffchange-inline">francis</ins>@<ins class="diffchange diffchange-inline">wdc</ins>.<ins class="diffchange diffchange-inline">com Alistair Francis</ins>]</div></td></tr> <tr><td class="diff-marker" data-marker="−"></td><td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline">*[mailto:kbastian</del>@<del class="diffchange diffchange-inline">mail.uni-paderborn</del>.<del class="diffchange diffchange-inline">de Bastian Koppelmann</del>]</div></td><td colspan="2" class="diff-side-added"></td></tr> </table><hr class='diff-hr' id='mw-oldid' /> <h2 class='diff-currentversion-title'>Latest revision as of 03:02, 21 January 2022</h2> <div class="mw-parser-output"><mw:tocplace></mw:tocplace> <h2><span class="mw-headline" id="Description">Description</span></h2> <p>RISC-V is an open source instruction set. It is a modular with only a small set of mandatory instructions. Every other module might be implemented by vendors allowing RISC-V to be suitable for small embedded systems up to large supercomputers. </p> <h2><span class="mw-headline" id="Build_Directions">Build Directions</span></h2> <p>For RV64: </p> <pre> ./configure --target-list=riscv64-softmmu &amp;&amp; make </pre> <p>For RV32: </p> <pre> ./configure --target-list=riscv32-softmmu &amp;&amp; make </pre> <h2><span class="mw-headline" id="Booting_Linux">Booting Linux</span></h2> <h3><span class="mw-headline" id="Booting_64-bit_Debian">Booting 64-bit Debian</span></h3> <p>Follow the instructions on the Debian wiki to boot Debian on QEMU: <a rel="nofollow" class="external free" href="https://wiki.debian.org/RISC-V">https://wiki.debian.org/RISC-V</a> </p> <h3><span class="mw-headline" id="Booting_64-bit_Fedora">Booting 64-bit Fedora</span></h3> <p>Download the Fedora prebuilt images from: <a rel="nofollow" class="external free" href="https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/">https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/</a> You will want to download Fedora-Minimal-Rawhide-*-fw_payload-uboot-qemu-virt-smode.elf and Fedora-Minimal-Rawhide-*-sda.raw.xz images </p><p>Decompress the rootFS: </p> <pre> unxz Fedora-Minimal-Rawhide-*-sda.raw.xz </pre> <p>Boot linux using RV64GC qemu: </p> <pre> qemu-system-riscv64 \ -nographic \ -machine virt \ -smp 4 \ -m 2G \ -kernel Fedora-Minimal-Rawhide-*-fw_payload-uboot-qemu-virt-smode.elf \ -bios none \ -object rng-random,filename=/dev/urandom,id=rng0 \ -device virtio-rng-device,rng=rng0 \ -device virtio-blk-device,drive=hd0 \ -drive file=Fedora-Minimal-Rawhide-20200108.n.0-sda.raw,format=raw,id=hd0 \ -device virtio-net-device,netdev=usernet \ -netdev user,id=usernet,hostfwd=tcp::10000-:22 </pre> <ul><li>Login: root</li> <li>Password: riscv</li></ul> <p>For more details on running Fedora see the Fedora Wiki: <a rel="nofollow" class="external free" href="https://fedoraproject.org/wiki/Architectures/RISC-V/Installing">https://fedoraproject.org/wiki/Architectures/RISC-V/Installing</a> </p> <h3><span class="mw-headline" id="Booting_32-bit_OpenEmbedded_Images">Booting 32-bit OpenEmbedded Images</span></h3> <p>Follow the usual OpenEmbedded build flow using meta-riscv to build for the qemuriscv32 machine. </p> <pre> MACHINE=qemuriscv32 bitbake core-image-minimal; runqemu qemuriscv32 </pre> <p>More details on doing this can be found here: <a rel="nofollow" class="external free" href="https://github.com/riscv/meta-riscv/#build-image">https://github.com/riscv/meta-riscv/#build-image</a> </p><p>When using OpenEmbedded it is recommended to use the runqemu script to boot QEMU. It will dynamically handle display options as well as advanced networking. </p> <h3><span class="mw-headline" id="Booting_64-bit_OpenEmbedded_Images">Booting 64-bit OpenEmbedded Images</span></h3> <p>Follow the usual OpenEmbedded build flow using meta-riscv to build for the qemuriscv64 machine. </p> <pre> MACHINE=qemuriscv64 bitbake core-image-minimal; runqemu qemuriscv64 </pre> <p>More details on doing this can be found here: <a rel="nofollow" class="external free" href="https://github.com/riscv/meta-riscv/#build-image">https://github.com/riscv/meta-riscv/#build-image</a> </p><p>When using OpenEmbedded it is recommended to use the runqemu script to boot QEMU. It will dynamically handle display options as well as advanced networking. </p> <h3><span class="mw-headline" id="Booting_32-bit_Buildroot_Images">Booting 32-bit Buildroot Images</span></h3> <p>Clone the Buildroot source code and cd into the directory. </p><p>Generate the default config: </p> <pre> make qemu_riscv32_virt_defconfig </pre> <p>Build the images </p> <pre> make </pre> <p>Boot the images: </p> <pre> qemu-system-riscv32 \ -M virt -nographic \ -bios output/images/fw_jump.elf \ -kernel output/images/Image \ -append "root=/dev/vda ro" \ -drive file=output/images/rootfs.ext2,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -netdev user,id=net0 -device virtio-net-device,netdev=net0 </pre> <h3><span class="mw-headline" id="Booting_64-bit_Buildroot_Images">Booting 64-bit Buildroot Images</span></h3> <p>Clone the Buildroot source code and cd into the directory. </p><p>Generate the default config: </p> <pre> make qemu_riscv64_virt_defconfig </pre> <p>Build the images </p> <pre> make </pre> <p>Boot the images: </p> <pre> qemu-system-riscv64 \ -M virt -nographic \ -bios output/images/fw_jump.elf \ -kernel output/images/Image \ -append "root=/dev/vda ro" \ -drive file=output/images/rootfs.ext2,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -netdev user,id=net0 -device virtio-net-device,netdev=net0 </pre> <h2><span class="mw-headline" id="Microchip_PolarFire_SoC_Icicle_Kit">Microchip PolarFire SoC Icicle Kit</span></h2> <p>QEMU 5.2.0 supports a new machine: Microchip PolarFire SoC Icicle Kit. The Icicle Kit board integrates a PolarFire SoC, with one SiFive's E51 plus four U54 cores and many on-chip peripherals and an FPGA. </p><p>For more details about Microchip PolarFire Soc, please see: <a rel="nofollow" class="external free" href="https://www.microsemi.com/product-directory/soc-fpgas/5498-polarfire-soc-fpga">https://www.microsemi.com/product-directory/soc-fpgas/5498-polarfire-soc-fpga</a> </p><p>The Icicle Kit board information can be found here: <a rel="nofollow" class="external free" href="https://www.microsemi.com/existing-parts/parts/152514">https://www.microsemi.com/existing-parts/parts/152514</a> </p><p>Boot the images: </p> <pre> qemu-system-riscv64 -M microchip-icicle-kit -smp 5 \ -bios path/to/hss.bin -sd path/to/sdcard.img \ -nic user,model=cadence_gem \ -nic tap,ifname=tap,model=cadence_gem,script=no \ -display none -serial stdio \ -chardev socket,id=serial1,path=serial1.sock,server,wait \ -serial chardev:serial1 </pre> <p>The BIOS image used by this machine is hss.bin, aka Hart Software Services, which can be built from: <a rel="nofollow" class="external free" href="https://github.com/polarfire-soc/hart-software-services">https://github.com/polarfire-soc/hart-software-services</a> </p><p>QEMU does not support eMMC hence the SD configuration shall be used in the HSS and Yocto BSP build. The eMMC configuration is not supported. </p><p>Instructions to build HSS: </p> <pre> $ cp boards/icicle-kit-es/def_config.sdcard .config $ make BOARD=icicle-kit-es </pre> <p>The following commit of HSS was tested: </p> <pre> commit 078ce16d8cb3a89e4c3e93916621b816dbdaa274 Merge: 76b34dd 2cd45c9 Author: Cyril-Jean &lt;cyril.jean@microchip.com&gt; Date: Fri Oct 9 17:07:12 2020 +0100 Merge pull request #7 from avpatel/custom_boot_flow_v1 Custom boot flow for PolarFire boards </pre> <p>For Yocto build, "MACHINE=icicle-kit-es-sd" should be specified, otherwise when booting Linux kernel the rootfs cannot be mounted. The generated image is something like: mpfs-dev-cli-icicle-kit-es-sd.rootfs.wic. Resize the file with 'qemu-image' to a power of 2 before passing to QEMU '-sd' command line. </p><p>The following commands download the official SD card image released by Microchip and prepare it for QEMU usage: </p> <pre> $ wget <a rel="nofollow" class="external free" href="ftp://ftpsoc.microsemi.com/outgoing/core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic.gz">ftp://ftpsoc.microsemi.com/outgoing/core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic.gz</a> $ gunzip core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic.gz $ qemu-img resize core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic 4G </pre> <p>The memory is set to 1537 MiB by default which is the minimum required high memory size by HSS. A sanity check on ram size is performed in the machine init routine to prompt user to increase the RAM size to &gt; 1537 MiB when less than 1537 MiB ram is detected. </p><p>HSS output is on the first serial port (stdio) and U-Boot/Linux outputs on the 2nd serial port. OpenSBI outputs on a random serial port due to the lottery mechanism used during the multi-core boot. </p> <h2><span class="mw-headline" id="Attaching_GDB">Attaching GDB</span></h2> <p>To attach GDB to a QEMU RISC-V instance with only a single cluster (every machine except the sifive_u) run these commands from GDB: </p> <pre> target extended-remote :1234 info threads </pre> <p>To attach GDB to a QEMU RISC-V instance with multiple clusters (the sifive_u) run these commands from GDB: </p> <pre> target extended-remote :1234 add-inferior inferior 2 attach 2 set schedule-multiple info threads </pre> <p>The above commands assume the default GDB port exposed from QEMU of 1234. This will happen when you run QEMU with the '-s' command line argument. </p><p>If you would like QEMU to not run the guest until you have connected GDB, you can specify the '-S' command line argument as well. </p> <h2><span class="mw-headline" id="RISC-V_Foundation_Extensions">RISC-V Foundation Extensions</span></h2> <p>As RISC-V has a range of possible extensions, QEMU has guidelines for supporting them all. </p><p>If an extension is frozen or ratified by the RISC-V foundation, it can be supported in QEMU. Generally we will try to support as many versions as feasible, following the usual QEMU deprecation policy to remove old versions. </p><p>If an official RISC-V foundation extension is in a reasonable draft state, that is not too many changes are still expected, it can be supported experimentally by QEMU. Experimental support means it must be disabled by default and marked with a "x-" in the CPU/board properties. Draft extensions should also include the version information in the property. Draft extensions can be enabled by specific CPUs or boards if the hardware supports that extension. </p><p>QEMU will only support the latest version of patches submitted for a draft extension. A draft extension can also be removed at any time and does not follow QEMU's deprecation policy. </p> <h2><span id="RISC-V_Custom_Extensions.2FInstructions"></span><span class="mw-headline" id="RISC-V_Custom_Extensions/Instructions">RISC-V Custom Extensions/Instructions</span></h2> <p>Support for custom instruction set extensions are an important part of RISC-V, with large encoding spaces reserved of vendor extensions. </p><p>QEMU follows similar rules to the RISC-V toolchain convention, as described here: <a rel="nofollow" class="external free" href="https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/17">https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/17</a> </p><p>QEMU will support vendor extensions. Vendor extensions must be disabled by default, but can be enabled for specific vendor CPUs and boards. The vendor extensions should use prefixes and names as described in <a rel="nofollow" class="external free" href="https://github.com/riscv-non-isa/riscv-toolchain-conventions">https://github.com/riscv-non-isa/riscv-toolchain-conventions</a> </p><p>Vendor extensions must be maintained and tested by the vendor. Upstream will take efforts to not break extensions, but testing and bug fixes should be done by the vendor. Patches to add support for open source toolchains are unlikely to be accepted without specification documents being made available publicly. </p><p>Vendor extensions can not interfere with other extensions and can not be obtrusive to the core RISC-V target code. </p><p>If you are looking to add support for vendor extensions, it is recommended that you get involved in the QEMU review process. It is also recommended that you send your patches as early as possible to get community feedback before they are fully implemented. This is especially important if you are modifying core code. </p> <h2><span class="mw-headline" id="Links">Links</span></h2> <ul><li><a rel="nofollow" class="external text" href="https://fedoraproject.org/wiki/Architectures/RISC-V">Fedora RISC-V wiki</a></li> <li><a rel="nofollow" class="external text" href="https://github.com/riscv/meta-riscv/">OpenEmbedded meta-riscv</a></li> <li><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=b5g8u3GA-lo">Video: QEMU Support for the RISC-V Instruction Set Architecture</a></li></ul> <h2><span class="mw-headline" id="Contacts">Contacts</span></h2> <p>Maintainers: </p> <ul><li><a rel="nofollow" class="external text" href="mailto:palmer@sifive.com">Palmer Dabbelt</a></li> <li><a rel="nofollow" class="external text" href="mailto:alistair.francis@wdc.com">Alistair Francis</a></li></ul></div> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://wiki.qemu.org/index.php?title=Documentation/Platforms/RISCV&amp;oldid=10741">https://wiki.qemu.org/index.php?title=Documentation/Platforms/RISCV&amp;oldid=10741</a>"</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" role="contentinfo" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 21 January 2022, at 03:02.</li> <li id="footer-info-copyright">Content is available under <a class="external" rel="nofollow" href="http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt">GNU Free Documentation License 1.2</a>.<br />QEMU is a trademark of Fabrice Bellard.<br /></li> </ul> <ul id="footer-places"> <li id="footer-places-about"><a href="/QEMU:About">About QEMU</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"><img src="/resources/assets/licenses/gnu-fdl.png" alt="GNU Free Documentation License 1.2" width="88" height="31" loading="lazy"/></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/"><img src="/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/resources/assets/poweredby_mediawiki_132x47.png 1.5x, /resources/assets/poweredby_mediawiki_176x62.png 2x" width="88" height="31" loading="lazy"/></a></li> </ul> </footer> </div> </div> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgPageParseReport":{"limitreport":{"cputime":"0.016","walltime":"0.017","ppvisitednodes":{"value":44,"limit":1000000},"postexpandincludesize":{"value":0,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":2,"limit":100},"expensivefunctioncount":{"value":0,"limit":100},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":0,"limit":5000000},"timingprofile":["100.00% 0.000 1 -total"]},"cachereport":{"timestamp":"20250225170613","ttl":86400,"transientcontent":false}}});mw.config.set({"wgBackendResponseTime":265});});</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10