diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-09-14 13:13:10 +0000 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-09-14 13:13:10 +0000 |
commit | 79434e94bd5c15cb865a1f7f61b6dc82fd731e4a (patch) | |
tree | efbdd343b52ca044f0069aee15324e081d8345e4 | |
parent | 714ecf5c5b2a3fc3099ce63db28b18a0cba30c84 (diff) | |
download | xen-79434e94bd5c15cb865a1f7f61b6dc82fd731e4a.tar.gz xen-79434e94bd5c15cb865a1f7f61b6dc82fd731e4a.tar.bz2 xen-79434e94bd5c15cb865a1f7f61b6dc82fd731e4a.zip |
Get rid of anonymous unions in public header files.
Signed-off-by: Keir Fraser <keir@xensource.com>
-rw-r--r-- | extras/mini-os/mm.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c | 34 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/netback/netback.c | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h | 8 | ||||
-rw-r--r-- | tools/libxc/xc_linux_restore.c | 2 | ||||
-rw-r--r-- | tools/libxc/xg_private.c | 2 | ||||
-rw-r--r-- | xen/arch/x86/mm.c | 43 | ||||
-rw-r--r-- | xen/include/public/arch-x86_64.h | 30 | ||||
-rw-r--r-- | xen/include/public/xen.h | 4 |
10 files changed, 73 insertions, 62 deletions
diff --git a/extras/mini-os/mm.c b/extras/mini-os/mm.c index 72970bca92..700805723e 100644 --- a/extras/mini-os/mm.c +++ b/extras/mini-os/mm.c @@ -432,7 +432,7 @@ void build_pagetable(unsigned long *start_pfn, unsigned long *max_pfn) /* Pin the page to provide correct protection */ pin_request.cmd = MMUEXT_PIN_L1_TABLE; - pin_request.mfn = pfn_to_mfn(pt_frame); + pin_request.arg1.mfn = pfn_to_mfn(pt_frame); if(HYPERVISOR_mmuext_op(&pin_request, 1, NULL, DOMID_SELF) < 0) { printk("ERROR: pinning failed\n"); diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c b/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c index 1b20354c97..a30d64f876 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c +++ b/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c @@ -115,7 +115,7 @@ void xen_pt_switch(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_NEW_BASEPTR; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -123,7 +123,7 @@ void xen_new_user_pt(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_NEW_USER_BASEPTR; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -138,7 +138,7 @@ void xen_invlpg(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_INVLPG_LOCAL; - op.linear_addr = ptr & PAGE_MASK; + op.arg1.linear_addr = ptr & PAGE_MASK; BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -157,7 +157,7 @@ void xen_tlb_flush_mask(cpumask_t *mask) if ( cpus_empty(*mask) ) return; op.cmd = MMUEXT_TLB_FLUSH_MULTI; - op.vcpumask = mask->bits; + op.arg2.vcpumask = mask->bits; BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -165,7 +165,7 @@ void xen_invlpg_all(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_INVLPG_ALL; - op.linear_addr = ptr & PAGE_MASK; + op.arg1.linear_addr = ptr & PAGE_MASK; BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -175,8 +175,8 @@ void xen_invlpg_mask(cpumask_t *mask, unsigned long ptr) if ( cpus_empty(*mask) ) return; op.cmd = MMUEXT_INVLPG_MULTI; - op.vcpumask = mask->bits; - op.linear_addr = ptr & PAGE_MASK; + op.arg1.linear_addr = ptr & PAGE_MASK; + op.arg2.vcpumask = mask->bits; BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -193,7 +193,7 @@ void xen_pgd_pin(unsigned long ptr) #else op.cmd = MMUEXT_PIN_L2_TABLE; #endif - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -201,7 +201,7 @@ void xen_pgd_unpin(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_UNPIN_TABLE; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -209,7 +209,7 @@ void xen_pte_pin(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_PIN_L1_TABLE; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -217,7 +217,7 @@ void xen_pte_unpin(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_UNPIN_TABLE; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -226,7 +226,7 @@ void xen_pud_pin(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_PIN_L3_TABLE; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -234,7 +234,7 @@ void xen_pud_unpin(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_UNPIN_TABLE; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -242,7 +242,7 @@ void xen_pmd_pin(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_PIN_L2_TABLE; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } @@ -250,7 +250,7 @@ void xen_pmd_unpin(unsigned long ptr) { struct mmuext_op op; op.cmd = MMUEXT_UNPIN_TABLE; - op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); + op.arg1.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } #endif /* CONFIG_X86_64 */ @@ -260,8 +260,8 @@ void xen_set_ldt(unsigned long ptr, unsigned long len) { struct mmuext_op op; op.cmd = MMUEXT_SET_LDT; - op.linear_addr = ptr; - op.nr_ents = len; + op.arg1.linear_addr = ptr; + op.arg2.nr_ents = len; BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); } diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c index 40eac7b491..2267c3c1e4 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c +++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c @@ -294,7 +294,7 @@ static void net_rx_action(unsigned long unused) mcl++; mmuext->cmd = MMUEXT_REASSIGN_PAGE; - mmuext->mfn = old_mfn; + mmuext->arg1.mfn = old_mfn; mmuext++; #endif mmu->ptr = ((unsigned long long)new_mfn << PAGE_SHIFT) | MMU_MACHPHYS_UPDATE; @@ -355,7 +355,7 @@ static void net_rx_action(unsigned long unused) #ifdef CONFIG_XEN_NETDEV_GRANT old_mfn = 0; /* XXX Fix this so we can free_mfn() on error! */ #else - old_mfn = mmuext[0].mfn; + old_mfn = mmuext[0].arg1.mfn; #endif atomic_set(&(skb_shinfo(skb)->dataref), 1); skb_shinfo(skb)->nr_frags = 0; diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h index 914b9d2ae3..c5567bc9b3 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h @@ -67,7 +67,7 @@ static inline void switch_mm(struct mm_struct *prev, /* Re-load page tables: load_cr3(next->pgd) */ per_cpu(cur_pgd, cpu) = next->pgd; op->cmd = MMUEXT_NEW_BASEPTR; - op->mfn = pfn_to_mfn(__pa(next->pgd) >> PAGE_SHIFT); + op->arg1.mfn = pfn_to_mfn(__pa(next->pgd) >> PAGE_SHIFT); op++; /* @@ -76,8 +76,8 @@ static inline void switch_mm(struct mm_struct *prev, if (unlikely(prev->context.ldt != next->context.ldt)) { /* load_LDT_nolock(&next->context, cpu) */ op->cmd = MMUEXT_SET_LDT; - op->linear_addr = (unsigned long)next->context.ldt; - op->nr_ents = next->context.size; + op->arg1.linear_addr = (unsigned long)next->context.ldt; + op->arg2.nr_ents = next->context.size; op++; } diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h index 43512ae075..9558ddc045 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h @@ -83,19 +83,19 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, /* load_cr3(next->pgd) */ per_cpu(cur_pgd, smp_processor_id()) = next->pgd; op->cmd = MMUEXT_NEW_BASEPTR; - op->mfn = pfn_to_mfn(__pa(next->pgd) >> PAGE_SHIFT); + op->arg1.mfn = pfn_to_mfn(__pa(next->pgd) >> PAGE_SHIFT); op++; /* xen_new_user_pt(__pa(__user_pgd(next->pgd))) */ op->cmd = MMUEXT_NEW_USER_BASEPTR; - op->mfn = pfn_to_mfn(__pa(__user_pgd(next->pgd)) >> PAGE_SHIFT); + op->arg1.mfn = pfn_to_mfn(__pa(__user_pgd(next->pgd)) >> PAGE_SHIFT); op++; if (unlikely(next->context.ldt != prev->context.ldt)) { /* load_LDT_nolock(&next->context, cpu) */ op->cmd = MMUEXT_SET_LDT; - op->linear_addr = (unsigned long)next->context.ldt; - op->nr_ents = next->context.size; + op->arg1.linear_addr = (unsigned long)next->context.ldt; + op->arg2.nr_ents = next->context.size; op++; } diff --git a/tools/libxc/xc_linux_restore.c b/tools/libxc/xc_linux_restore.c index 90fb89ca38..7d4e43eba3 100644 --- a/tools/libxc/xc_linux_restore.c +++ b/tools/libxc/xc_linux_restore.c @@ -421,7 +421,7 @@ int xc_linux_restore(int xc_handle, int io_fd, u32 dom, unsigned long nr_pfns, pin[nr_pins].cmd = MMUEXT_PIN_L1_TABLE; else /* pfn_type[i] == (L2TAB|LPINTAB) */ pin[nr_pins].cmd = MMUEXT_PIN_L2_TABLE; - pin[nr_pins].mfn = pfn_to_mfn_table[i]; + pin[nr_pins].arg1.mfn = pfn_to_mfn_table[i]; if ( ++nr_pins == MAX_PIN_BATCH ) { if ( xc_mmuext_op(xc_handle, pin, nr_pins, dom) < 0 ) diff --git a/tools/libxc/xg_private.c b/tools/libxc/xg_private.c index 9b04ad8f6a..355ba1400d 100644 --- a/tools/libxc/xg_private.c +++ b/tools/libxc/xg_private.c @@ -65,7 +65,7 @@ int pin_table( struct mmuext_op op; op.cmd = type; - op.mfn = mfn; + op.arg1.mfn = mfn; if ( xc_mmuext_op(xc_handle, &op, 1, dom) < 0 ) return 1; diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 1bb0e7ba8c..c0887f960c 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -1659,7 +1659,7 @@ int do_mmuext_op( { struct mmuext_op op; int rc = 0, i = 0, okay, cpu = smp_processor_id(); - unsigned long type, done = 0; + unsigned long mfn, type, done = 0; struct pfn_info *page; struct vcpu *v = current; struct domain *d = v->domain, *e; @@ -1706,7 +1706,8 @@ int do_mmuext_op( } okay = 1; - page = &frame_table[op.mfn]; + mfn = op.arg1.mfn; + page = &frame_table[mfn]; switch ( op.cmd ) { @@ -1717,17 +1718,17 @@ int do_mmuext_op( if ( shadow_mode_refcounts(FOREIGNDOM) ) type = PGT_writable_page; - okay = get_page_and_type_from_pagenr(op.mfn, type, FOREIGNDOM); + okay = get_page_and_type_from_pagenr(mfn, type, FOREIGNDOM); if ( unlikely(!okay) ) { - MEM_LOG("Error while pinning mfn %lx", op.mfn); + MEM_LOG("Error while pinning mfn %lx", mfn); break; } if ( unlikely(test_and_set_bit(_PGT_pinned, &page->u.inuse.type_info)) ) { - MEM_LOG("Mfn %lx already pinned", op.mfn); + MEM_LOG("Mfn %lx already pinned", mfn); put_page_and_type(page); okay = 0; break; @@ -1750,10 +1751,10 @@ int do_mmuext_op( goto pin_page; case MMUEXT_UNPIN_TABLE: - if ( unlikely(!(okay = get_page_from_pagenr(op.mfn, FOREIGNDOM))) ) + if ( unlikely(!(okay = get_page_from_pagenr(mfn, FOREIGNDOM))) ) { MEM_LOG("Mfn %lx bad domain (dom=%p)", - op.mfn, page_get_owner(page)); + mfn, page_get_owner(page)); } else if ( likely(test_and_clear_bit(_PGT_pinned, &page->u.inuse.type_info)) ) @@ -1765,28 +1766,28 @@ int do_mmuext_op( { okay = 0; put_page(page); - MEM_LOG("Mfn %lx not pinned", op.mfn); + MEM_LOG("Mfn %lx not pinned", mfn); } break; case MMUEXT_NEW_BASEPTR: - okay = new_guest_cr3(op.mfn); + okay = new_guest_cr3(mfn); percpu_info[cpu].deferred_ops &= ~DOP_FLUSH_TLB; break; #ifdef __x86_64__ case MMUEXT_NEW_USER_BASEPTR: okay = get_page_and_type_from_pagenr( - op.mfn, PGT_root_page_table, d); + mfn, PGT_root_page_table, d); if ( unlikely(!okay) ) { - MEM_LOG("Error while installing new mfn %lx", op.mfn); + MEM_LOG("Error while installing new mfn %lx", mfn); } else { unsigned long old_mfn = pagetable_get_pfn(v->arch.guest_table_user); - v->arch.guest_table_user = mk_pagetable(op.mfn << PAGE_SHIFT); + v->arch.guest_table_user = mk_pagetable(mfn << PAGE_SHIFT); if ( old_mfn != 0 ) put_page_and_type(&frame_table[old_mfn]); } @@ -1799,8 +1800,8 @@ int do_mmuext_op( case MMUEXT_INVLPG_LOCAL: if ( shadow_mode_enabled(d) ) - shadow_invlpg(v, op.linear_addr); - local_flush_tlb_one(op.linear_addr); + shadow_invlpg(v, op.arg1.linear_addr); + local_flush_tlb_one(op.arg1.linear_addr); break; case MMUEXT_TLB_FLUSH_MULTI: @@ -1808,7 +1809,7 @@ int do_mmuext_op( { unsigned long vmask; cpumask_t pmask; - if ( unlikely(get_user(vmask, (unsigned long *)op.vcpumask)) ) + if ( unlikely(get_user(vmask, (unsigned long *)op.arg2.vcpumask)) ) { okay = 0; break; @@ -1818,7 +1819,7 @@ int do_mmuext_op( if ( op.cmd == MMUEXT_TLB_FLUSH_MULTI ) flush_tlb_mask(pmask); else - flush_tlb_one_mask(pmask, op.linear_addr); + flush_tlb_one_mask(pmask, op.arg1.linear_addr); break; } @@ -1827,7 +1828,7 @@ int do_mmuext_op( break; case MMUEXT_INVLPG_ALL: - flush_tlb_one_mask(d->cpumask, op.linear_addr); + flush_tlb_one_mask(d->cpumask, op.arg1.linear_addr); break; case MMUEXT_FLUSH_CACHE: @@ -1852,8 +1853,8 @@ int do_mmuext_op( break; } - unsigned long ptr = op.linear_addr; - unsigned long ents = op.nr_ents; + unsigned long ptr = op.arg1.linear_addr; + unsigned long ents = op.arg2.nr_ents; if ( ((ptr & (PAGE_SIZE-1)) != 0) || (ents > 8192) || !array_access_ok(ptr, ents, LDT_ENTRY_SIZE) ) @@ -1886,7 +1887,7 @@ int do_mmuext_op( e = percpu_info[cpu].foreign; if ( unlikely(e == NULL) ) { - MEM_LOG("No FOREIGNDOM to reassign mfn %lx to", op.mfn); + MEM_LOG("No FOREIGNDOM to reassign mfn %lx to", mfn); okay = 0; break; } @@ -1919,7 +1920,7 @@ int do_mmuext_op( { MEM_LOG("Transferee has no reservation headroom (%d,%d), or " "page is in Xen heap (%lx), or dom is dying (%ld).", - e->tot_pages, e->max_pages, op.mfn, e->domain_flags); + e->tot_pages, e->max_pages, mfn, e->domain_flags); okay = 0; goto reassign_fail; } diff --git a/xen/include/public/arch-x86_64.h b/xen/include/public/arch-x86_64.h index 3cb8a2a785..04eae96852 100644 --- a/xen/include/public/arch-x86_64.h +++ b/xen/include/public/arch-x86_64.h @@ -124,30 +124,38 @@ typedef struct trap_info { unsigned long address; /* code offset */ } trap_info_t; +#ifdef __GNUC__ +/* Anonymous union includes both 32- and 64-bit names (e.g., eax/rax). */ +#define __DECL_REG(name) union { u64 r ## name, e ## name; } +#else +/* Non-gcc sources must always use the proper 64-bit name (e.g., rax). */ +#define __DECL_REG(name) u64 r ## name +#endif + typedef struct cpu_user_regs { u64 r15; u64 r14; u64 r13; u64 r12; - union { u64 rbp, ebp; }; - union { u64 rbx, ebx; }; + __DECL_REG(bp); + __DECL_REG(bx); u64 r11; u64 r10; u64 r9; u64 r8; - union { u64 rax, eax; }; - union { u64 rcx, ecx; }; - union { u64 rdx, edx; }; - union { u64 rsi, esi; }; - union { u64 rdi, edi; }; + __DECL_REG(ax); + __DECL_REG(cx); + __DECL_REG(dx); + __DECL_REG(si); + __DECL_REG(di); u32 error_code; /* private */ u32 entry_vector; /* private */ - union { u64 rip, eip; }; + __DECL_REG(ip); u16 cs, _pad0[1]; u8 saved_upcall_mask; u8 _pad1[3]; - union { u64 rflags, eflags; }; - union { u64 rsp, esp; }; + __DECL_REG(flags); + __DECL_REG(sp); u16 ss, _pad2[3]; u16 es, _pad3[3]; u16 ds, _pad4[3]; @@ -155,6 +163,8 @@ typedef struct cpu_user_regs { u16 gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_user. */ } cpu_user_regs_t; +#undef __DECL_REG + typedef u64 tsc_timestamp_t; /* RDTSC timestamp */ /* diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h index 7a6dc1bb37..d891566a4e 100644 --- a/xen/include/public/xen.h +++ b/xen/include/public/xen.h @@ -174,13 +174,13 @@ struct mmuext_op { unsigned long mfn; /* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */ unsigned long linear_addr; - }; + } arg1; union { /* SET_LDT */ unsigned int nr_ents; /* TLB_FLUSH_MULTI, INVLPG_MULTI */ void *vcpumask; - }; + } arg2; }; #endif |