Good day everyone. I'm taking a bit of a break from my documentation stuff and
veering back towards some embedded systems work and have the burning question on my mind
this morning: Was there any coordination between different groups engaged in porting
efforts at Bell regarding machine layer implementations?
In other words, was there any sort of common design of "get a stack pointer, do
<XYZ> on the protection hardware, move the binary to address <ABC>, clear bss,
etc." that was followed as lore when working up new machine bootstraps, or was that
sort of work a bit more siloed? For instance, when working on the VAX port, was the crew
more likely stepping through mch replicating things based on what the PDP-11 was doing,
was the startup more derived from DEC literature, or was there no single guiding principle
and each machine came up, at that level at least, in a relative vacuum, with only the
machine interface to UNIX being the guiding principle?
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. What I don't know is if
I'm barking up the wrong tree and it was already settled in the 70s that machines are
sufficiently different enough that you can't really just set forth one abstract
"machine startup" design that actually includes all those CPU-level concerns
such as protection, stack config, context switching, etc. I know even today peering into
sources of stuff like Linux and seL4, the "ml" for each seems to have been built
by a different person/group rather than someone setting out with a CPU bootstrap design
and implementing the same on each chip.
So boiled down to a one liner: Was there a guiding document/design/memoranda for the
mch/ml components of UNIX in Bell, or was each one designed more "on-the-fly" as
the particulars of the hardware were sorted out?
- Matt G.
Show replies by date