Skip to content

Xv6 for RISC-V (ported to rv32im) equipped with some basic networking stuffs.

License

Notifications You must be signed in to change notification settings

joehattori/xv6-rv32im

 
 

Repository files navigation

What is this?

This is a ported version of xv6-riscv to rv32im, equipped with some network stacks. Ethernet, IP, ARP, DNS resolving, UDP, TCP, and HTTP is (partly and roughly) implemented. TCP implementation is based on https://github.com/pandax381/microps. Also using This repo by MIT as a reference.

How to start shell on qemu

After installing some RISC-V tools,

$ make qemu

should start the shell for xv6 in qemu environment. Otherwise,

$ make run-docker

pulls a docker image with necessary tools and starts a container.

curl

curl-like program runs! It prints the response of the GET request to the specified url.

$ make qemu
# in qemu environment
$ curl example.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 575273
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Wed, 03 Mar 2021 01:19:10 GMT
Etag: "3147526947"
Expires: Wed, 10 Mar 2021 01:19:10 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (sjc/4E73)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
...

Currently HTTPS is not supported.

About

Xv6 for RISC-V (ported to rv32im) equipped with some basic networking stuffs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 89.5%
  • C++ 5.5%
  • Assembly 2.7%
  • Makefile 1.8%
  • Python 0.3%
  • Perl 0.2%