|
|
1.1 ! root 1: The following was a change log of the CCI "tahoe" porting. ! 2: ! 3: ! 4: 04/27 Rewrote fixmask.c to properly preserve r6 and r7. This method used should ! 5: have been used for the Vax; as it was, one had to count the number of register ! 6: variables declared in a function, and fixmask rebuilt the savemask from ! 7: scratch. This was a little bit kludgey; the new version simply OR's in ! 8: the two registers into the mask. ! 9: ! 10: 04/29 Replaced assembly version of exarith() with exarith.c from the 68k port, ! 11: with the call to emul() replaced my an asm(). Still slower than original vax. ! 12: ! 13: 05/02 Repaired fixpbig.e, the sed(1) script that replaces certain function ! 14: calls with inline code and fast subroutine calls (the vax "jsb"), as well ! 15: as changing all references to "np" and "lbot" to r6 and r7. The fast calls ! 16: are gone, because the tahoe isn't capable of such things. The rest were ! 17: changed to reflect different calling strategies. ! 18: ! 19: 08/29 Added an "#ifdef tahoe" to alloc.c which uses the original "ftstbit" ! 20: and "setbit" macros included in the source. The vax version uses asm()'s, ! 21: but I don't know the instruction set of the tahoe well enough to improve ! 22: on the macros' code. ! 23: ! 24: 09/04-09/08 Replaced more functions from bigmath.c with C versions from the ! 25: 68k port. ediv() and emul() calls were replaced with more asm's. Others were ! 26: moved into their own source files and used as they were. ! 27: ! 28: 09/10 Replaced Pushframe() and Iretfromfr(). The original Pushframe depended ! 29: on being called by a jsb. The new version makes the best of what it can ! 30: get from the standard call frame, and changes it around to match what's needed ! 31: (as specified in frame.h). Iretfromfr() was moved from frame.c, and had ! 32: asm's added to replace the qfunction it called. This basically just undoes ! 33: Pushframe(). ! 34: ! 35: 09/10 GOT RAWLISP RUNNING! Version as of this afternoon would print a banner ! 36: and allow one to eval a few S-expressions. Problems seem to include: stringing ! 37: back through the stack frames, ediv reserved opperands, who knows what else. ! 38: ! 39: 09/18 Ediv requires that all of its arguments be registers. (Except for the ! 40: divisor, I think.) Very poorly documented. (as(1) doesn't compain. adb(1) ! 41: disassembles it properly. The architecture manual gives no indication of this.) ! 42: Now one can type numbers into the reader without getting a core dump, and ! 43: even do simple fixnum arithmetic. ! 44: ! 45: 09/18 Due to a typo Iretfromfr() was putting the old value of fp into r12 ! 46: and not restoring fp at all. I don't yet know what problems this was causing. ! 47: ! 48: 09/18 /lib/c2 is optimizing away the "fixpbig.e" substitution of ! 49: calls to sp() ==> "movl sp,d0". Since "sp" is not a valid second ! 50: argument to subl3 (again no assembler complaints), another illegal instruction ! 51: core dump occurrs. Fixed by replacing "movl sp,d0" with "moval (sp),d0". ! 52: ! 53: 09/18 I can't figure out WHAT ediv's opperands are allowed to be. I'll ! 54: just fix those asm()'s until everyting works. ! 55: ! 56: 09/18 Bignum division problems: ! 57: ;; On a vax: ! 58: Franz Lisp, Opus 38.79 ! 59: -> (quotient 999999999999 25) ! 60: 39999999999 ! 61: -> ! 62: ;; On the tahoe: ! 63: Franz Lisp, Opus 38 ! 64: -> (quotient 999999999999 25) ! 65: 198085033769738295431766579 ! 66: -> ! 67: ! 68: 09/18 /lib/c2 was optimizing away another set of asm() constructs - in ! 69: this case the setting of r0 to the error frame location. "retfrom.s" is ! 70: the new, replaced version of Iretfromfr(). ! 71: ! 72: 09/23 the ER% variables are not being correctly set to nil. ! 73: Cf. "sysat.c". Created raw.l to setq them, and discovered in ! 74: the process that semicolon hasn't got its readmacro properties ! 75: set up right. Flonums don't print correctly (always as ".0") ! 76: but seem to be capable of being added and comparred correctly. ! 77: ! 78: 09/24 Went through lots of code and found that the ER% variables ! 79: ARE being set correctly. The garbage collector, however, seems to be ! 80: trying to trash them and return them to the freelist, therefore their ! 81: value cells are being turned into freelist pointers. Removing the sweep ! 82: phase from gc1() seems to remove both this problem and the spontaneous ! 83: readtable disappearance. The 'ftstbit' and 'setbit' macros are suspected ! 84: as being the culprits. ! 85: ! 86: 09/24 Still suspecting something about the marking phase of gc1(). The ! 87: dumps looked awfully suspicious. ! 88: ! 89: 09/25 The marking phase, and in particular the bitset macros, were probably ! 90: indeed at fault. The macros used the ordinary Motorola-type non-reversed ! 91: byte order, while the code that read the bitmaps had been rewritten since ! 92: they had, and used the Vax reversed byte order. Rewrote the macros to ! 93: no longer use bytes. ! 94: ! 95: 09/25 Created "snlisp", the totally interpreted version of Franz. Works ! 96: fine except for the previously known bignum division bug and for cfasl'd ! 97: functions. ! 98: ! 99: 09/26 Fixed cfasl'd function error. callg_() was pushing its arglist ! 100: onto the stack in reverse order. ! 101: ! 102: 09/30 Reworked int:showstack, and added it to snlisp. A real mess (even ! 103: worse than it was before for the vax). ! 104: ! 105: 09/30 Fixed the bignum division bug. In mlsb() a function call was incorrectly ! 106: translated into an asm("ediv..."). This is the last known Franz bug as ! 107: of now. ! 108: ! 109: 10/23 RCS'd Liszt, and conditionalized it for the tahoe. Should work ! 110: identically as before, as a VAX cross-compiler. As a tahoe native compiler, ! 111: it still needs some work. ! 112: ! 113: 11/08 Discovered that a problem with Liszt was that fixnum subtractions were ! 114: not being done properly due to a ***SEVERELY BRAIN DAMAGED BROKEN EMUL ! 115: INSTRUCTION***. Turned faulty emul instructions into calls to emul() ! 116: which replaces the sign-extend-and-add functionality of the emul instruction ! 117: with a manual 64-bit add. Bignum divisions resulting in a negative number ! 118: were broken too. ! 119: ! 120: 11/10 Changed predecrement and postincrement modes in the compiler to make ! 121: up for the lack of same in the Tahoe instruction set. ! 122: ! 123: 11/13 ** Found that the emul instruction problem was present only in the old ! 124: WCS**. When the machine was rebooted this afternoon the problem went away. ! 125: Calls to emul() will be turned back into asm's. ! 126: ! 127: 11/14 Changed Lfasl() so that relocation of addresses works when an address ! 128: is not longword aligned. Also cleaned up the indentation. ! 129: ! 130: 11/16 Fixed Liszt and changed qlinker() to change the method of function ! 131: linkage, again because of alignment problems. ! 132: ! 133: 11/18 General repairs to fasl.c, and fixed a stupid quotemark typo (on my ! 134: part) in Liszt. Tried to port /usr/lib/lisp/autorun/tahoe. ! 135: ! 136: 12/5 Made various changes to liszt. Output works mostly most of the time, ! 137: but some things (read: nliszt) dump core. ! 138: ! 139: 12/8 Fixed liszt and qfuncl.c to remove shal instrucitons with negative ! 140: arguments, since these indescriminately mess up their opperands somehow. ! 141: Also changed subl2 in /usr/lib/lisp/autorun/tahoe with destination ! 142: sp, because subl2 doesn't seem to work on r14. r14 doesn't work as a source ! 143: opperand to movl either. Beats me why, I just fix 'em 'till they work. ! 144: ! 145: 12/11 Looking for a bug which causes nliszt to bomb on any functions with ! 146: more than one argument. ! 147: ! 148: 12/13 Above bug was caused by yet another missed postincrement instance. ! 149: Moved the postincrement handling around. Also ported code to handle &form ! 150: variable arguments. ! 151: ! 152: 12/14 Repaired code for (\\ x y)... compiled output did an ashq and an ediv ! 153: on an odd register. ! 154: ! 155: 12/16 Fixed a missed register save mask in one of the qfuncls. Added a missed ! 156: ".align" to the code that handles &forms. ! 157: ! 158: 12/17 Added r12 to qlinker's save mask. Added register mask for local functions ! 159: since they are now being called with calls's. ! 160: ! 161: 12/18 Added register save masks to local functions. ! 162: ! 163: 01/12 The _tynames table didn't have a necessary ".align 2" before it. This ! 164: was messing up compiled functions that called typep (causing align faults). ! 165: ! 166:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.