# HG changeset patch # User tristan.gingold@xxxxxxxx # Node ID 803d3b97f05da42569a7993e23824e058b6a9505 # Parent 2f268ff345e520fa06873a1dfe65352f262c1257 Privified insns replaced by hyperprivops. Signed-off-by: Tristan Gingold diff -r 2f268ff345e5 -r 803d3b97f05d linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S --- a/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Thu Mar 16 11:20:41 2006 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Thu Mar 16 11:49:52 2006 @@ -254,7 +254,6 @@ st8 [r11]=r10 ;; br.ret.sptk.many rp - ;; END(xen_set_rr) GLOBAL_ENTRY(xen_fc) @@ -264,7 +263,16 @@ (p7) fc r32;; (p7) br.ret.sptk.many rp ;; - ptc.e r96 // this is a "privified" fc r32 + movl r9=XSI_PSR_IC + mov r8=r32 + ;; + ld8 r10=[r9] + ;; + st8 [r9]=r0 + ;; + XEN_HYPER_FC + ;; + st8 [r9]=r10 ;; br.ret.sptk.many rp END(xen_fc) @@ -276,7 +284,16 @@ (p7) mov r8=cpuid[r32];; (p7) br.ret.sptk.many rp ;; - mov r72=rr[r32] // this is a "privified" mov r8=cpuid[r32] + movl r9=XSI_PSR_IC + mov r8=r32 + ;; + ld8 r10=[r9] + ;; + st8 [r9]=r0 + ;; + XEN_HYPER_GET_CPUID + ;; + st8 [r9]=r10 ;; br.ret.sptk.many rp END(xen_get_cpuid) @@ -288,7 +305,16 @@ (p7) mov r8=pmd[r32];; (p7) br.ret.sptk.many rp ;; - mov r72=pmc[r32] // this is a "privified" mov r8=pmd[r32] + movl r9=XSI_PSR_IC + mov r8=r32 + ;; + ld8 r10=[r9] + ;; + st8 [r9]=r0 + ;; + XEN_HYPER_GET_PMD + ;; + st8 [r9]=r10 ;; br.ret.sptk.many rp END(xen_get_pmd) @@ -301,10 +327,20 @@ (p7) mov r8=ar24;; (p7) br.ret.sptk.many rp ;; - mov ar24=r72 // this is a "privified" mov r8=ar.eflg + movl r9=XSI_PSR_IC + mov r8=r32 + ;; + ld8 r10=[r9] + ;; + st8 [r9]=r0 + ;; + XEN_HYPER_GET_EFLAG + ;; + st8 [r9]=r10 ;; br.ret.sptk.many rp END(xen_get_eflag) + // some bits aren't set if pl!=0, see SDM vol1 3.1.8 GLOBAL_ENTRY(xen_set_eflag) movl r8=running_on_xen;; @@ -313,11 +349,17 @@ (p7) mov ar24=r32 (p7) br.ret.sptk.many rp ;; - // FIXME: this remains no-op'd because it generates - // a privileged register (general exception) trap rather than - // a privileged operation fault - //mov ar24=r32 - ;; - br.ret.sptk.many rp -END(xen_get_eflag) + movl r9=XSI_PSR_IC + mov r8=r32 + ;; + ld8 r10=[r9] + ;; + st8 [r9]=r0 + ;; + XEN_HYPER_SET_EFLAG + ;; + st8 [r9]=r10 + ;; + br.ret.sptk.many rp +END(xen_set_eflag) #endif diff -r 2f268ff345e5 -r 803d3b97f05d linux-2.6-xen-sparse/arch/ia64/xen/xenivt.S --- a/linux-2.6-xen-sparse/arch/ia64/xen/xenivt.S Thu Mar 16 11:20:41 2006 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/xenivt.S Thu Mar 16 11:49:52 2006 @@ -723,16 +723,12 @@ movl r30=1f // load continuation point in case of nested fault ;; #ifdef CONFIG_XEN -#if 1 mov r18=r8; mov r8=r16; XEN_HYPER_THASH;; mov r17=r8; mov r8=r18;; #else - tak r17=r80 // "privified" thash -#endif -#else thash r17=r16 // compute virtual address of L3 PTE #endif mov r29=b0 // save b0 in case of nested fault @@ -812,16 +808,12 @@ #endif /* CONFIG_ITANIUM */ ;; #ifdef CONFIG_XEN -#if 1 mov r18=r8; mov r8=r16; XEN_HYPER_THASH;; mov r17=r8; mov r8=r18;; #else - tak r17=r80 // "privified" thash -#endif -#else thash r17=r16 // compute virtual address of L3 PTE #endif mov r29=b0 // save b0 in case of nested fault) @@ -898,15 +890,11 @@ movl r30=1f // load continuation point in case of nested fault ;; #ifdef CONFIG_XEN -#if 1 mov r18=r8; mov r8=r16; XEN_HYPER_THASH;; mov r17=r8; mov r8=r18;; -#else - tak r17=r80 // "privified" thash -#endif #else thash r17=r16 // compute virtual address of L3 PTE #endif diff -r 2f268ff345e5 -r 803d3b97f05d linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h --- a/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Thu Mar 16 11:20:41 2006 +++ b/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Thu Mar 16 11:49:52 2006 @@ -33,6 +33,11 @@ #define XEN_HYPER_GET_RR break 0x10 #define XEN_HYPER_SET_RR break 0x11 #define XEN_HYPER_SET_KR break 0x12 +#define XEN_HYPER_FC break 0x13 +#define XEN_HYPER_GET_CPUID break 0x14 +#define XEN_HYPER_GET_PMD break 0x15 +#define XEN_HYPER_GET_EFLAG break 0x16 +#define XEN_HYPER_SET_EFLAG break 0x17 #endif #ifndef __ASSEMBLY__