X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fppc%2Farith.lisp;h=60175d031f5973b77be316e2160e95d2e4625aad;hb=f7ed7e78e455b9a17b902aa030ce897afbe70d71;hp=fd5fad9a338444e58d358ba02514ff127941788f;hpb=3a0f3612dc2bbf3e4e8e7395bcbbf8cd1791b963;p=sbcl.git diff --git a/src/assembly/ppc/arith.lisp b/src/assembly/ppc/arith.lisp index fd5fad9..60175d0 100644 --- a/src/assembly/ppc/arith.lisp +++ b/src/assembly/ppc/arith.lisp @@ -46,7 +46,9 @@ (lisp-return lra lip :offset 2) DO-STATIC-FUN - (inst lwz lip null-tn (static-fun-offset 'two-arg-+) ) + (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-+)) + (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag) + (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag) (inst li nargs (fixnumize 2)) (inst mr ocfp cfp-tn) (inst mr cfp-tn csp-tn) @@ -94,7 +96,9 @@ (lisp-return lra lip :offset 2) DO-STATIC-FUN - (inst lwz lip null-tn (static-fun-offset 'two-arg--)) + (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg--)) + (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag) + (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag) (inst li nargs (fixnumize 2)) (inst mr ocfp cfp-tn) (inst mr cfp-tn csp-tn) @@ -171,7 +175,9 @@ (lisp-return lra lip :offset 2) DO-STATIC-FUN - (inst lwz lip null-tn (static-fun-offset 'two-arg-*)) + (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-*)) + (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag) + (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag) (inst li nargs (fixnumize 2)) (inst mr ocfp cfp-tn) (inst mr cfp-tn csp-tn) @@ -217,7 +223,7 @@ (:res quo any-reg nl2-offset) (:res rem any-reg nl0-offset)) (aver (location= rem dividend)) - (let ((error (generate-error-code nil division-by-zero-error + (let ((error (generate-error-code nil 'division-by-zero-error dividend divisor))) (inst cmpwi divisor 0) (inst beq error)) @@ -242,7 +248,7 @@ (:res rem any-reg nl0-offset)) (aver (location= rem dividend)) - (let ((error (generate-error-code nil division-by-zero-error + (let ((error (generate-error-code nil 'division-by-zero-error dividend divisor))) (inst cmpwi divisor 0) (inst beq error)) @@ -267,7 +273,7 @@ (:res quo signed-reg nl2-offset) (:res rem signed-reg nl0-offset)) - (let ((error (generate-error-code nil division-by-zero-error + (let ((error (generate-error-code nil 'division-by-zero-error dividend divisor))) (inst cmpwi divisor 0) (inst beq error)) @@ -303,7 +309,9 @@ (inst beq DO-COMPARE) DO-STATIC-FN - (inst lwz lip null-tn (static-fun-offset ',static-fn)) + (inst addi lexenv-tn null-tn (static-fdefn-offset ',static-fn)) + (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag) + (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag) (inst li nargs (fixnumize 2)) (inst mr ocfp cfp-tn) (inst mr cfp-tn csp-tn) @@ -348,7 +356,9 @@ (lisp-return lra lip :offset 2) DO-STATIC-FN - (inst lwz lip null-tn (static-fun-offset 'eql)) + (inst addi lexenv-tn null-tn (static-fdefn-offset 'eql)) + (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag) + (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag) (inst li nargs (fixnumize 2)) (inst mr ocfp cfp-tn) (inst mr cfp-tn csp-tn) @@ -384,7 +394,9 @@ (lisp-return lra lip :offset 2) DO-STATIC-FN - (inst lwz lip null-tn (static-fun-offset 'two-arg-=)) + (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-=)) + (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag) + (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag) (inst li nargs (fixnumize 2)) (inst mr ocfp cfp-tn) (inst mr cfp-tn csp-tn) @@ -419,7 +431,9 @@ (lisp-return lra lip :offset 2) DO-STATIC-FN - (inst lwz lip null-tn (static-fun-offset 'two-arg-/=)) + (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-/=)) + (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag) + (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag) (inst li nargs (fixnumize 2)) (inst mr ocfp cfp-tn) (inst j lip 0)