From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HTML_MESSAGE,MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 25085 invoked from network); 30 Dec 2022 18:24:54 -0000 Received: from minnie.tuhs.org (50.116.15.146) by inbox.vuxu.org with ESMTPUTF8; 30 Dec 2022 18:24:54 -0000 Received: from minnie.tuhs.org (localhost [IPv6:::1]) by minnie.tuhs.org (Postfix) with ESMTP id F1BA64235B; Sat, 31 Dec 2022 04:24:45 +1000 (AEST) Received: from ewsoutbound.kpnmail.nl (unknown [195.121.94.168]) by minnie.tuhs.org (Postfix) with ESMTPS id 8458441C80 for ; Sat, 31 Dec 2022 04:24:28 +1000 (AEST) X-KPN-MessageId: fca298d3-886e-11ed-956b-005056aba152 Received: from smtp.kpnmail.nl (unknown [10.31.155.40]) by ewsoutbound.so.kpn.org (Halon) with ESMTPS id fca298d3-886e-11ed-956b-005056aba152; Fri, 30 Dec 2022 19:22:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=planet.nl; s=planet01; h=date:to:message-id:subject:mime-version:content-type:from; bh=la7Ky86aYg+d/n8pT1mbe4HLnwC1OKBe20RIWCrU1IU=; b=RCbnoQXIlixKvWTOA40dh8Bl23d0uXah1GHCkqQgNPN5Zhfi4yaegbfOUTbpi2/1wr2KDXYgTXTRs Fi0UOOuk9c2yRpJejbFb1xBRJ4sA2wfXGt2Lp0bG2YK/C8k5/Ft8SX2EH40HPOtckyUXKVobkYTR43 OsUNNppby7ebM2H8= X-KPN-MID: 33|019ZNdeBLyUkE40Q1DgVjNWueNOvWqp1SeiLOYOW5KQHy7bEd8if9kj6zY1ah3e prY4gXVCMe+GLk6F2rsOxVQ== X-KPN-VerifiedSender: Yes X-CMASSUN: 33|fw/zWlHtvTEYlrACzQZVpHRHXfS12ODUNztIYDbmsv+KXvsl4Vy2UjU5uM4v0Om eXGTSSD3bY+Ps7zhS17f0lg== X-Originating-IP: 77.172.38.96 Received: from smtpclient.apple (77-172-38-96.fixed.kpn.net [77.172.38.96]) by smtp.kpnmail.nl (Halon) with ESMTPSA id 2b03b401-886f-11ed-927c-005056ab7584; Fri, 30 Dec 2022 19:24:16 +0100 (CET) From: Paul Ruizendaal Content-Type: multipart/alternative; boundary="Apple-Mail=_CCF5211F-6425-4F08-A4A3-349A15994C96" Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\)) Message-Id: References: To: The Eunuchs Hysterical Society Date: Fri, 30 Dec 2022 19:24:16 +0100 X-Mailer: Apple Mail (2.3654.120.0.1.13) Message-ID-Hash: I7AK46EMWSFWCP5RGEZ3WATRDEIPBXST X-Message-ID-Hash: I7AK46EMWSFWCP5RGEZ3WATRDEIPBXST X-MailFrom: pnr@planet.nl X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tuhs.tuhs.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.6b1 Precedence: list Subject: [TUHS] Fwd: Early Unix on (64-bit) Risc-V List-Id: The Unix Heritage Society mailing list Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --Apple-Mail=_CCF5211F-6425-4F08-A4A3-349A15994C96 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 During the past year I=E2=80=99ve worked on and off on porting Sys III. = My approach to studying ancient Unix is to port it to a new system, as = that forces one to consider many of the design trade-offs in a code = base. For 16 bit Unix I used the TI990 as a target, for the 1980-1985 = period I was thinking about a 68030 based board. However, in the end = using a Riscv based target seemed more interesting and that is what I = used (more specifically the 64-bit Allwinner D1 chip, for which several = cheap boards are available, along with Fabrice Ballard=E2=80=99s TinyEMU = for simulation). In general, my approach was to first select a toolchain and I settled = on the Plan9 compiler suite, with the Riscv backend as done by Richard = Miller, used together with a library that enabled using this tool chain = on modern Unix. This I then used to port the educational XV6 system to = the D1 chip, building on work done by Michael Engel. =46rom there I = ported the SysIII kernel (reusing some bits of XV6 memory code), = initially using the XV6 user land. =46rom there I went on to port the = original SysIII user land. Much to my surprise, the original SysIII code = can support the Plan 9 tool chain, just a dozen standard libc routines = needed to be added to give this SysIII port a native compiler. There is a lot to report, and I will split it over several posts = covering different aspects. I hope that this will not be perceived as = spamming this list. The topics are: 1. Riscv, Plan-9 and a toolchain 2. Porting the SysIII kernel: first steps & memory management 3. Porting the SysIII kernel: boot, config & device drivers 4. A few comments on porting the Bourne shell 5. Xv6, Linux and SysIII on a RV32 FPGA system For those who just want to see the results, the tool chain is here: https://gitlab.com/pnru/riscv-kencc And the SysIII port is here: https://gitlab.com/pnru/SysIII_rv64 > Begin forwarded message: >=20 > From: Paul Ruizendaal > Subject: Early Unix on (64-bit) Risc-V > Date: December 22, 2022 at 11:55:04 AM GMT+1 > To: The Eunuchs Hysterical Society > Cc: athornton@gmail.com, davida@pobox.com, luther@makerlisp.com >=20 >=20 > Adam Thorton wrote: >=20 >> I mean all I really want for Christmas is a 64-bit v7 with TCP/IP = support, a screen editor, and SMP support. >>=20 >> The third one is a solved problem. The second one would not be that = hard to adapt, say, uIP 0.9, to v7. That first one would require some = work with C type sizes, but getting larger is easier than the reverse. = It's that last one. >>=20 >> Having said that...maybe what I really want is 64-bit 4.3 BSD? >>=20 >> I mean, just a Unix, without all the cruft of a modern Linux, but = which can actually take advantage of the resources of a modern machine. = I don't care about a desktop, or even a graphical environment, I don't = care about all the strange syscalls that are there to support particular = databases, I don't care much about being a virtualization host. >=20 > Luther Johnson wrote: >=20 >> I'm in the process of building a system like that for myself, but=20 >> perhaps a little smaller - mine will be based on an embedded=20 >> microprocessor I've developed (so much work still yet to do ! at = least a=20 >> year out). >=20 > Earlier this year I ported VAX System III to Risc-V, to a simple = Allwinner D1 based SBC. This is RV64GC. Just ported to the console = terminal. >=20 > It turned out that porting Sys III to 64 bit was surprisingly easy, = most of the kernel and user land appears to be 64 bit clean. It helps = that I am using a LLP64 compiler, though. Apart from networking Sys III = also feels surprisingly modern (for an ancient Unix) - its should get = more attention than it does. The hardest work was in porting the VAX = memory code to Risc-V page tables (and to a lesser extent, updating libc = for the different FP formats). >=20 > The code is currently in an ugly state (with debug stuff in = commented-out blocks, a mix of ansi and K&R styles, an incoherent kludgy = build system, etc.) and the shame stopped me from putting it out on = gitlab until I found enough time to clean this up. As there seems to be = some interest now, I=E2=80=99ll put it up anyway in the next week or so. = There you go Adam, half your wish comes true. >=20 > The kernel is about 60KB and most binaries are quite close in size to = the VAX equivalents. >=20 > My next goals for it are to re-implement the Reiser demand paging (I = think I have a good enough view of how that worked, but the proof of the = pudding will be in the eating), and to add TCP/IP networking, probably = the BBN stack. Making it work on RV32 and exploring early SMP work is = also on my interest list. >=20 > =3D=3D=3D >=20 > David Arnold wrote: >=20 >> I think xv6 does SMP? (param.h says NCPU =3D 8, at least). >>=20 >> You=E2=80=99d need to add a network stack and a userland, but there = are options for those =E2=80=A6 >=20 > For the above, making xv6 work on the D1 board was my first stepping = stone, to proof the tool chain and to get the basics right (hardware = init, low-level I/O, etc.). >=20 > As an educational tool, I am sure that xv6 hits all the right spots, = and it certainly does SMP (the D1 is single hart, so I have not tried = that myself). I like it a lot in that context. However, as a simple Unix = it is useless: from a user-land view it is less capable than LSX. At = minimum it needs fixes to make the file system less constrained. >=20 > In my view, for SMP Keith Kelleman=E2=80=99s work for Sys-V is = probably a better place to start. >=20 --Apple-Mail=_CCF5211F-6425-4F08-A4A3-349A15994C96 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
During the past year I=E2=80=99ve worked on and off on = porting Sys III. My approach to studying ancient Unix is to port it to a = new system, as that forces one to consider many of the design trade-offs = in a code base. For 16 bit Unix I used the TI990 as a target, for the = 1980-1985 period I was thinking about a 68030 based board. However, in = the end using a Riscv based target seemed more interesting and that is = what I used (more specifically the 64-bit Allwinner D1 chip, for which = several cheap boards are available, along with Fabrice Ballard=E2=80=99s = TinyEMU for simulation).

