X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fppc%2Fassem-rtns.lisp;h=e6839a993bfd38d179de272ad11cb03d1f7d4c95;hb=37b1ed8e9b6faa84832b8251998b5d0eb1f6b307;hp=d59e074d5970e1b6771ab51fe318ef0dad866bde;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/assembly/ppc/assem-rtns.lisp b/src/assembly/ppc/assem-rtns.lisp index d59e074..e6839a9 100644 --- a/src/assembly/ppc/assem-rtns.lisp +++ b/src/assembly/ppc/assem-rtns.lisp @@ -153,11 +153,11 @@ (:temp target-uwp any-reg nl2-offset)) (declare (ignore start count)) - (let ((error (generate-error-code nil invalid-unwind-error))) + (let ((error (generate-error-code nil 'invalid-unwind-error))) (inst cmpwi block 0) (inst beq error)) - (load-symbol-value cur-uwp *current-unwind-protect-block*) + (load-tl-symbol-value cur-uwp *current-unwind-protect-block*) (loadw target-uwp block unwind-block-current-uwp-slot) (inst cmpw cur-uwp target-uwp) (inst bne do-uwp) @@ -169,12 +169,12 @@ (loadw cfp-tn cur-uwp unwind-block-current-cont-slot) (loadw code-tn cur-uwp unwind-block-current-code-slot) (loadw lra cur-uwp unwind-block-entry-pc-slot) - (lisp-return lra lip :frob-code nil) + (lisp-return lra lip) DO-UWP (loadw next-uwp cur-uwp unwind-block-current-uwp-slot) - (store-symbol-value next-uwp *current-unwind-protect-block*) + (store-tl-symbol-value next-uwp *current-unwind-protect-block* cfp-tn) (inst b do-exit)) (define-assembly-routine (throw @@ -187,11 +187,11 @@ (declare (ignore start count)) - (load-symbol-value catch *current-catch-block*) + (load-tl-symbol-value catch *current-catch-block*) loop - (let ((error (generate-error-code nil unseen-throw-tag-error target))) + (let ((error (generate-error-code nil 'unseen-throw-tag-error target))) (inst cmpwi catch 0) (inst beq error)) @@ -204,7 +204,7 @@ exit (move target catch) - (inst ba (make-fixup 'unwind :assembly-routine))) - - - + ;; reuse catch + (inst lr catch (make-fixup 'unwind :assembly-routine)) + (inst mtlr catch) + (inst blr))