X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fhppa%2Fmacros.lisp;h=0a5e99140c232ed25d8ca03da25df6e8d6d88454;hb=94c003b32e49fc11a182d50c405ffa18183aa005;hp=4489af86d197eeb657015aca0bc77876bd7cd346;hpb=b46345044a6b9e2db26700e297daedb05307919b;p=sbcl.git diff --git a/src/compiler/hppa/macros.lisp b/src/compiler/hppa/macros.lisp index 4489af8..0a5e991 100644 --- a/src/compiler/hppa/macros.lisp +++ b/src/compiler/hppa/macros.lisp @@ -41,7 +41,13 @@ (defmacro load-symbol (reg symbol) (once-only ((reg reg) (symbol symbol)) - `(inst addi (static-symbol-offset ,symbol) null-tn ,reg))) + `(let ((offset (static-symbol-offset ,symbol))) + (cond + ((typep offset '(signed-byte 11)) + (inst addi offset null-tn ,reg)) + (t + (inst ldil offset ,reg) + (inst ldo offset null-tn ,reg :unsigned t)))))) (defmacro load-symbol-value (reg symbol) `(inst ldw