In general, my approach was to first select  a toolchain = and I settled on the Plan9 compiler suite, with the Riscv backend as = done by Richard Miller, used together with a library that enabled using = this tool chain on modern Unix. This I then used to port the educational = XV6 system to the D1 chip, building on work done by Michael Engel. =46rom = there I ported the SysIII kernel (reusing some bits of XV6 memory code), = initially using the XV6 user land. =46rom there I went on to port the = original SysIII user land. Much to my surprise, the original SysIII code = can support the Plan 9 tool chain, just a dozen standard libc routines = needed to be added to give this SysIII port a native compiler.

There is a lot to = report, and I will split it over several posts covering different = aspects. I hope that this will not be perceived as spamming this list. = The topics are:

1. Riscv, Plan-9 and a toolchain

2. Porting the SysIII kernel: first = steps & memory management

3. Porting the SysIII kernel: = boot, config & device drivers

4. A few comments on porting the Bourne = shell

5. Xv6, = Linux and SysIII on a RV32 FPGA system

For those who just want to see the = results, the tool chain is here:


And the SysIII port is = here:



Begin forwarded message:

From: = Paul Ruizendaal <pnr@planet.nl>
Subject: = Early Unix on = (64-bit) Risc-V
Date: December 22, 2022 at 11:55:04 AM GMT+1
To: = The Eunuchs Hysterical Society = <tuhs@tuhs.org>


