Part 1: Introduction




Overview

To begin your initiation into the world of operating system coding.







This section in especial is a supplement to the SigOps Introduction. Read it if you read nothing else from that set of tutorials.

Working with SPARC processors is of course a bit different than an i386 processor; however, you gain a few advantages:

  • No real mode v. protected mode. The machine only has one mode, and it can address all of its physical memory, to boot!
  • Functions in the PROM to write to the screen, determine your physical memory configuration, and figure out what kind of devices are attached to your workstation.
  • A Forth interpreter in PROM. Well, I think it's cool.
  • Debugging features in the PROM. The PROM even installs trap handlers during boot so that if a trap occurs, it will tell you the type and drop to the monitor, instead of just rebooting like its Intel counterpart.
Needless to say, the boot PROM in SPARCstations is rather cool. This attribute prompted the comment in the Linux source "The PROM is the computer."

Unfortunately, SPARC processors provide some interesting challenges when compared to i386 machines:

  • Noncontiguous physical memory. Unless your workstation has its maximum amount of memory, there will be gaps in the memory space. Even if you do have the maximum, don't depend on it, since you won't run on other machines then. Details of dealing with this obstacle will come later since its not important yet, as you have at least four megabytes at 0x0, which is enough to get started.
  • Load-store architecture. The only way you can access memory is through load or store instructions. This should not be too much of a concern though, since you won't be writing much assembly.
  • Register windows.
  • Branch delay slots. When the processor executes a call, branch, or jump instruction, the instruction after the call, branch, or jump always gets executed, regardless of whether the branch is taken.
  • No hardware-based context switching. You have to manage saving state, switching stacks, address spaces, etc. and make sure it all gets done in the right order.

Now, let me give you a bit of advice. If you want to have your operating system running on multiple architectures from the same codebase, decide that now because you will have to abstract the hardware a bit to do so. If you don't plan for a multiplatform codebase now, porting down the line will be difficult at best to impossible at worse without a complete rewrite. Trust me. I've rewritten my operating system thrice. The last was because of this problem.


Writing an Operating System for SPARC-Based Computers is Copyright © 1998 by Sidney Cammeresi in its entirety. All rights reserved.

Permission is granted to make verbatim copies of this tutorial for non-commercial use provided this notice remains intact on all copies.