From 690d2c6a6fd7512dce0761f21a1d18fb49ca1fcb Mon Sep 17 00:00:00 2001
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date: Thu, 8 Apr 2010 00:11:26 +0200
Subject: Extend machine addresses to 64bit for PAE

	* i386/i386/pcb.c (switch_ktss): Use uint64_t for descriptor
	type instead of unsigned long long.
	* i386/i386/seg.h (fill_descriptor): Use uint64_t for descriptor
	type instead of unsigned long long. Cast result of kv_to_ma()
	into vm_offset_t before printing.
	* i386/i386/xen.h (hyp_mmu_update_pte): Use pt_entry_t type
	instead of unsigned long long, make pte parameter a pt_entry_t
	too.
        (hyp_mmu_update_pte): Compute pte address just using pt_entry_t
        integers.
	(hyp_high): New macro to fix 32bit right shifting.
        (hyp_do_update_descriptor): Use pt_entry_t type for machine
        address instead of unsigned long. Split it in 32bit parts. Use uint64_t
        for descriptor type instead of unsigned long long.
	(update_va_mapping): Use pt_entry_t type instead of unsigned
	long long. Use hyp_high macro.
	(hyp_invlpg): Use uint64_t for time type instead of unsigned
	long long.
	* i386/intel/pmap.c (pmap_bootstrap): Use ptetokv instead of
	pte_to_pa + phystokv. Cast machine addresses into vm_offset_t
	before printing.
        (pmap_set_page_readwrite): Likewise.
	(pmap_set_page_readonly): Likewise
	(pmap_set_page_readonly_init): Likewise
	(pmap_clear_bootstrap_pagetable): Likewise
	(pmap_destroy): Likewise
	(pmap_map_mfn): Use pt_entry_t type for machine addresses. Cast
	machine addresses into vm_offset_t before printing.
	* i386/intel/pmap.h [PAE] (INTEL_PTE_PFN): Set macro to
	0xfffffffffffff000ULL.
	* include/mach/xen.h [PAE] (pa_to_ma, ma_to_pa): Use pt_entry_t
	type for machine addresses.
	[!PAE] (pa_to_ma): Remove cast to vm_offset_t.
	(mfn_to_kv): Use mfn_to_pfn + ptoa instead of ptoa + ma_to_pa.
        * xen/xen.c (hyp_invalidate_pte): Cast machine addresses into
        vm_offset_t before printing.
---
 xen/xen.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'xen')

diff --git a/xen/xen.c b/xen/xen.c
index b3acef42..062ee4d5 100644
--- a/xen/xen.c
+++ b/xen/xen.c
@@ -33,7 +33,7 @@
 void hyp_invalidate_pte(pt_entry_t *pte)
 {
 	if (!hyp_mmu_update_pte(kv_to_ma(pte), (*pte) & ~INTEL_PTE_VALID))
-		panic("%s:%d could not set pte %p(%p) to %p(%p)\n",__FILE__,__LINE__,pte,kv_to_ma(pte),*pte,pa_to_ma(*pte));
+		panic("%s:%d could not set pte %p(%p) to %p(%p)\n",__FILE__,__LINE__,pte,(vm_offset_t) kv_to_ma(pte),*pte,ma_to_pa(*pte));
 	hyp_mmuext_op_void(MMUEXT_TLB_FLUSH_LOCAL);
 }
 
-- 
cgit v1.2.3