git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git]
/
arch
/
ia64
/
kernel
/
pal.S
diff --git
a/arch/ia64/kernel/pal.S
b/arch/ia64/kernel/pal.S
index
5018c7f
..
af5cc0b
100644
(file)
--- a/
arch/ia64/kernel/pal.S
+++ b/
arch/ia64/kernel/pal.S
@@
-16,6
+16,7
@@
#include <asm/processor.h>
.data
#include <asm/processor.h>
.data
+ .globl pal_entry_point
pal_entry_point:
data8 ia64_pal_default_handler
.text
pal_entry_point:
data8 ia64_pal_default_handler
.text
@@
-53,7
+54,7
@@
END(ia64_pal_default_handler)
* in4 1 ==> clear psr.ic, 0 ==> don't clear psr.ic
*
*/
* in4 1 ==> clear psr.ic, 0 ==> don't clear psr.ic
*
*/
-GLOBAL_ENTRY(ia64_pal_call_static)
+GLOBAL_ENTRY(
__
ia64_pal_call_static)
.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(5)
alloc loc1 = ar.pfs,5,5,0,0
movl loc2 = pal_entry_point
.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(5)
alloc loc1 = ar.pfs,5,5,0,0
movl loc2 = pal_entry_point
@@
-90,7
+91,7
@@
GLOBAL_ENTRY(ia64_pal_call_static)
;;
srlz.d // seralize restoration of psr.l
br.ret.sptk.many b0
;;
srlz.d // seralize restoration of psr.l
br.ret.sptk.many b0
-END(ia64_pal_call_static)
+END(
__
ia64_pal_call_static)
/*
* Make a PAL call using the stacked registers calling convention.
/*
* Make a PAL call using the stacked registers calling convention.
@@
-217,12
+218,7
@@
GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
.body
;;
ld8 loc2 = [loc2] // loc2 <- entry point
.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
;;
mov loc4=ar.rsc // save RSE configuration
dep.z loc2=loc2,0,61 // convert pal entry point to physical
@@
-236,18
+232,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
;;
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
mov loc5 = r19
mov loc6 = r20
+
br.call.sptk.many rp=b7 // now make the call
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
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
;;
mov ar.pfs = loc1
mov rp = loc0
;;