ia64/xen-unstable
changeset 5810:0cc05e9a3482
Fix and turn back on unat checking in fast paths
author | djm@kirby.fc.hp.com |
---|---|
date | Mon Jul 18 17:44:14 2005 -0700 (2005-07-18) |
parents | 6e9248e8f401 |
children | 738ba414ce80 |
files | xen/arch/ia64/hyperprivop.S xen/include/asm-ia64/xensystem.h |
line diff
1.1 --- a/xen/arch/ia64/hyperprivop.S Mon Jul 18 14:05:04 2005 -0700 1.2 +++ b/xen/arch/ia64/hyperprivop.S Mon Jul 18 17:44:14 2005 -0700 1.3 @@ -28,7 +28,7 @@ 1.4 #endif 1.5 1.6 // FIXME: turn off for now... fix zero'ing regs, should be bank1? 1.7 -//#define HANDLE_AR_UNAT 1.8 +#define HANDLE_AR_UNAT 1.9 1.10 // FIXME: This is defined in include/asm-ia64/hw_irq.h but this 1.11 // doesn't appear to be include'able from assembly? 1.12 @@ -457,14 +457,16 @@ GLOBAL_ENTRY(fast_tick_reflect) 1.13 .mem.offset 8,0; st8.spill [r3]=r29,16 ;; 1.14 .mem.offset 0,0; st8.spill [r2]=r30,16; 1.15 .mem.offset 8,0; st8.spill [r3]=r31,16 ;; 1.16 - movl r31=XSI_IPSR;; 1.17 +#ifdef HANDLE_AR_UNAT 1.18 + // bank0 regs have no NaT bit, so ensure they are NaT clean 1.19 + mov r16=r0; mov r17=r0; mov r18=r0; mov r19=r0; 1.20 + mov r20=r0; mov r21=r0; mov r22=r0; mov r23=r0; 1.21 + mov r24=r0; mov r25=r0; mov r26=r0; mov r27=r0; 1.22 + mov r28=r0; mov r29=r0; mov r30=r0; movl r31=XSI_IPSR;; 1.23 +#endif 1.24 bsw.0 ;; 1.25 mov r2=r30; mov r3=r29;; 1.26 #ifdef HANDLE_AR_UNAT 1.27 - // bank0 regs have no NaT bit, so ensure they are NaT clean 1.28 - mov r16=r0; mov r17=r0; mov r19=r0; 1.29 - mov r21=r0; mov r22=r0; mov r23=r0; 1.30 - mov r24=r0; mov r25=r0; mov r26=r0; mov r27=r0; 1.31 mov ar.unat=r28; 1.32 #endif 1.33 adds r20=XSI_BANKNUM_OFS-XSI_PSR_IC_OFS,r18 ;; 1.34 @@ -608,14 +610,17 @@ ENTRY(fast_reflect) 1.35 .mem.offset 8,0; st8.spill [r3]=r29,16 ;; 1.36 .mem.offset 0,0; st8.spill [r2]=r30,16; 1.37 .mem.offset 8,0; st8.spill [r3]=r31,16 ;; 1.38 +#ifdef HANDLE_AR_UNAT 1.39 + // bank0 regs have no NaT bit, so ensure they are NaT clean 1.40 + mov r16=r0; mov r17=r0; mov r18=r0; mov r19=r0; 1.41 + mov r20=r0; mov r21=r0; mov r22=r0; mov r23=r0; 1.42 + mov r24=r0; mov r25=r0; mov r26=r0; mov r27=r0; 1.43 + mov r28=r0; mov r29=r0; mov r30=r0; movl r31=XSI_IPSR;; 1.44 +#endif 1.45 movl r31=XSI_IPSR;; 1.46 bsw.0 ;; 1.47 mov r2=r30; mov r3=r29;; 1.48 #ifdef HANDLE_AR_UNAT 1.49 - // bank0 regs have no NaT bit, so ensure they are NaT clean 1.50 - mov r16=r0; mov r17=r0; mov r19=r0; 1.51 - mov r21=r0; mov r22=r0; mov r23=r0; 1.52 - mov r24=r0; mov r25=r0; mov r26=r0; mov r27=r0; 1.53 mov ar.unat=r28; 1.54 #endif 1.55 adds r20=XSI_BANKNUM_OFS-XSI_PSR_IC_OFS,r18 ;;
2.1 --- a/xen/include/asm-ia64/xensystem.h Mon Jul 18 14:05:04 2005 -0700 2.2 +++ b/xen/include/asm-ia64/xensystem.h Mon Jul 18 17:44:14 2005 -0700 2.3 @@ -59,8 +59,8 @@ extern struct task_struct *vmx_ia64_swit 2.4 if (IA64_HAS_EXTRA_STATE(next)) \ 2.5 ia64_load_extra(next); \ 2.6 /*ia64_psr(ia64_task_regs(next))->dfh = !ia64_is_local_fpu_owner(next);*/ \ 2.7 - /* vcpu_set_next_timer(next); TURN ME BACK ON */ \ 2.8 (last) = ia64_switch_to((next)); \ 2.9 + vcpu_set_next_timer(current); \ 2.10 } while (0) 2.11 #endif // CONFIG_VTI 2.12