Use a much simpler endian-independent execute cache mechanism.
authorTaylor R Campbell <campbell@mumble.net>
Fri, 11 Jan 2019 06:35:27 +0000 (06:35 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Fri, 11 Jan 2019 07:15:37 +0000 (07:15 +0000)
commit1496f4c1d507dab5521309520de5c77ba3b5d82d
tree027bd3bc3c9bb2b9e9ee5b81def0f089a9480bed
parent779f5cb5931909f2101bf86dee45faec192ba5be
Use a much simpler endian-independent execute cache mechanism.

Requires no changes to the SVM1 byte code, so existing unlinked .com
files will continue to work (except for those created in the past
couple hours with my big-endian bodge that entailed no changes to the
little-endian hack), although built bands will confuse the microcode
because what cmpint stores in execute caches in memory changed.

- Before linking, an execution cache is simply the two words, as
  before on little-endian systems:

    <frame size> (fixnum)
    <name> (symbol)

- After linking, the frame size remains untouched and the name is
  replaced by the untagged address of the target:

    <frame size> (fixnum)
    <target> (untagged)

- INVOCATION:UUO-LINK now generates an (indirect-jump (pc-relative
  <cache>)) instruction, which already does the right thing:
  dereferences PC + offset to find a instruction address, and then
  jumps to that address.
src/compiler/machines/svm/assembler-runtime.scm
src/compiler/machines/svm/disassembler.scm
src/compiler/machines/svm/machine.scm
src/compiler/machines/svm/rules.scm
src/microcode/cmpintmd/svm1.c
src/microcode/cmpintmd/svm1.h