Adam Thorton = wrote:

I= mean all I really want for Christmas is a 64-bit v7 with TCP/IP = support, a screen editor, and SMP support.

The third one is a solved problem.  The second one would = not be that hard to adapt, say, uIP 0.9, to v7.  That first one = would require some work with C type sizes, but getting larger is easier = than the reverse.  It's that last one.

Having said that...maybe what I really want is 64-bit 4.3 = BSD?

I mean, just a Unix, without all the = cruft of a modern Linux, but which can actually take advantage of the = resources of a modern machine.  I don't care about a desktop, or = even a graphical environment, I don't care about all the strange = syscalls that are there to support particular databases, I don't care = much about being a virtualization host.

Luther Johnson wrote:

I'm in the process of building a system like = that for myself, but
perhaps a little smaller - mine will = be based on an embedded
microprocessor I've developed (so = much work still yet to do ! at least a
year out).

Earlier this year I ported VAX = System III to Risc-V, to a simple Allwinner D1 based SBC. This is = RV64GC. Just ported to the console terminal.

It turned out that porting Sys III to 64 bit was surprisingly = easy, most of the kernel and user land appears to be 64 bit clean. It = helps that I am using a LLP64 compiler, though. Apart from networking = Sys III also feels surprisingly modern (for an ancient Unix) - its = should get more attention than it does. The hardest work was in porting = the VAX memory code to Risc-V page tables (and to a lesser extent, = updating libc for the different FP formats).

The code is currently in an ugly state (with debug stuff in = commented-out blocks, a mix of ansi and K&R styles, an incoherent = kludgy build system, etc.) and the shame stopped me from putting it out = on gitlab until I found enough time to clean this up. As there seems to = be some interest now, I=E2=80=99ll put it up anyway in the next week or = so. There you go Adam, half your wish comes true.

The kernel is about 60KB and most binaries are quite close in = size to the VAX equivalents.

My next goals = for it are to re-implement the Reiser demand paging (I think I have a = good enough view of how that worked, but the proof of the pudding will = be in the eating), and to add TCP/IP networking, probably the BBN stack. = Making it work on RV32 and exploring early SMP work is also on my = interest list.

=3D=3D=3D

David Arnold wrote:

I think xv6 does SMP?  (param.h says NCPU = =3D 8, at least).

You=E2=80=99d need to add = a network stack and a userland, but there are options for those =E2=80=A6<= br class=3D"">

For the above, making xv6 work = on the D1 board was my first stepping stone, to proof the tool chain and = to get the basics right (hardware init, low-level I/O, etc.).

As an educational tool, I am sure that xv6 = hits all the right spots, and it certainly does SMP (the D1 is single = hart, so I have not tried that myself). I like it a lot in that context. = However, as a simple Unix it is useless: from a user-land view it is = less capable than LSX. At minimum it needs fixes to make the file system = less constrained.

In my view, for SMP Keith = Kelleman=E2=80=99s work for Sys-V is probably a better place to = start.


= --Apple-Mail=_CCF5211F-6425-4F08-A4A3-349A15994C96--