From: Nikodemus S. <de...@us...> - 2006-12-05 15:46:24
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv6017/src/runtime Modified Files: mips-assem.S ppc-assem.S sparc-assem.S Log Message: 1.0.0.21: fix build on PPC -- breakage from XREF commit * Less offset hardcoding in ppc-assem.S, missing xrefs "slot" in undefined_tramp and funcallable_instance_tramp. * Also adjust mips-assem.S and sparc-assem.S for the new simple-fun layout: add xrefs "slot" to undefined_tramp, closure_tramp, and funcallable_instance_tramp. UNTESTED! * Explain what the _OFFSETs are in generated header files. Index: mips-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/mips-assem.S,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- mips-assem.S 6 Oct 2006 10:54:16 -0000 1.16 +++ mips-assem.S 5 Dec 2006 15:46:18 -0000 1.17 @@ -374,13 +374,14 @@ .word NIL /* name */ .word NIL /* arglist */ .word NIL /* type */ + .word NIL /* xrefs */ LEAF(undefined_tramp) /* Point reg_CODE to the header and tag it as function, since the debugger regards a function pointer in reg_CODE which doesn't point to a code object as undefined function. */ lui reg_CODE, %hi(undefined_tramp) addiu reg_CODE, %lo(undefined_tramp) - addiu reg_CODE, - 24 + FUN_POINTER_LOWTAG + addiu reg_CODE, -SIMPLE_FUN_CODE_OFFSET .set noreorder b 1f break 0x0, trap_Cerror @@ -413,6 +414,7 @@ .word NIL /* name */ .word NIL /* arglist */ .word NIL /* type */ + .word NIL /* xrefs */ LEAF(closure_tramp) lw reg_LEXENV, FDEFN_FUN_OFFSET(reg_FDEFN) lw reg_CODE, CLOSURE_FUN_OFFSET(reg_LEXENV) @@ -432,6 +434,7 @@ .word NIL .word NIL .word NIL + .word NIL lw reg_LEXENV, FUNCALLABLE_INSTANCE_FUNCTION_OFFSET(reg_LEXENV) lw reg_CODE, CLOSURE_FUN_OFFSET(reg_LEXENV) Index: ppc-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/ppc-assem.S,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- ppc-assem.S 26 Nov 2006 22:16:34 -0000 1.11 +++ ppc-assem.S 5 Dec 2006 15:46:18 -0000 1.12 @@ -346,7 +346,7 @@ /* Function is an indirect closure */ lwz reg_CODE,SIMPLE_FUN_SELF_OFFSET(reg_LEXENV) - addi reg_LIP,reg_CODE,6*4-FUN_POINTER_LOWTAG + addi reg_LIP,reg_CODE,SIMPLE_FUN_CODE_OFFSET mtctr reg_LIP slwi reg_NARGS,reg_NL2,2 bctr @@ -522,13 +522,14 @@ .long NIL /* name */ .long NIL /* arglist */ .long NIL /* type */ + .long NIL /* xref */ CSYMBOL(undefined_tramp): /* Point reg_CODE to the header and tag it as function, since the debugger regards a function pointer in reg_CODE which doesn't point to a code object as undefined function. */ bcl 20,31,.+4 /* get address of the next instruction */ - mflr reg_CODE /* header is 7 words back from here */ - addi reg_CODE,reg_CODE,-7*4+FUN_POINTER_LOWTAG + mflr reg_CODE /* header 1 extra word back from here */ + addi reg_CODE,reg_CODE,-(SIMPLE_FUN_CODE_OFFSET+4) twllei reg_ZERO,trap_Cerror .byte 4 @@ -566,6 +567,7 @@ .long NIL .long NIL .long NIL + .long NIL lwz reg_LEXENV,FUNCALLABLE_INSTANCE_FUNCTION_OFFSET(reg_LEXENV) lwz reg_FDEFN,CLOSURE_FUN_OFFSET(reg_LEXENV) addi reg_LIP,reg_FDEFN,SIMPLE_FUN_CODE_OFFSET Index: sparc-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/sparc-assem.S,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- sparc-assem.S 6 Oct 2006 10:54:16 -0000 1.8 +++ sparc-assem.S 5 Dec 2006 15:46:19 -0000 1.9 @@ -213,6 +213,7 @@ .word NIL .word NIL .word NIL + .word NIL b 1f unimp trap_Cerror @@ -237,6 +238,7 @@ .word NIL .word NIL .word NIL + .word NIL ld [reg_FDEFN+FDEFN_FUN_OFFSET], reg_LEXENV ld [reg_LEXENV+CLOSURE_FUN_OFFSET], reg_CODE @@ -253,6 +255,7 @@ .word NIL .word NIL .word NIL + .word NIL ld [reg_LEXENV+FUNCALLABLE_INSTANCE_FUNCTION_OFFSET], reg_LEXENV ld [reg_LEXENV+CLOSURE_FUN_OFFSET], reg_CODE |