diff options
-rw-r--r-- | arch/ia64/kernel/pal.S | 11 | ||||
-rw-r--r-- | include/asm-ia64/pal.h | 11 |
2 files changed, 5 insertions, 17 deletions
diff --git a/arch/ia64/kernel/pal.S b/arch/ia64/kernel/pal.S index ebaf1e685f5e..5f50e6bbc686 100644 --- a/arch/ia64/kernel/pal.S +++ b/arch/ia64/kernel/pal.S | |||
@@ -50,12 +50,10 @@ END(ia64_pal_default_handler) | |||
50 | * | 50 | * |
51 | * in0 Index of PAL service | 51 | * in0 Index of PAL service |
52 | * in1 - in3 Remaining PAL arguments | 52 | * in1 - in3 Remaining PAL arguments |
53 | * in4 1 ==> clear psr.ic, 0 ==> don't clear psr.ic | ||
54 | * | ||
55 | */ | 53 | */ |
56 | GLOBAL_ENTRY(ia64_pal_call_static) | 54 | GLOBAL_ENTRY(ia64_pal_call_static) |
57 | .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(5) | 55 | .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(4) |
58 | alloc loc1 = ar.pfs,5,5,0,0 | 56 | alloc loc1 = ar.pfs,4,5,0,0 |
59 | movl loc2 = pal_entry_point | 57 | movl loc2 = pal_entry_point |
60 | 1: { | 58 | 1: { |
61 | mov r28 = in0 | 59 | mov r28 = in0 |
@@ -64,7 +62,6 @@ GLOBAL_ENTRY(ia64_pal_call_static) | |||
64 | } | 62 | } |
65 | ;; | 63 | ;; |
66 | ld8 loc2 = [loc2] // loc2 <- entry point | 64 | ld8 loc2 = [loc2] // loc2 <- entry point |
67 | tbit.nz p6,p7 = in4, 0 | ||
68 | adds r8 = 1f-1b,r8 | 65 | adds r8 = 1f-1b,r8 |
69 | mov loc4=ar.rsc // save RSE configuration | 66 | mov loc4=ar.rsc // save RSE configuration |
70 | ;; | 67 | ;; |
@@ -74,13 +71,11 @@ GLOBAL_ENTRY(ia64_pal_call_static) | |||
74 | .body | 71 | .body |
75 | mov r30 = in2 | 72 | mov r30 = in2 |
76 | 73 | ||
77 | (p6) rsm psr.i | psr.ic | ||
78 | mov r31 = in3 | 74 | mov r31 = in3 |
79 | mov b7 = loc2 | 75 | mov b7 = loc2 |
80 | 76 | ||
81 | (p7) rsm psr.i | 77 | rsm psr.i |
82 | ;; | 78 | ;; |
83 | (p6) srlz.i | ||
84 | mov rp = r8 | 79 | mov rp = r8 |
85 | br.cond.sptk.many b7 | 80 | br.cond.sptk.many b7 |
86 | 1: mov psr.l = loc3 | 81 | 1: mov psr.l = loc3 |
diff --git a/include/asm-ia64/pal.h b/include/asm-ia64/pal.h index 2c8fd92d0ece..4283ddcc25fb 100644 --- a/include/asm-ia64/pal.h +++ b/include/asm-ia64/pal.h | |||
@@ -764,7 +764,7 @@ struct ia64_pal_retval { | |||
764 | * (generally 0) MUST be passed. Reserved parameters are not optional | 764 | * (generally 0) MUST be passed. Reserved parameters are not optional |
765 | * parameters. | 765 | * parameters. |
766 | */ | 766 | */ |
767 | extern struct ia64_pal_retval ia64_pal_call_static (u64, u64, u64, u64, u64); | 767 | extern struct ia64_pal_retval ia64_pal_call_static (u64, u64, u64, u64); |
768 | extern struct ia64_pal_retval ia64_pal_call_stacked (u64, u64, u64, u64); | 768 | extern struct ia64_pal_retval ia64_pal_call_stacked (u64, u64, u64, u64); |
769 | extern struct ia64_pal_retval ia64_pal_call_phys_static (u64, u64, u64, u64); | 769 | extern struct ia64_pal_retval ia64_pal_call_phys_static (u64, u64, u64, u64); |
770 | extern struct ia64_pal_retval ia64_pal_call_phys_stacked (u64, u64, u64, u64); | 770 | extern struct ia64_pal_retval ia64_pal_call_phys_stacked (u64, u64, u64, u64); |
@@ -774,14 +774,7 @@ extern void ia64_load_scratch_fpregs (struct ia64_fpreg *); | |||
774 | #define PAL_CALL(iprv,a0,a1,a2,a3) do { \ | 774 | #define PAL_CALL(iprv,a0,a1,a2,a3) do { \ |
775 | struct ia64_fpreg fr[6]; \ | 775 | struct ia64_fpreg fr[6]; \ |
776 | ia64_save_scratch_fpregs(fr); \ | 776 | ia64_save_scratch_fpregs(fr); \ |
777 | iprv = ia64_pal_call_static(a0, a1, a2, a3, 0); \ | 777 | iprv = ia64_pal_call_static(a0, a1, a2, a3); \ |
778 | ia64_load_scratch_fpregs(fr); \ | ||
779 | } while (0) | ||
780 | |||
781 | #define PAL_CALL_IC_OFF(iprv,a0,a1,a2,a3) do { \ | ||
782 | struct ia64_fpreg fr[6]; \ | ||
783 | ia64_save_scratch_fpregs(fr); \ | ||
784 | iprv = ia64_pal_call_static(a0, a1, a2, a3, 1); \ | ||
785 | ia64_load_scratch_fpregs(fr); \ | 778 | ia64_load_scratch_fpregs(fr); \ |
786 | } while (0) | 779 | } while (0) |
787 | 780 | ||