VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / arch / ia64 / kernel / efi_stub.S
index 6e8a8c1..5a7fe70 100644 (file)
@@ -44,7 +44,7 @@
 
 GLOBAL_ENTRY(efi_call_phys)
        .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8)
-       alloc loc1=ar.pfs,8,5,7,0
+       alloc loc1=ar.pfs,8,7,7,0
        ld8 r2=[in0],8                  // load EFI function's entry point
        mov loc0=rp
        .body
@@ -70,9 +70,13 @@ GLOBAL_ENTRY(efi_call_phys)
        mov out3=in4
        mov out5=in6
        mov out6=in7
+       mov loc5=r19
+       mov loc6=r20
        br.call.sptk.many rp=b6         // call the EFI function
 .ret1: mov ar.rsc=0                    // put RSE in enforced lazy, LE mode
        mov r16=loc3
+       mov r19=loc5
+       mov r20=loc6
        br.call.sptk.many rp=ia64_switch_mode_virt // return to virtual mode
 .ret2: mov ar.rsc=loc4                 // restore RSE configuration
        mov ar.pfs=loc1