Great. Does this mean the efforts to port the VSA code to a current
toolchain are obsolete?

On behalf of AMD, I would like to say that any such work would be gratefully accepted for our other Geode customers, but as far as OLPC is
concerned, VSA is nearly obsolete.  Of course, now its all in Forth, which
is just as incomprehensible to me - so the net effect is about the same. :)

The firmware component consists of a few large table of MSR#, MSR_VALUE pairs. The Forth content is incidental, essentially a 2-line loop that calls wrmsr on table entries, plus a conditional to modify a few registers depending on the memory size. The early startup MSR-slamming is done in assembly language, with a few simple macros to make it easy to say "write this value to this msr" without having to mention the same 3 register names over and over and over.

The values in the tables could have been derived from the PRS code, and in fact I used that to help check them.

The component that spoofs the PCI register access is likewise a big table that is processed by a few lines of code. I wrote and tested it in Forth, for use by OFW's PCI access, then transliterated it into C for use inside the Linux kernel. The C code consists of less than 30 lines of active code (not counting boilerplate like comments, declarations, blank lines, lines with just braces, etc).



_______________________________________________
Devel mailing list
[email protected]
http://mailman.laptop.org/mailman/listinfo/devel

Reply via email to