[TUHS] UNIX "Machine Layer" Standards

Paul Ruizendaal pnr at planet.nl
Fri Apr 21 01:57:29 AEST 2023

Hi Matt,

I’ve responded on list about the early unix development process as I understand it, but I want to avoid discussing things that are not directly related to the history of Unix. Hence this PM as well.
> Where I'm trying to put this sort of knowledge into use is I'm starting to spec out a kernel bootstrap for the RPi Pico and Pine64 Ox64 boards (ARM32 and RISCV64 respectively) that is not only sufficient to start a V7-ish kernel on each, but that are ultimately based on the same design, varying literally only where the hardware strictly necessitates it, but similar enough that reading the two assembly files side by side yields essentially the exact same discrete operations.

I have a similar interest, working with early Unix and modern RiscV hardware for a compare and contrast experience.

- My development targets are (i) an FPGA based RV32 SoC implementation, (ii) a Sipeed D1 RV64GC board and shortly (iii) a Pine64 Pinetab-V.

- My software targets are: (a) xv6-rv, (b) SysIII, (c) Linux, (d) experiments around SysIII

Linux is for me a secondary target, just for comparison and to see if ideas are “Linux capable”. I’m not overly interested in Arm at the moment.

My ideas are still evolving, but currently more or less along the below lines:

- Boot rom loads SPL, this is custom in each case and set by the SoC's designers.

- SPL initialises DRAM system and loads next stage. Unfortunately, this too would seem to be quite system specific, but the BSP should provide the baseline for this. As BSP’s are often a mess, milage may vary.

- The next stage is a hybrid of BBL, OpenSBI and Virtio. The idea is to provide a standard abstraction layer that all of my software targets can work with. This idea is used for the FPGA target and allows booting a Linux kernel with just the generic Virtio device drivers (so far just disk and console).

- The last layer is the classical OS layer. If I get it right, each OS can run on all h/w targets without customisation.

At the moment I’m playing with USB, and how that might layer into the structure of V7, SysIII or 8th Edition -- and also the above.

More information about the TUHS mailing list