diff -r 1ad7dff99968 tools/libxc/xc_linux_restore.c --- a/tools/libxc/xc_linux_restore.c Fri Dec 08 18:37:19 2006 +0000 +++ b/tools/libxc/xc_linux_restore.c Fri Dec 08 21:37:27 2006 -0600 @@ -73,7 +73,7 @@ static int uncanonicalize_pagetable(unsi else pte = ((uint64_t *)page)[i]; - if(pte & _PAGE_PRESENT) { + if(pte_present(pte)) { pfn = (pte >> PAGE_SHIFT) & 0xffffffff; diff -r 1ad7dff99968 tools/libxc/xc_linux_save.c --- a/tools/libxc/xc_linux_save.c Fri Dec 08 18:37:19 2006 +0000 +++ b/tools/libxc/xc_linux_save.c Fri Dec 08 21:36:59 2006 -0600 @@ -471,7 +471,7 @@ static int canonicalize_pagetable(unsign if (i >= xen_start && i < xen_end) pte = 0; - if (pte & _PAGE_PRESENT) { + if (pte_present(pte)) { mfn = (pte >> PAGE_SHIFT) & 0xfffffff; if (!MFN_IS_IN_PSEUDOPHYS_MAP(mfn)) { diff -r 1ad7dff99968 tools/libxc/xg_private.h --- a/tools/libxc/xg_private.h Fri Dec 08 18:37:19 2006 +0000 +++ b/tools/libxc/xg_private.h Fri Dec 08 17:48:49 2006 -0600 @@ -46,6 +46,10 @@ unsigned long csum_page (void * page); #define _PAGE_PSE 0x080 #define _PAGE_GLOBAL 0x100 +#define _PAGE_PROTNONE 0x080 /* If not present */ + +#define pte_present(_pteval) ((_pteval) & (_PAGE_PRESENT|_PAGE_PROTNONE)) + #define L1_PAGETABLE_SHIFT_PAE 12 #define L2_PAGETABLE_SHIFT_PAE 21 #define L3_PAGETABLE_SHIFT_PAE 30