diff --git a/compiler/generic/new-genesis.lisp b/compiler/generic/new-genesis.lisp index f20a3a808ac8377d13157f0f626c61f506bb4cdb..311dabbd2258125e7504839be2c253beb6c4f5cd 100644 --- a/compiler/generic/new-genesis.lisp +++ b/compiler/generic/new-genesis.lisp @@ -4,7 +4,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.46 2002/04/07 00:14:13 pmai Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.47 2002/08/23 17:01:00 pmai Exp $") ;;; ;;; ********************************************************************** ;;; @@ -2143,6 +2143,7 @@ (defun emit-c-header-aux () (format t "/*~% * Machine generated header file. Do not edit.~% */~2%") (format t "#ifndef _INTERNALS_H_~%#define _INTERNALS_H_~2%") + ;; Write out various constants (let ((constants nil)) (do-external-symbols (symbol (find-package "VM")) (when (constantp symbol) @@ -2187,14 +2188,25 @@ (terpri) (setf prev-priority (second const))) (format t "#define ~A ~D~@[ /* ~A */~]~%" - (first const) (third const) (fourth const)))) - (terpri) - (format t "#define ERRORS { \\~%") - (loop - for info across (c:backend-internal-errors c:*backend*) - do (format t " ~S, \\~%" (cdr info))) - (format t " NULL \\~%}~%") - (terpri)) + (first const) (third const) (fourth const))))) + + ;; Write out internal error codes and error descriptions + (terpri) + (loop for (error-name . rest) across (c:backend-internal-errors c:*backend*) + for error-code from 0 + when error-name + do + (format t "#define ~A ~D~%" + (substitute #\_ #\- (symbol-name error-name)) + error-code)) + (terpri) + (format t "#define ERRORS { \\~%") + (loop for info across (c:backend-internal-errors c:*backend*) + do (format t " ~S, \\~%" (cdr info))) + (format t " NULL \\~%}~%") + + ;; Write out primitive object layouts + (terpri) (let ((structs (sort (copy-list vm:*primitive-objects*) #'string< :key #'(lambda (obj) (symbol-name @@ -2228,6 +2240,8 @@ (- (* (vm:slot-offset slot) vm:word-bytes) lowtag))) (terpri)))) (format t "#endif /* LANGUAGE_ASSEMBLY */~2%")) + + ;; Write out static symbols (dolist (symbol (cons nil vm:static-symbols)) (format t "#define ~A LISPOBJ(0x~X)~%" (nsubstitute #\_ #\- diff --git a/lisp/alpha-assem.S b/lisp/alpha-assem.S index dcd559665c65f99ca6b8a74f60a0835718887083..8427bf96a314165bfb28ef5f1cd2c55d9c2a98dc 100644 --- a/lisp/alpha-assem.S +++ b/lisp/alpha-assem.S @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alpha-assem.S,v 1.8 1999/02/20 15:54:43 pw Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alpha-assem.S,v 1.9 2002/08/23 17:01:00 pmai Exp $ */ #ifndef __linux__ #include <machine/regdef.h> #include <machine/pal.h> @@ -232,10 +232,13 @@ start_of_tramps: undefined_tramp = /* ### undefined_tramp_offset-call_into_lisp_LRA*/ 0x140+call_into_lisp_LRA_page undefined_tramp_offset: call_pal PAL_gentrap - .long 10 + .long trap_Error + /* Number of argument bytes */ .byte 4 - .byte 23 + .byte UNDEFINED_SYMBOL_ERROR + /* Escape to create 16bit BE number from following two values */ .byte 254 + /* SC_OFFSET(sc_DescriptorReg,reg_FDEFN) */ .byte (0xe0 + sc_DescriptorReg) .byte 2 .align 2 diff --git a/lisp/hppa-assem.S b/lisp/hppa-assem.S index 8ea05b7e10903709c0be22b4f4d809a7190be765..bc753725c8dcbb7a87a13cbdf4dd45baedf3d5ad 100644 --- a/lisp/hppa-assem.S +++ b/lisp/hppa-assem.S @@ -303,9 +303,13 @@ closure_tramp .EXPORT undefined_tramp undefined_tramp break trap_Error,0 + /* Number of argument bytes */ .byte 4 - .byte 23 + .byte UNDEFINED_SYMBOL_ERROR + /* Escape to create 16bit BE number from following two values */ .byte 254 + /* SC_OFFSET(sc_DescriptorReg,reg_LEXENV) */ + /* Shouldn't this be reg_FDEFN, instead? */ .byte (0x40 + sc_DescriptorReg) .byte 1 .align 4 diff --git a/lisp/hppa-assem.s b/lisp/hppa-assem.s index 74b8c50b50dbeadd0e8b5f063e40a5dbccab07ee..f021720de01ae278188937be3929409e92ab17cb 100644 --- a/lisp/hppa-assem.s +++ b/lisp/hppa-assem.s @@ -258,11 +258,15 @@ closure_tramp .EXPORT undefined_tramp undefined_tramp break trap_Error,0 - .byte 4 - .byte 23 - .byte 254 - .byte (0x40 + sc_DescriptorReg) - .byte 1 + /* Number of argument bytes */ + .byte 4 + .byte UNDEFINED_SYMBOL_ERROR + /* Escape to create 16bit BE number from following two values */ + .byte 254 + /* SC_OFFSET(sc_DescriptorReg,reg_LEXENV) */ + /* Shouldn't this be reg_FDEFN, instead? */ + .byte (0x40 + sc_DescriptorReg) + .byte 1 .align 4 diff --git a/lisp/lispregs.h b/lisp/lispregs.h index 5a912967918e0e1f972ac3442ad134dc77f5a68a..a9a69733956a500f86d0193fd5d1bd6c99c67f85 100644 --- a/lisp/lispregs.h +++ b/lisp/lispregs.h @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lispregs.h,v 1.3 1994/07/05 16:10:38 hallgren Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lispregs.h,v 1.4 2002/08/23 17:01:01 pmai Exp $ */ #if defined(mips) || defined(irix) #include "mips-lispregs.h" @@ -24,6 +24,9 @@ #include "alpha-lispregs.h" #endif +/* This matches the definition of sc-offset in code/debug-info.lisp */ +#define SC_OFFSET(sc,offset) (((offset) << 5) | (sc)) + #ifndef LANGUAGE_ASSEMBLY extern char *lisp_register_names[]; #endif diff --git a/lisp/mips-assem.S b/lisp/mips-assem.S index a91139e5e3ba26e02c2defa2e521c9226cf1c5f6..7b18409e9d658328d2dd191642b9e243cca8cced 100644 --- a/lisp/mips-assem.S +++ b/lisp/mips-assem.S @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/mips-assem.S,v 1.8 1998/03/10 20:39:50 dtc Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/mips-assem.S,v 1.9 2002/08/23 17:01:02 pmai Rel $ */ #ifdef mach #include <machine/regdef.h> #else @@ -273,16 +273,19 @@ start_of_tramps: .globl undefined_tramp .ent undefined_tramp undefined_tramp: - break 10 + break trap_Error #ifdef irix break 11 break 11 #else - .byte 4 - .byte 23 - .byte 254 - .byte (0xc0 + sc_DescriptorReg) - .byte 1 + /* Number of argument bytes */ + .byte 4 + .byte UNDEFINED_SYMBOL_ERROR + /* Escape to create 16bit BE number from following two values */ + .byte 254 + /* SC_OFFSET(sc_DescriptorReg,reg_FDEFN) */ + .byte (0xc0 + sc_DescriptorReg) + .byte 1 .align 2 #endif .end undefined_tramp diff --git a/lisp/sparc-assem.S b/lisp/sparc-assem.S index 6fed8b0723f596b769f78d60e7afc1cf04c5e703..9636ed8fd8bcf241be67ec6e98b400a1da386445 100644 --- a/lisp/sparc-assem.S +++ b/lisp/sparc-assem.S @@ -244,13 +244,14 @@ _undefined_tramp: b 1f unimp trap_Cerror - .byte 4 -#ifdef type_LongFloat - .byte 24 -#else - .byte 23 -#endif - .byte 254, sc_DescriptorReg, 3 + /* Number of argument bytes */ + .byte 4 + .byte UNDEFINED_SYMBOL_ERROR + /* Escape to create 16bit BE number from following two values */ + .byte 254 + /* SC_OFFSET(sc_DescriptorReg,reg_FDEFN) */ + .byte sc_DescriptorReg + .byte 3 .align 4 1: ld [reg_FDEFN+FDEFN_RAW_ADDR_OFFSET], reg_CODE diff --git a/lisp/x86-assem.S b/lisp/x86-assem.S index 8833b4ece5cf24e28c7073c6ec83c1fbe30f0068..5df5517fc744d9a10ed05c68b505f10809c20aef 100644 --- a/lisp/x86-assem.S +++ b/lisp/x86-assem.S @@ -1,6 +1,6 @@ ### x86-assem.S -*- Mode: Asm; -*- /** - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-assem.S,v 1.20 2002/01/28 20:17:12 pmai Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-assem.S,v 1.21 2002/08/23 17:01:02 pmai Exp $ * * Authors: Paul F. Werkowski <pw@snoopy.mv.com> * Douglas T. Crosher @@ -16,6 +16,7 @@ #define LANGUAGE_ASSEMBLY #include "internals.h" +#include "lispregs.h" #if defined __FreeBSD__ #include <osreldate.h> @@ -268,13 +269,11 @@ GNAME(fpu_restore): GNAME(undefined_tramp): int3 .byte trap_Error + /* Number of argument bytes */ .byte 2 -#ifdef type_LongFloat - .byte 24 -#else - .byte 23 -#endif - .byte sc_DescriptorReg # EAX in the Descriptor-reg SC. + .byte UNDEFINED_SYMBOL_ERROR + /* SC_OFFSET(sc_DescriptorReg,reg_EAX) */ + .byte SC_OFFSET(sc_DescriptorReg,0) ret .size GNAME(undefined_tramp), .-GNAME(undefined_tramp)