X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fppc-assem.S;h=28fe4731b641154245f1906f7fb23b69642eaea4;hb=559d0ded238d8ec852fcd485656ef14578fc405f;hp=de3653808b4c629436107f3b9660bc2f0cd0c49b;hpb=506253505641855dc8bb87033f7af894904f848b;p=sbcl.git diff --git a/src/runtime/ppc-assem.S b/src/runtime/ppc-assem.S index de36538..28fe473 100644 --- a/src/runtime/ppc-assem.S +++ b/src/runtime/ppc-assem.S @@ -9,13 +9,13 @@ #include "genesis/closure.h" #include "genesis/static-symbols.h" -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN #define CSYMBOL(x) _ ## x #else #define CSYMBOL(x) x #endif -#if defined DARWIN +#if defined LISP_FEATURE_DARWIN #define FUNCDEF(x) .text @ \ .align 3 @ \ _##x: @@ -32,7 +32,7 @@ x: FUNCDEF(x) #endif -#if defined DARWIN +#if defined LISP_FEATURE_DARWIN #define SET_SIZE(x) #else #define SET_SIZE(x) .size x,.-x @@ -41,7 +41,7 @@ x: /* Load a register from a global, using the register as an intermediary */ /* The register will be a fixnum for one instruction, so this is gc-safe */ -#if defined DARWIN +#if defined LISP_FEATURE_DARWIN #define load(reg,global) \ lis reg,ha16(global) @ \ lwz reg,lo16(global)(reg) ; Comment @@ -56,7 +56,7 @@ x: #endif #define FIRST_SAVE_FPR 14 /* lowest-numbered non-volatile FPR */ -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN #define FIRST_SAVE_GPR 13 /* lowest-numbered non-volatile GPR */ #define NGPR_SAVE_BYTES(n) ((32-(n))*4) #define FRAME_ARG_BYTES(n) (((((n)+6)*4)+15)&~15) @@ -67,12 +67,12 @@ x: #endif #define NFPR_SAVE_BYTES(n) ((32-(n))*8) -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN #define FRAME_SIZE(first_g,first_f,out_arg_words,savecr) \ (NFPR_SAVE_BYTES(first_f)+ NGPR_SAVE_BYTES(first_g)+ FRAME_ARG_BYTES(out_arg_words)) #define SAVE_FPR(n) stfd f##n,-8*(32- n)(r11) #define SAVE_GPR(n) stw r##n,-4*(32- n)(r11) -#define FULL_FRAME_SIZE FRAME_SIZE(FIRST_SAVE_GPR,FIRST_SAVE_FPR,8,1) +#define FULL_FRAME_SIZE (FRAME_SIZE(FIRST_SAVE_GPR,FIRST_SAVE_FPR,8,1)+15&~15) #define RESTORE_FPR(n) lfd f##n,-8*(32- n)(r11) #define RESTORE_GPR(n) lwz r##n,-4*(32- n)(r11) #else @@ -86,7 +86,7 @@ x: #define RESTORE_GPR(n) lwz n,-4*(32-(n))(11) #endif -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN #define C_FULL_PROLOG \ nop @\ nop @ \ @@ -302,7 +302,7 @@ x: li reg_L1,0 li reg_L2,0 li reg_LIP,0 -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN lis reg_NULL,hi16(NIL) ori reg_NULL,reg_NULL,lo16(NIL) #else @@ -334,7 +334,7 @@ x: lwz reg_A3,12(reg_CFP) /* Calculate LRA */ -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN lis reg_LRA,ha16(lra) addi reg_LRA,reg_LRA,lo16(lra) #else @@ -436,7 +436,7 @@ lra: twlti reg_ALLOC,0 mr reg_NL3,reg_NARGS -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN /* PowerOpen (i.e. OS X) requires the callee address in r12 (a.k.a. CFUNC), so move it back there, too. */ mfctr reg_CFUNC @@ -445,7 +445,7 @@ lra: bctrl /* Re-establish NIL */ -#ifdef DARWIN +#ifdef LISP_FEATURE_DARWIN lis reg_NULL,hi16(NIL) ori reg_NULL,reg_NULL,lo16(NIL) #else @@ -515,12 +515,11 @@ lra: .byte 0,0,0,SIMPLE_FUN_HEADER_WIDETAG .byte 18<<2 CSYMBOL(undefined_tramp): - .byte 0,0,24 + .byte 0,0,48 .long CSYMBOL(undefined_tramp) .long NIL .long NIL .long NIL - .long NIL twllei reg_ZERO,trap_Cerror .byte 4 .byte UNDEFINED_FUN_ERROR @@ -530,7 +529,9 @@ CSYMBOL(undefined_tramp): la reg_LIP,SIMPLE_FUN_CODE_OFFSET(reg_CODE) mtctr reg_LIP bctr - + mr reg_CSP,reg_CFP + b 1b + SET_SIZE(xundefined_tramp) GFUNCDEF(xclosure_tramp)