Index: /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp
===================================================================
--- /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp	(revision 9742)
+++ /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp	(revision 9743)
@@ -3161,4 +3161,11 @@
   :done)
 
+(define-x8632-vinsn (%ref-symbol-value :call :subprim-call)
+    (((val :lisp))
+     ((sym (:lisp (:ne val)))))
+  (:talign 5)
+  (call (:@ .SPspecref))
+  (movl (:$self 0) (:%l x8632::fn)))
+
 (define-x8632-vinsn %ref-symbol-value-inline (((dest :lisp))
                                               ((src (:lisp (:ne dest))))
@@ -3440,8 +3447,7 @@
    (movl (:%l src) (:%l dest)))
   (shll (:$ub (- x8632::charcode-shift x8632::fixnumshift)) (:%l dest))
-  ((:and (:pred >= (:apply %hard-regspec-value dest) x8632::eax)
-	 (:pred <= (:apply %hard-regspec-value dest) x8632::ebx))
-   (addb (:$b x8632::subtag-character) (:%b dest)))
-  ((:pred > (:apply %hard-regspec-value dest) x8632::ebx)
+  ((:pred <= x8632::subtag-character #x7f)
+   (addl (:$b x8632::subtag-character) (:%l dest)))
+  ((:pred > x8632::subtag-character #x7f)
    (addl (:$l x8632::subtag-character) (:%l dest)))
   :done)
