]> xenbits.xensource.com Git - people/royger/xen-test-framework.git/commitdiff
Annotate hvm pagetables as data
authorAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 22 Apr 2016 18:57:17 +0000 (19:57 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 22 Apr 2016 18:54:17 +0000 (19:54 +0100)
Introduce PAGETABLE_{START,END}() helpers which wrap the appropriate
directives.  Fix a copy&paste bug from c/s 3382222 "Introduce the hvm32pse
environment" which stated the size of pse_l1_identmap twice, and omitted
pse_l2_identmap.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
arch/x86/hvm/pagetables.S

index bb7423344f7d94fa94ff970586b9de4fb54ad3bb..b1a2183e2135f9bb8d8af530fad76b307494285d 100644 (file)
@@ -2,6 +2,13 @@
 
 #include <arch/x86/page.h>
 
+#define PAGETABLE_START(sym)   \
+        GLOBAL(sym)
+
+#define PAGETABLE_END(sym)     \
+        .type sym, STT_OBJECT; \
+        SIZE(sym)
+
 #define PAGE_COMMON _PAGE_DIRTY + _PAGE_ACCESSED + _PAGE_USER + _PAGE_RW + _PAGE_PRESENT
 
 #define PAE_IDX(sym) ((. - (sym)) / PAE_PTE_SZ)
         .p2align PAGE_SHIFT
 
 /* PAE mappings of first 2M of memory in 4k pages. Uses 1x 4k page. */
-GLOBAL(pae_l1_identmap)
+PAGETABLE_START(pae_l1_identmap)
         .long 0, 0 /* Unmap page at 0 to catch errors with NULL pointers. */
         .rept PAE_L1_PT_ENTRIES - 1
         .long (PAE_IDX(pae_l1_identmap) << PAE_L1_PT_SHIFT) + PAGE_COMMON
         .long 0
         .endr
-SIZE(pae_l1_identmap)
+PAGETABLE_END(pae_l1_identmap)
 
 /* PAE mappings up to 4G, mostly in 2M superpages. Uses 4x 4k pages. */
-GLOBAL(pae_l2_identmap)
+PAGETABLE_START(pae_l2_identmap)
         .long pae_l1_identmap + PAGE_COMMON
         .long 0
         .rept (4 * PAE_L2_PT_ENTRIES) - 1
         .long (PAE_IDX(pae_l2_identmap) << PAE_L2_PT_SHIFT) + _PAGE_PSE + PAGE_COMMON
         .long 0
         .endr
-SIZE(pae_l2_identmap)
+PAGETABLE_END(pae_l2_identmap)
 
 /* PAE l3 pagetable.  Maps 4x l2 tables. */
-GLOBAL(pae_l3_identmap)
+PAGETABLE_START(pae_l3_identmap)
         .rept 4
         .long pae_l2_identmap + (PAE_IDX(pae_l3_identmap) << PAGE_SHIFT) + PAGE_COMMON
         .long 0
         .endr
         .fill PAE_L3_PT_ENTRIES - 4, 8, 0
-SIZE(pae_l3_identmap)
+PAGETABLE_END(pae_l3_identmap)
 
 /* PAE l4 pagetable.  Maps 1x l3 table. */
-GLOBAL(pae_l4_identmap)
+PAGETABLE_START(pae_l4_identmap)
         .long pae_l3_identmap + PAGE_COMMON
         .long 0
         .fill PAE_L4_PT_ENTRIES - 1, 8, 0
-SIZE(pae_l4_identmap)
+PAGETABLE_END(pae_l4_identmap)
 
 /* PSE mappings of the first 4M of memory in 4k pages.  Uses 1x 4k page. */
-GLOBAL(pse_l1_identmap)
+PAGETABLE_START(pse_l1_identmap)
         .long 0 /* Unmap page at 0 to catch errors with NULL pointers. */
         .rept PSE_L1_PT_ENTRIES - 1
         .long (PSE_IDX(pse_l1_identmap) << PSE_L1_PT_SHIFT) + PAGE_COMMON
         .endr
-SIZE(pse_l1_identmap)
+PAGETABLE_END(pse_l1_identmap)
 
 /* PSE mappings up to 4G, mostly in 4M superpages.  Uses 1x 4k page. */
-GLOBAL(pse_l2_identmap)
+PAGETABLE_START(pse_l2_identmap)
         .long pse_l1_identmap + PAGE_COMMON
         .rept PSE_L2_PT_ENTRIES - 1
         .long (PSE_IDX(pse_l2_identmap) << PSE_L2_PT_SHIFT) + _PAGE_PSE + PAGE_COMMON
         .endr
-SIZE(pse_l1_identmap)
+PAGETABLE_END(pse_l2_identmap)
 
 /* PAE l3 32bit quad.  Contains 4 64bit entries. */
-GLOBAL(pae32_l3_identmap)
+PAGETABLE_START(pae32_l3_identmap)
         .rept PAE32_L3_ENTRIES
         .long pae_l2_identmap + (PAE_IDX(pae32_l3_identmap) << PAGE_SHIFT) + _PAGE_PRESENT
         .long 0
         .endr
-SIZE(pae32_l3_identmap)
+PAGETABLE_END(pae32_l3_identmap)
 
 /*
  * Local variables: