VAX-Linux Source Code

Right now, there's no single, good, known-working, cared-for source tree around. We'll probably manage to get the old sources updated to Linus's current version, but until then, only the old trees are available for reference.

Linux Kernel

The kernel needs a lot of forward-porting work. Once a number of important upstream changes are implemented, the rest shouldn't be too hard to do.

This is a tarball of one of my development machines at that time. It is probably from before the big breakage and it has slight chances to actually build. Though this needs to be verified.
This is the other tree. Though it's version (taken from Makefile is newer, I guess that this tree is broken (due to upstream memory management changes.) Contact Jan-Benedict Glaw <> about these two trees.
This tree is from Pekka Enberg <>, who said that he just did a "crude CVS import on top of v3.4".


Current Binutils should probably work without any additional patches, unless you want to use VAX Vector stuff. That's not implemented.


GCC's current HEAD (as of SVN/GIT) seems to mostly work. However, there are ICEs (Internal Compiler Errors) occassionally, which need investigation and/or fixes. No known bugs, but there are some for sure.

What's defitively missing right now it TLS (thread-local storage) support. It's not too easy to implement it well-supported on a VAX. Either you basically emulate all TLS calls, which is unneccessarily slow, or you waste a register as a TLS data pointer, which isn't good either, since the VAX only as 16 registers at all, with most of them having well-known fixed usage patterns.

This patch fixes an ICE in vax_output_int_add() where a simple operand RTX is expected, but ends up being a SUM of something. Kudos to some other guy whose name I cannot remember. Applied.

GNU libc

Maciej W. Rozycki <> has a somewhat working port of a not too-old GNU glibc finished. To get newer glibc versions up'n'running, some additional features need to get implemented: