]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ia64: Don't assume out registers are preserved across call to
authorAlberto Munoz <amunoz@vmware.com>
Fri, 24 May 2002 12:06:00 +0000 (05:06 -0700)
committerDavid Mosberger <davidm@tiger.hpl.hp.com>
Fri, 24 May 2002 12:06:00 +0000 (05:06 -0700)
ia64_switch_mode().

arch/ia64/kernel/efi_stub.S

index 6ba03d7409aba2da18a7c46c0e060479010b9ee5..8c59ed452ce24c8115948fac48377af84adddac3 100644 (file)
@@ -53,23 +53,21 @@ GLOBAL_ENTRY(efi_call_phys)
        mov loc4=ar.rsc                 // save RSE configuration
        mov ar.rsc=0                    // put RSE in enforced lazy, LE mode
        ;;
-
        ld8 gp=[in0]                    // load EFI function's global pointer
-       mov out0=in1
-       mov out1=in2
        movl r16=PSR_BITS_TO_CLEAR
-
        mov loc3=psr                    // save processor status word
        movl r17=PSR_BITS_TO_SET
        ;;
-       mov out2=in3
        or loc3=loc3,r17
        mov b6=r2
        ;;
        andcm r16=loc3,r16              // get psr with IT, DT, and RT bits cleared
-       mov out3=in4
        br.call.sptk.many rp=ia64_switch_mode
 .ret0: mov out4=in5
+       mov out0=in1
+       mov out1=in2
+       mov out2=in3
+       mov out3=in4
        mov out5=in6
        mov out6=in7
        br.call.sptk.many rp=b6         // call the EFI function