Context

VSA, or Virtual System Architecture is a low-level software library included in the bootloader/BIOS for system using AMD Geode-series CPUs and companion chips.

AMD released VSA sources under the GNU LGPL in 2006. Those sources were hosted by the OLPC project, and can be pulled with git from git://dev.laptop.org/geode-vsa. The OpenVSA sources include modified Geode VSA sources, as well as some new components also released under the GNU LGPL.

The VSA code runs under x86 SMM (System Management Mode) which is like "real mode" with some extra opcodes, priviledges, and side-effects.

As originally published, the VSA code compiled and assembled with older, commercially unavailable versions of Microsoft tools. The OpenVSA code has been modified in order to build under a GNU toolchain so that it may be maintained and enhanced by a wider group of users.

Differences Between VSA and OpenVSA

Summary

Category

VSA

OpenVSA

Assembler

MASM 6.11c or greater

GNU gas (part of binutils)

Make

NMAKE.EXE Version 1.40 or greater

GNU make

C-compiler

MSVC Version 1.52

GNU gcc

Final binary output

exe2bin.exe

GNU objcopy (part of binutils)

Assembly syntax

Microsoft/Intel

GNU gas/AT&T

Code Generation

16-bit, inherent to the toolchain commands used during build

16-bit assembly, generated by using .code16 in assembly files; 32-bit from C, prefixes generated by using .code16gcc in C files

Memory Model

"tiny": merges CS and DS, inherent to the toolchain commands used during build