Hi Anthony,
On Mon, 2007-05-14 at 15:43 +0800, Xu, Anthony wrote:
>
> if(!vhpt_enabled(v, vadr, misr.rs?RSE_REF:DATA_REF)){
> + if(GOS_WINDOWS(v)){
> + //windows use region 4 and 5 for identity mapping
> + if(REGION_NUMBER(vadr)==4 && !(regs->cr_ipsr & IA64_PSR_CPL)
> + && (REGION_OFFSET(vadr)<= _PAGE_PPN_MASK)){
> + pteval = PAGEALIGN(REGION_OFFSET(vadr),13)| 0x461;
^^^^^
> + if(thash_purge_and_insert(v, pteval, 13<<2, vadr, type))
> + goto try_again;
> + return IA64_NO_FAULT;
> + }
> +
> + if(REGION_NUMBER(vadr)==5 && !(regs->cr_ipsr & IA64_PSR_CPL)
> + && (REGION_OFFSET(vadr)<= _PAGE_PPN_MASK)){
> + pteval = PAGEALIGN(REGION_OFFSET(vadr),13)| 0x471;
^^^^^
Can you define these bits of magic with macros please?
> + if(thash_purge_and_insert(v, pteval, 13<<2, vadr, type))
> + goto try_again;
> + return IA64_NO_FAULT;
> + }
> + }
> if(vpsr.ic){
> vcpu_set_isr(v, misr.val);
> alt_dtlb(v, vadr);
> @@ -367,7 +386,7 @@ vmx_hpw_miss(u64 vadr , u64 vec, REGS* r
> }
>
> /* avoid recursively walking (short format) VHPT */
> - if ((((vadr ^ vpta.val) << 3) >> (vpta.size + 3)) == 0) {
> + if (GOS_LINUX(v)&&(((vadr^vpta.val)<<3)>>(vpta.size+3)) == 0) {
Is this truly a Linux path, or maybe a !GOS_WINDOWS() test? We want
to be sure we run OSes that don't support _OSI too. Thanks,
Alex
--
Alex Williamson HP Open Source & Linux Org.
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|