diff -r f529cd119470 tools/libxc/xc_domain.c --- a/tools/libxc/xc_domain.c Thu Sep 29 17:28:28 2005 +++ b/tools/libxc/xc_domain.c Mon Oct 3 13:04:34 2005 @@ -140,7 +140,7 @@ op.cmd = DOM0_GETDOMAININFOLIST; op.u.getdomaininfolist.first_domain = first_domain; op.u.getdomaininfolist.max_domains = max_domains; - op.u.getdomaininfolist.buffer = info; + op.u.getdomaininfolist.buffer = (u64)(ulong)info; if ( xc_dom0_op(xc_handle, &op) < 0 ) ret = -1; @@ -194,7 +194,7 @@ op.cmd = DOM0_SHADOW_CONTROL; op.u.shadow_control.domain = (domid_t)domid; op.u.shadow_control.op = sop; - op.u.shadow_control.dirty_bitmap = dirty_bitmap; + op.u.shadow_control.dirty_bitmap = (u64)(ulong)dirty_bitmap; op.u.shadow_control.pages = pages; rc = do_dom0_op(xc_handle, &op); diff -r f529cd119470 tools/libxc/xc_private.c --- a/tools/libxc/xc_private.c Thu Sep 29 17:28:28 2005 +++ b/tools/libxc/xc_private.c Mon Oct 3 13:04:34 2005 @@ -72,7 +72,7 @@ op.cmd = DOM0_GETPAGEFRAMEINFO2; op.u.getpageframeinfo2.domain = (domid_t)dom; op.u.getpageframeinfo2.num = num; - op.u.getpageframeinfo2.array = arr; + op.u.getpageframeinfo2.array = (u64)(ulong)arr; return do_dom0_op(xc_handle, &op); } diff -r f529cd119470 tools/xenstat/libxenstat/src/xen-interface.c --- a/tools/xenstat/libxenstat/src/xen-interface.c Thu Sep 29 17:28:28 2005 +++ b/tools/xenstat/libxenstat/src/xen-interface.c Mon Oct 3 13:04:34 2005 @@ -160,7 +160,7 @@ dom0_op_t op; op.u.getdomaininfolist.first_domain = first_domain; op.u.getdomaininfolist.max_domains = max_domains; - op.u.getdomaininfolist.buffer = info; + op.u.getdomaininfolist.buffer = (u64)(ulong)info; if (mlock( info, max_domains * sizeof(dom0_getdomaininfo_t)) < 0) { perror("Failed to mlock domaininfo array"); diff -r f529cd119470 xen/arch/x86/dom0_ops.c --- a/xen/arch/x86/dom0_ops.c Thu Sep 29 17:28:28 2005 +++ b/xen/arch/x86/dom0_ops.c Mon Oct 3 13:04:34 2005 @@ -132,7 +132,8 @@ case DOM0_MICROCODE: { extern int microcode_update(void *buf, unsigned long len); - ret = microcode_update(op->u.microcode.data, op->u.microcode.length); + void *buf = (void *)(ulong)op->u.microcode.data; + ret = microcode_update(buf, op->u.microcode.length); } break; @@ -252,7 +253,7 @@ int n,j; int num = op->u.getpageframeinfo2.num; domid_t dom = op->u.getpageframeinfo2.domain; - unsigned long *s_ptr = (unsigned long*) op->u.getpageframeinfo2.array; + ulong *s_ptr = (ulong*)(ulong)op->u.getpageframeinfo2.array; struct domain *d; unsigned long *l_arr; ret = -ESRCH; @@ -399,13 +400,15 @@ for ( i = 0; i < e820.nr_map; i++ ) { + struct dom0_memory_map_entry *entries = + (struct dom0_memory_map_entry *)(ulong)op->u.physical_memory_map.memory_map; if ( i >= op->u.physical_memory_map.max_map_entries ) break; entry.start = e820.map[i].addr; entry.end = e820.map[i].addr + e820.map[i].size; entry.is_ram = (e820.map[i].type == E820_RAM); (void)copy_to_user( - &op->u.physical_memory_map.memory_map[i], + &entries[i], &entry, sizeof(entry)); } diff -r f529cd119470 xen/arch/x86/shadow32.c --- a/xen/arch/x86/shadow32.c Thu Sep 29 17:28:28 2005 +++ b/xen/arch/x86/shadow32.c Mon Oct 3 13:04:34 2005 @@ -1224,6 +1224,7 @@ unsigned int op = sc->op; int i, rc = 0; struct vcpu *v; + void *dirty_bitmap = (void *)(ulong)sc->dirty_bitmap; ASSERT(shadow_lock_is_acquired(d)); @@ -1260,7 +1261,7 @@ d->arch.shadow_dirty_block_count = 0; if ( (d->max_pages > sc->pages) || - (sc->dirty_bitmap == NULL) || + (dirty_bitmap == NULL) || (d->arch.shadow_dirty_bitmap == NULL) ) { rc = -EINVAL; @@ -1276,7 +1277,7 @@ chunk : (d->max_pages - i)) + 7) / 8; if (copy_to_user( - sc->dirty_bitmap + (i/(8*sizeof(unsigned long))), + dirty_bitmap + (i/(8*sizeof(unsigned long))), d->arch.shadow_dirty_bitmap +(i/(8*sizeof(unsigned long))), bytes)) { @@ -1304,7 +1305,7 @@ sc->stats.dirty_block_count = d->arch.shadow_dirty_block_count; if ( (d->max_pages > sc->pages) || - (sc->dirty_bitmap == NULL) || + (dirty_bitmap == NULL) || (d->arch.shadow_dirty_bitmap == NULL) ) { rc = -EINVAL; @@ -1313,7 +1314,7 @@ sc->pages = d->max_pages; if (copy_to_user( - sc->dirty_bitmap, d->arch.shadow_dirty_bitmap, (d->max_pages+7)/8)) + dirty_bitmap, d->arch.shadow_dirty_bitmap, (d->max_pages+7)/8)) { rc = -EINVAL; break; diff -r f529cd119470 xen/common/dom0_ops.c --- a/xen/common/dom0_ops.c Thu Sep 29 17:28:28 2005 +++ b/xen/common/dom0_ops.c Mon Oct 3 13:04:34 2005 @@ -359,7 +359,8 @@ { struct domain *d; dom0_getdomaininfo_t info; - dom0_getdomaininfo_t *buffer = op->u.getdomaininfolist.buffer; + dom0_getdomaininfo_t *buffer = + (dom0_getdomaininfo_t *)(ulong)op->u.getdomaininfolist.buffer; u32 num_domains = 0; read_lock(&domlist_lock); diff -r f529cd119470 xen/include/public/dom0_ops.h --- a/xen/include/public/dom0_ops.h Thu Sep 29 17:28:28 2005 +++ b/xen/include/public/dom0_ops.h Mon Oct 3 13:04:34 2005 @@ -27,10 +27,10 @@ typedef struct { /* IN variables. */ domid_t domain; - unsigned long max_pfns; + u64 max_pfns; void *buffer; /* OUT variables. */ - unsigned long num_pfns; + u64 num_pfns; } dom0_getmemlist_t; #define DOM0_SCHEDCTL 6 @@ -83,9 +83,9 @@ #define DOMFLAGS_SHUTDOWNMASK 255 /* DOMFLAGS_SHUTDOWN guest-supplied code. */ #define DOMFLAGS_SHUTDOWNSHIFT 16 u32 flags; - unsigned long tot_pages; - unsigned long max_pages; - unsigned long shared_info_frame; /* MFN of shared_info struct */ + u64 tot_pages; + u64 max_pages; + u64 shared_info_frame; /* MFN of shared_info struct */ u64 cpu_time; u32 n_vcpu; s32 vcpu_to_cpu[MAX_VIRT_CPUS]; /* current mapping */ @@ -155,7 +155,7 @@ typedef struct { /* IN variables. */ - unsigned long pfn; /* Machine page frame number to query. */ + u64 pfn; /* Machine page frame number to query. */ domid_t domain; /* To which domain does the frame belong? */ /* OUT variables. */ /* Is the page PINNED to a type? */ @@ -194,10 +194,10 @@ #define DOM0_TBUF_SET_EVT_MASK 2 u8 op; /* IN/OUT variables */ - unsigned long cpu_mask; + u64 cpu_mask; u32 evt_mask; /* OUT variables */ - unsigned long buffer_mfn; + u64 buffer_mfn; u32 size; } dom0_tbufcontrol_t; @@ -211,8 +211,8 @@ u32 sockets_per_node; u32 nr_nodes; u32 cpu_khz; - unsigned long total_pages; - unsigned long free_pages; + u64 total_pages; + u64 free_pages; u32 hw_cap[8]; } dom0_physinfo_t; @@ -251,9 +251,9 @@ /* IN variables. */ domid_t domain; u32 op; - unsigned long *dirty_bitmap; /* pointer to locked buffer */ + u64 dirty_bitmap; /* pointer to locked buffer */ /* IN/OUT variables. */ - unsigned long pages; /* size of buffer, updated with actual size */ + u64 pages; /* size of buffer, updated with actual size */ /* OUT variables. */ dom0_shadow_control_stats_t stats; } dom0_shadow_control_t; @@ -262,16 +262,16 @@ typedef struct { /* IN variables. */ domid_t domain; - unsigned long max_memkb; + u64 max_memkb; } dom0_setdomainmaxmem_t; #define DOM0_GETPAGEFRAMEINFO2 29 /* batched interface */ typedef struct { /* IN variables. */ domid_t domain; - unsigned long num; + u64 num; /* IN/OUT variables. */ - unsigned long *array; + u64 array; } dom0_getpageframeinfo2_t; /* @@ -284,8 +284,8 @@ #define DOM0_ADD_MEMTYPE 31 typedef struct { /* IN variables. */ - unsigned long pfn; - unsigned long nr_pfns; + u64 pfn; + u64 nr_pfns; u32 type; /* OUT variables. */ u32 handle; @@ -312,8 +312,8 @@ /* IN variables. */ u32 reg; /* OUT variables. */ - unsigned long pfn; - unsigned long nr_pfns; + u64 pfn; + u64 nr_pfns; u32 type; } dom0_read_memtype_t; @@ -338,7 +338,7 @@ #define DOM0_MICROCODE 35 typedef struct { /* IN variables. */ - void *data; /* Pointer to microcode data */ + u64 data; /* Pointer to microcode data */ u32 length; /* Length of microcode data. */ } dom0_microcode_t; @@ -363,7 +363,7 @@ /* IN variables. */ domid_t first_domain; unsigned int max_domains; - dom0_getdomaininfo_t *buffer; + u64 buffer; /* dom0_getdomaininfo_t* */ /* OUT variables. */ unsigned int num_domains; } dom0_getdomaininfolist_t; @@ -376,15 +376,16 @@ } dom0_platform_quirk_t; #define DOM0_PHYSICAL_MEMORY_MAP 40 +struct dom0_memory_map_entry { + u64 start, end; + int is_ram; +}; typedef struct { /* IN variables. */ int max_map_entries; /* OUT variables. */ int nr_map_entries; - struct dom0_memory_map_entry { - u64 start, end; - int is_ram; - } *memory_map; + u64 memory_map; /* dom0_memory_map_entry* */ } dom0_physical_memory_map_t; typedef struct {