diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-08-04 07:15:56 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-08-04 07:15:56 -0400 |
commit | 6bbad18a8b18228fa65d73547dfd5efad1515ef8 (patch) | |
tree | 193e53bc0fa0b01c3c0fab4d3eda23ce84bb1154 /arch/ia64/kernel/pal.S | |
parent | fe2a24dfc577a05349a39c6c8a6312818d28bb59 (diff) | |
parent | efe78cda3596f8a6d1c2d4a6b1a221bafa3e1a48 (diff) |
Merge branch 'master' into upstream
Diffstat (limited to 'arch/ia64/kernel/pal.S')
-rw-r--r-- | arch/ia64/kernel/pal.S | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/ia64/kernel/pal.S b/arch/ia64/kernel/pal.S index 5018c7f2e7a8..ebaf1e685f5e 100644 --- a/arch/ia64/kernel/pal.S +++ b/arch/ia64/kernel/pal.S @@ -217,12 +217,7 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked) .body ;; ld8 loc2 = [loc2] // loc2 <- entry point - mov out0 = in0 // first argument - mov out1 = in1 // copy arg2 - mov out2 = in2 // copy arg3 - mov out3 = in3 // copy arg3 - ;; - mov loc3 = psr // save psr + mov loc3 = psr // save psr ;; mov loc4=ar.rsc // save RSE configuration dep.z loc2=loc2,0,61 // convert pal entry point to physical @@ -236,18 +231,23 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked) ;; andcm r16=loc3,r16 // removes bits to clear from psr br.call.sptk.many rp=ia64_switch_mode_phys -.ret6: + + mov out0 = in0 // first argument + mov out1 = in1 // copy arg2 + mov out2 = in2 // copy arg3 + mov out3 = in3 // copy arg3 mov loc5 = r19 mov loc6 = r20 + br.call.sptk.many rp=b7 // now make the call -.ret7: + mov ar.rsc=0 // put RSE in enforced lazy, LE mode mov r16=loc3 // r16= original psr mov r19=loc5 mov r20=loc6 br.call.sptk.many rp=ia64_switch_mode_virt // return to virtual mode -.ret8: mov psr.l = loc3 // restore init PSR + mov psr.l = loc3 // restore init PSR mov ar.pfs = loc1 mov rp = loc0 ;; |