[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC, PATCH] bitops take a long



In the spirit of portability and stronger type checking, took one from the pages of Linux and converted all bitops to use "unsigned long *" instead "void *".

Standardizing on this will also help with ports to architectures that have limited atomic bitop types, especially in the linux code rather than the Xen code.

Linux did it:
  http://www.ussg.iu.edu/hypermail/linux/kernel/0204.2/0024.html

Only compile tested.
Interesting items are:
  1. vcpu_info_t.evtchn_upcall_pending, is really a boolean of one bit,
     so perhaps this should be an atomic_t or compare/exchange?

  2. INTER_LEN could be based on long rather that u64
  3. more use of DECLARE_BITMAP

-JX

Signed-Off-By: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
---
$ diffstat -p1 b.diff
linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S                 |    2
linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S               |    2
linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/synch_bitops.h | 18 +++--- xen/arch/x86/audit.c | 8 +-- xen/arch/x86/domain.c | 4 - xen/arch/x86/domain_build.c | 12 ++-- xen/arch/x86/hvm/svm/svm.c | 5 +
xen/arch/x86/hvm/svm/vmcb.c                                       |    2
xen/arch/x86/hvm/vlapic.c | 6 +- xen/arch/x86/hvm/vmx/vmx.c | 18 ++++-- xen/arch/x86/irq.c | 8 +--
xen/arch/x86/mm.c                                                 |    2
xen/arch/x86/smp.c                                                |    2
xen/common/keyhandler.c                                           |    2
xen/include/asm-x86/bitops.h | 26 +++++-----
xen/include/asm-x86/hardirq.h                                     |    2
xen/include/asm-x86/hvm/svm/vmcb.h                                |    2
xen/include/asm-x86/hvm/vioapic.h | 4 - xen/include/asm-x86/hvm/vlapic.h | 10 +--
xen/include/asm-x86/mm.h                                          |    2
xen/include/asm-x86/processor.h                                   |    2
xen/include/asm-x86/shadow.h | 6 +-
xen/include/public/grant_table.h                                  |    2
xen/include/public/hvm/ioreq.h                                    |    1
xen/include/public/xen.h                                          |    2
xen/include/xen/sched.h                                           |    2
26 files changed, 79 insertions(+), 73 deletions(-)

diff -r 401624a17ef7 linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S
--- a/linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S Thu Mar 23 14:45:21 2006 +0100 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S Fri Mar 24 07:33:22 2006 -0500
@@ -103,7 +103,7 @@ NMI_MASK    = 0x80000000
                                __DISABLE_INTERRUPTS
#define ENABLE_INTERRUPTS       GET_VCPU_INFO                           ; \
                                __ENABLE_INTERRUPTS
-#define __TEST_PENDING         testb $0xFF,evtchn_upcall_pending(%esi)
+#define __TEST_PENDING         testl $-1,evtchn_upcall_pending(%esi)
#endif
#ifdef CONFIG_PREEMPT
diff -r 401624a17ef7 linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S Thu Mar 23 14:45:21 2006 +0100 +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S Fri Mar 24 07:33:22 2006 -0500
@@ -33,7 +33,7 @@
#define XEN_UNBLOCK_EVENTS(reg) XEN_GET_VCPU_INFO(reg)                  ; \
                                XEN_LOCKED_UNBLOCK_EVENTS(reg)          ; \
                                XEN_PUT_VCPU_INFO(reg)
-#define XEN_TEST_PENDING(reg)  testb $0xFF,evtchn_upcall_pending(reg)
+#define XEN_TEST_PENDING(reg)  testl $-1,evtchn_upcall_pending(reg)
EVENT_MASK      = (CS+4)
VGCF_IN_SYSCALL = (1<<8)
diff -r 401624a17ef7 linux-2.6-xen-sparse/include/asm-i386/mach-xen/ asm/synch_bitops.h --- a/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/ synch_bitops.h Thu Mar 23 14:45:21 2006 +0100 +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/ synch_bitops.h Fri Mar 24 07:33:22 2006 -0500
@@ -11,28 +11,28 @@
#define ADDR (*(volatile long *) addr)
-static __inline__ void synch_set_bit(int nr, volatile void * addr)
+static __inline__ void synch_set_bit(int nr, volatile unsigned long * addr)
{
     __asm__ __volatile__ (
         "lock btsl %1,%0"
         : "+m" (ADDR) : "Ir" (nr) : "memory" );
}
-static __inline__ void synch_clear_bit(int nr, volatile void * addr)
+static __inline__ void synch_clear_bit(int nr, volatile unsigned long * addr)
{
     __asm__ __volatile__ (
         "lock btrl %1,%0"
         : "+m" (ADDR) : "Ir" (nr) : "memory" );
}
-static __inline__ void synch_change_bit(int nr, volatile void * addr)
+static __inline__ void synch_change_bit(int nr, volatile unsigned long * addr)
{
     __asm__ __volatile__ (
         "lock btcl %1,%0"
         : "+m" (ADDR) : "Ir" (nr) : "memory" );
}
-static __inline__ int synch_test_and_set_bit(int nr, volatile void * addr) +static __inline__ int synch_test_and_set_bit(int nr, volatile unsigned long * addr)
{
     int oldbit;
     __asm__ __volatile__ (
@@ -41,7 +41,7 @@ static __inline__ int synch_test_and_set
     return oldbit;
}
-static __inline__ int synch_test_and_clear_bit(int nr, volatile void * addr) +static __inline__ int synch_test_and_clear_bit(int nr, volatile unsigned long * addr)
{
     int oldbit;
     __asm__ __volatile__ (
@@ -50,7 +50,7 @@ static __inline__ int synch_test_and_cle
     return oldbit;
}
-static __inline__ int synch_test_and_change_bit(int nr, volatile void * addr) +static __inline__ int synch_test_and_change_bit(int nr, volatile unsigned long * addr)
{
     int oldbit;
@@ -69,7 +69,7 @@ struct __synch_xchg_dummy { unsigned lon
                                      (unsigned long)(new), \
                                      sizeof(*(ptr))))
-static inline unsigned long __synch_cmpxchg(volatile void *ptr,
+static inline unsigned long __synch_cmpxchg(volatile unsigned long *ptr,
                                            unsigned long old,
                                            unsigned long new, int size)
{
@@ -118,13 +118,13 @@ static inline unsigned long __synch_cmpx
}
static __always_inline int synch_const_test_bit(int nr,
-                                               const volatile void * addr)
+                                               const volatile unsigned long * 
addr)
{
     return ((1UL << (nr & 31)) &
             (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
}
-static __inline__ int synch_var_test_bit(int nr, volatile void * addr)
+static __inline__ int synch_var_test_bit(int nr, volatile unsigned long * addr)
{
     int oldbit;
     __asm__ __volatile__ (
diff -r 401624a17ef7 xen/arch/x86/audit.c
--- a/xen/arch/x86/audit.c      Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/audit.c      Fri Mar 24 07:33:22 2006 -0500
@@ -259,7 +259,7 @@ int audit_adjust_pgtables(struct domain
                     if ( page_get_owner(gpage) != d )
                     {
printk("Audit %d: [hl2mfn=%lx,i=%x] Skip foreign page "
-                               "dom=%p (id=%d) mfn=%lx c=%08x t=%"
+                               "dom=%p (id=%d) mfn=%lx c=%08lx t=%"
                               PRtype_info "\n",
                                d->domain_id, hl2mfn, i,
                                page_get_owner(gpage),
@@ -331,7 +331,7 @@ int audit_adjust_pgtables(struct domain
                     if ( page_get_owner(gpage) != d )
                     {
printk("Audit %d: [l1mfn=%lx,i=%x] Skip foreign page "
-                               "dom=%p (id=%d) mfn=%lx c=%08x t=%"
+                               "dom=%p (id=%d) mfn=%lx c=%08lx t=%"
                               PRtype_info "\n",
                                d->domain_id, l1mfn, i,
                                page_get_owner(gpage),
@@ -480,7 +480,7 @@ int audit_adjust_pgtables(struct domain
                     if ( shadow_refcounts )
                     {
                         printk("Audit %d: found an L2 guest page "
- "mfn=%lx t=%" PRtype_info " c=%08x while in shadow mode\n", + "mfn=%lx t=%" PRtype_info " c=%08lx while in shadow mode\n", d->domain_id, mfn, page- >u.inuse.type_info,
                                page->count_info);
                         errors++;
@@ -516,7 +516,7 @@ int audit_adjust_pgtables(struct domain
                     if ( shadow_refcounts )
                     {
                         printk("found an L1 guest page mfn=%lx t=%"
-                              PRtype_info " c=%08x "
+                              PRtype_info " c=%08lx "
                                "while in shadow mode\n",
mfn, page->u.inuse.type_info, page- >count_info);
                         errors++;
diff -r 401624a17ef7 xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/domain.c     Fri Mar 24 07:33:22 2006 -0500
@@ -194,7 +194,7 @@ void dump_pageframe_info(struct domain *
     {
         list_for_each_entry ( page, &d->page_list, list )
         {
- printk(" DomPage %p: mfn=%p, caf=%08x, taf=%" PRtype_info "\n", + printk(" DomPage %p: mfn=%p, caf=%08lx, taf=%" PRtype_info "\n",
                    _p(page_to_maddr(page)), _p(page_to_mfn(page)),
                    page->count_info, page->u.inuse.type_info);
         }
@@ -202,7 +202,7 @@ void dump_pageframe_info(struct domain *
     list_for_each_entry ( page, &d->xenpage_list, list )
     {
- printk(" XenPage %p: mfn=%p, caf=%08x, taf=%" PRtype_info "\n", + printk(" XenPage %p: mfn=%p, caf=%08lx, taf=%" PRtype_info "\n",
                _p(page_to_maddr(page)), _p(page_to_mfn(page)),
                page->count_info, page->u.inuse.type_info);
     }
diff -r 401624a17ef7 xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c       Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/domain_build.c       Fri Mar 24 07:33:22 2006 -0500
@@ -147,8 +147,8 @@ static const char *feature_names[XENFEAT
static void parse_features(
     const char *feats,
-    uint32_t supported[XENFEAT_NR_SUBMAPS],
-    uint32_t required[XENFEAT_NR_SUBMAPS])
+    unsigned long supported[XENFEAT_NR_SUBMAPS],
+    unsigned long required[XENFEAT_NR_SUBMAPS])
{
     const char *end, *p;
     int i, req;
@@ -249,8 +249,8 @@ int construct_dom0(struct domain *d,
     unsigned long mpt_alloc;
     /* Features supported. */
-    uint32_t dom0_features_supported[XENFEAT_NR_SUBMAPS] = { 0 };
-    uint32_t dom0_features_required[XENFEAT_NR_SUBMAPS] = { 0 };
+    unsigned long dom0_features_supported[XENFEAT_NR_SUBMAPS] = { 0 };
+    unsigned long dom0_features_required[XENFEAT_NR_SUBMAPS] = { 0 };
     /* Sanity! */
     BUG_ON(d->domain_id != 0);
@@ -308,9 +308,9 @@ int construct_dom0(struct domain *d,
             p + strlen("FEATURES="),
             dom0_features_supported,
             dom0_features_required);
-        printk("Domain 0 kernel supports features = { %08x }.\n",
+        printk("Domain 0 kernel supports features = { %08lx }.\n",
                dom0_features_supported[0]);
-        printk("Domain 0 kernel requires features = { %08x }.\n",
+        printk("Domain 0 kernel requires features = { %08lx }.\n",
                dom0_features_required[0]);
         if ( dom0_features_required[0] )
panic("Domain 0 requires an unsupported hypervisor feature.\n");
diff -r 401624a17ef7 xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c        Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/hvm/svm/svm.c        Fri Mar 24 07:33:22 2006 -0500
@@ -430,7 +430,7 @@ int start_svm(void)
     ecx = cpuid_ecx(0x80000001);
     boot_cpu_data.x86_capability[5] = ecx;

-    if (!(test_bit(X86_FEATURE_SVME, &boot_cpu_data.x86_capability)))
+ if (!(test_bit(X86_FEATURE_SVME, &boot_cpu_data.x86_capability [0])))
         return 0;

     rdmsr(MSR_EFER, eax, edx);
@@ -901,7 +901,8 @@ static void svm_vmexit_do_cpuid(struct v
static void svm_vmexit_do_cpuid(struct vmcb_struct *vmcb, unsigned long input,
         struct cpu_user_regs *regs)
{
-    unsigned int eax, ebx, ecx, edx;
+    unsigned int eax, ebx;
+    unsigned long ecx, edx;
     unsigned long eip;
     struct vcpu *v = current;
     int inst_len;
diff -r 401624a17ef7 xen/arch/x86/hvm/svm/vmcb.c
--- a/xen/arch/x86/hvm/svm/vmcb.c       Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/hvm/svm/vmcb.c       Fri Mar 24 07:33:22 2006 -0500
@@ -106,7 +106,7 @@ static int construct_vmcb_controls(struc
static int construct_vmcb_controls(struct arch_svm_struct *arch_svm)
{
     struct vmcb_struct *vmcb;
-    u32 *iopm;
+    unsigned long *iopm;
     u32 *msrpm;
     vmcb = arch_svm->vmcb;
diff -r 401624a17ef7 xen/arch/x86/hvm/vlapic.c
--- a/xen/arch/x86/hvm/vlapic.c Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/hvm/vlapic.c Fri Mar 24 07:33:22 2006 -0500
@@ -86,7 +86,7 @@ int vlapic_find_highest_isr(struct vlapi
         int i = 0;
         printk("VLAPIC: isr on reserved bits %d, isr is\n ", result);
         for ( i = 0; i < INTR_LEN_32; i += 2 )
- printk("%d: 0x%08x%08x\n", i, vlapic->isr[i], vlapic->isr [i+1]); + printk("%d: 0x%08lx%08lx\n", i, vlapic->isr[i], vlapic- >isr[i+1]);
         return -1;
     }
@@ -287,7 +287,7 @@ struct vlapic* apic_round_robin(struct d
struct vlapic* apic_round_robin(struct domain *d,
                                 uint8_t dest_mode,
                                 uint8_t vector,
-                                uint32_t bitmap)
+                                unsigned long bitmap)
{
     int next, old;
     struct vlapic* target = NULL;
@@ -377,7 +377,7 @@ void vlapic_ipi(struct vlapic *vlapic)
     struct vlapic *target;
     struct vcpu *v = NULL;
-    uint32_t lpr_map;
+    unsigned long lpr_map;
     HVM_DBG_LOG(DBG_LEVEL_VLAPIC, "icr_high 0x%x, icr_low 0x%x, "
"short_hand 0x%x, dest 0x%x, trig_mode 0x%x, level 0x%x, "
diff -r 401624a17ef7 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Fri Mar 24 07:33:22 2006 -0500
@@ -562,7 +562,7 @@ int start_vmx(void)
     ecx = cpuid_ecx(1);
     boot_cpu_data.x86_capability[4] = ecx;
-    if (!(test_bit(X86_FEATURE_VMXE, &boot_cpu_data.x86_capability)))
+ if (!(test_bit(X86_FEATURE_VMXE, &boot_cpu_data.x86_capability [0])))
         return 0;
     rdmsr(IA32_FEATURE_CONTROL_MSR, eax, edx);
@@ -730,7 +730,8 @@ static void vmx_vmexit_do_cpuid(struct c
{
     unsigned int input = (unsigned int)regs->eax;
     unsigned int count = (unsigned int)regs->ecx;
-    unsigned int eax, ebx, ecx, edx;
+    unsigned int eax, ebx, ecx32, edx32;
+    unsigned long ecx, edx;
     unsigned long eip;
     struct vcpu *v = current;
@@ -739,13 +740,16 @@ static void vmx_vmexit_do_cpuid(struct c
     HVM_DBG_LOG(DBG_LEVEL_3, "(eax) 0x%08lx, (ebx) 0x%08lx, "
"(ecx) 0x%08lx, (edx) 0x%08lx, (esi) 0x%08lx, (edi) 0x%08lx",
                 (unsigned long)regs->eax, (unsigned long)regs->ebx,
-                (unsigned long)regs->ecx, (unsigned long)regs->edx,
+                regs->ecx, regs->edx,
                 (unsigned long)regs->esi, (unsigned long)regs->edi);
     if ( input == 4 )
-        cpuid_count(input, count, &eax, &ebx, &ecx, &edx);
+        cpuid_count(input, count, &eax, &ebx, &ecx32, &edx32);
     else
-        cpuid(input, &eax, &ebx, &ecx, &edx);
+        cpuid(input, &eax, &ebx, &ecx32, &edx32);
+
+    ecx = ecx32;
+    edx = edx32;
     if ( input == 1 )
     {
@@ -782,8 +786,8 @@ static void vmx_vmexit_do_cpuid(struct c
     regs->eax = (unsigned long) eax;
     regs->ebx = (unsigned long) ebx;
-    regs->ecx = (unsigned long) ecx;
-    regs->edx = (unsigned long) edx;
+    regs->ecx = ecx;
+    regs->edx = edx;
     HVM_DBG_LOG(DBG_LEVEL_3, "eip@%lx, input: 0x%lx, "
                 "output: eax = 0x%08lx, ebx = 0x%08lx, "
diff -r 401624a17ef7 xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c        Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/irq.c        Fri Mar 24 07:33:22 2006 -0500
@@ -162,7 +162,7 @@ static void __do_IRQ_guest(int vector)
     for ( i = 0; i < action->nr_guests; i++ )
     {
         d = action->guest[i];
-        if ( !test_and_set_bit(irq, &d->pirq_mask) )
+        if ( !test_and_set_bit(irq, &d->pirq_mask[0]) )
             action->in_flight++;
         send_guest_pirq(d, irq);
     }
@@ -186,7 +186,7 @@ int pirq_guest_unmask(struct domain *d)
             desc = &irq_desc[irq_to_vector(pirq)];
             spin_lock_irq(&desc->lock);
if ( !test_bit(d->pirq_to_evtchn[pirq], &s->evtchn_mask [0]) &&
-                 test_and_clear_bit(pirq, &d->pirq_mask) &&
+                 test_and_clear_bit(pirq, &d->pirq_mask[0]) &&
(--((irq_guest_action_t *)desc->action)->in_flight == 0) )
                 desc->handler->end(irq_to_vector(pirq));
             spin_unlock_irq(&desc->lock);
@@ -286,7 +286,7 @@ int pirq_guest_unbind(struct domain *d,
     action = (irq_guest_action_t *)desc->action;
-    if ( test_and_clear_bit(irq, &d->pirq_mask) &&
+    if ( test_and_clear_bit(irq, &d->pirq_mask[0]) &&
          (--action->in_flight == 0) )
         desc->handler->end(vector);
@@ -358,7 +358,7 @@ static void dump_irqs(unsigned char key)
                        (test_bit(d->pirq_to_evtchn[irq],
                                  &d->shared_info->evtchn_mask[0]) ?
                         'M' : '-'),
-                       (test_bit(irq, &d->pirq_mask) ?
+                       (test_bit(irq, &d->pirq_mask[0]) ?
                         'M' : '-'));
                 if ( i != action->nr_guests )
                     printk(",");
diff -r 401624a17ef7 xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/mm.c Fri Mar 24 07:33:22 2006 -0500
@@ -1322,7 +1322,7 @@ int alloc_page_type(struct page_info *pa
     case PGT_ldt_page:
         return alloc_segdesc_page(page);
     default:
- printk("Bad type in alloc_page_type %lx t=%" PRtype_info " c= %x\n", + printk("Bad type in alloc_page_type %lx t=%" PRtype_info " c= %lx\n",
                type, page->u.inuse.type_info,
                page->count_info);
         BUG();
diff -r 401624a17ef7 xen/arch/x86/smp.c
--- a/xen/arch/x86/smp.c        Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/arch/x86/smp.c        Fri Mar 24 07:33:22 2006 -0500
@@ -328,7 +328,7 @@ extern int on_selected_cpus(
static void stop_this_cpu (void *dummy)
{
-    clear_bit(smp_processor_id(), &cpu_online_map);
+    clear_bit(smp_processor_id(), &cpu_online_map.bits[0]);
     disable_local_APIC();
diff -r 401624a17ef7 xen/common/keyhandler.c
--- a/xen/common/keyhandler.c   Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/common/keyhandler.c   Fri Mar 24 07:33:22 2006 -0500
@@ -144,7 +144,7 @@ static void dump_domains(unsigned char k
                d->domain_id);
         for_each_vcpu ( d, v ) {
             printk("    VCPU%d: CPU%d [has=%c] flags=%lx "
-                   "upcall_pend = %02x, upcall_mask = %02x ",
+                   "upcall_pend = %02lx, upcall_mask = %02x ",
                    v->vcpu_id, v->processor,
                    test_bit(_VCPUF_running, &v->vcpu_flags) ? 'T':'F',
                    v->vcpu_flags,
diff -r 401624a17ef7 xen/include/asm-x86/bitops.h
--- a/xen/include/asm-x86/bitops.h      Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/bitops.h      Fri Mar 24 07:33:22 2006 -0500
@@ -33,7 +33,7 @@
  * Note that @nr may be almost arbitrarily large; this function is not
  * restricted to acting on a single-word quantity.
  */
-static __inline__ void set_bit(int nr, volatile void * addr)
+static __inline__ void set_bit(int nr, volatile unsigned long * addr)
{
        __asm__ __volatile__( LOCK_PREFIX
                "btsl %1,%0"
@@ -50,7 +50,7 @@ static __inline__ void set_bit(int nr, v
* If it's called on the same region of memory simultaneously, the effect
  * may be that only one operation succeeds.
  */
-static __inline__ void __set_bit(int nr, volatile void * addr)
+static __inline__ void __set_bit(int nr, volatile unsigned long * addr)
{
        __asm__(
                "btsl %1,%0"
@@ -68,7 +68,7 @@ static __inline__ void __set_bit(int nr,
* you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
  * in order to ensure changes are visible on other processors.
  */
-static __inline__ void clear_bit(int nr, volatile void * addr)
+static __inline__ void clear_bit(int nr, volatile unsigned long * addr)
{
        __asm__ __volatile__( LOCK_PREFIX
                "btrl %1,%0"
@@ -87,7 +87,7 @@ static __inline__ void clear_bit(int nr,
* If it's called on the same region of memory simultaneously, the effect
  * may be that only one operation succeeds.
  */
-static __inline__ void __change_bit(int nr, volatile void * addr)
+static __inline__ void __change_bit(int nr, volatile unsigned long * addr)
{
        __asm__ __volatile__(
                "btcl %1,%0"
@@ -104,7 +104,7 @@ static __inline__ void __change_bit(int
  * Note that @nr may be almost arbitrarily large; this function is not
  * restricted to acting on a single-word quantity.
  */
-static __inline__ void change_bit(int nr, volatile void * addr)
+static __inline__ void change_bit(int nr, volatile unsigned long * addr)
{
        __asm__ __volatile__( LOCK_PREFIX
                "btcl %1,%0"
@@ -120,7 +120,7 @@ static __inline__ void change_bit(int nr
  * This operation is atomic and cannot be reordered.
  * It also implies a memory barrier.
  */
-static __inline__ int test_and_set_bit(int nr, volatile void * addr)
+static __inline__ int test_and_set_bit(int nr, volatile unsigned long * addr)
{
        int oldbit;
@@ -140,7 +140,7 @@ static __inline__ int test_and_set_bit(i
  * If two examples of this operation race, one can appear to succeed
  * but actually fail.  You must protect multiple accesses with a lock.
  */
-static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
+static __inline__ int __test_and_set_bit(int nr, volatile unsigned long * addr)
{
        int oldbit;
@@ -159,7 +159,7 @@ static __inline__ int __test_and_set_bit
  * This operation is atomic and cannot be reordered.
  * It also implies a memory barrier.
  */
-static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
+static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * addr)
{
        int oldbit;
@@ -179,7 +179,7 @@ static __inline__ int test_and_clear_bit
  * If two examples of this operation race, one can appear to succeed
  * but actually fail.  You must protect multiple accesses with a lock.
  */
-static __inline__ int __test_and_clear_bit(int nr, volatile void * addr) +static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long * addr)
{
        int oldbit;
@@ -191,7 +191,7 @@ static __inline__ int __test_and_clear_b
}
/* WARNING: non atomic and it can be reordered! */
-static __inline__ int __test_and_change_bit(int nr, volatile void * addr) +static __inline__ int __test_and_change_bit(int nr, volatile unsigned long * addr)
{
        int oldbit;
@@ -210,7 +210,7 @@ static __inline__ int __test_and_change_
  * This operation is atomic and cannot be reordered.
  * It also implies a memory barrier.
  */
-static __inline__ int test_and_change_bit(int nr, volatile void * addr)
+static __inline__ int test_and_change_bit(int nr, volatile unsigned long * addr)
{
        int oldbit;
@@ -222,12 +222,12 @@ static __inline__ int test_and_change_bi
}
-static __inline__ int constant_test_bit(int nr, const volatile void * addr) +static __inline__ int constant_test_bit(int nr, const volatile unsigned long * addr)
{
return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr) [nr >> 5])) != 0;
}
-static __inline__ int variable_test_bit(int nr, volatile void * addr)
+static __inline__ int variable_test_bit(int nr, volatile unsigned long * addr)
{
        int oldbit;
diff -r 401624a17ef7 xen/include/asm-x86/hardirq.h
--- a/xen/include/asm-x86/hardirq.h     Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/hardirq.h     Fri Mar 24 07:33:22 2006 -0500
@@ -5,7 +5,7 @@
#include <xen/cache.h>
typedef struct {
-       unsigned int __softirq_pending;
+       unsigned long __softirq_pending;
        unsigned int __local_irq_count;
        unsigned int __nmi_count;
        unsigned long idle_timestamp;
diff -r 401624a17ef7 xen/include/asm-x86/hvm/svm/vmcb.h
--- a/xen/include/asm-x86/hvm/svm/vmcb.h        Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/hvm/svm/vmcb.h        Fri Mar 24 07:33:22 2006 -0500
@@ -437,7 +437,7 @@ struct arch_svm_struct {
     void                       *host_save_area;
     u64                 host_save_pa;
     u64                 vmcb_pa;
-    u32                 *iopm;
+    unsigned long       *iopm;
     u32                 *msrpm;
u64 vmexit_tsc; /* tsc read at #VMEXIT. for TSC_OFFSET */
     int                 injecting_event;
diff -r 401624a17ef7 xen/include/asm-x86/hvm/vioapic.h
--- a/xen/include/asm-x86/hvm/vioapic.h Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/hvm/vioapic.h Fri Mar 24 07:33:22 2006 -0500
@@ -93,8 +93,8 @@ typedef union RedirStatus
typedef struct hvm_vioapic {
     uint32_t irr;
-    uint32_t isr;           /* This is used for level trigger */
-    uint32_t imr;
+    unsigned long isr;           /* This is used for level trigger */
+    unsigned long imr;
     uint32_t ioregsel;
     uint32_t flags;
     uint32_t lapic_count;
diff -r 401624a17ef7 xen/include/asm-x86/hvm/vlapic.h
--- a/xen/include/asm-x86/hvm/vlapic.h  Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/hvm/vlapic.h  Fri Mar 24 07:33:22 2006 -0500
@@ -150,13 +150,13 @@ struct vlapic
{
     //FIXME check what would be 64 bit on EM64T
     uint32_t           version;
-    uint32_t           status;
+    unsigned long      status;
     uint32_t           id;
     uint32_t           vcpu_id;
     unsigned long      base_address;
-    uint32_t           isr[8];
-    uint32_t           irr[INTR_LEN_32];
-    uint32_t           tmr[INTR_LEN_32];
+    unsigned long      isr[32/BITS_PER_LONG];
+    unsigned long      irr[INTR_LEN_LONG];
+    unsigned long      tmr[INTR_LEN_LONG];
     uint32_t           task_priority;
     uint32_t           processor_priority;
     uint32_t           logical_dest;
@@ -225,7 +225,7 @@ struct vlapic* apic_round_robin(struct d
struct vlapic* apic_round_robin(struct domain *d,
                                 uint8_t dest_mode,
                                 uint8_t vector,
-                                uint32_t bitmap);
+                                unsigned long bitmap);
s_time_t get_apictime_scheduled(struct vcpu *v);
diff -r 401624a17ef7 xen/include/asm-x86/mm.h
--- a/xen/include/asm-x86/mm.h  Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/mm.h  Fri Mar 24 07:33:22 2006 -0500
@@ -23,7 +23,7 @@ struct page_info
     struct list_head list;
     /* Reference count and various PGC_xxx flags and fields. */
-    u32 count_info;
+    unsigned long count_info;
     /* Context-dependent fields follow... */
     union {
diff -r 401624a17ef7 xen/include/asm-x86/processor.h
--- a/xen/include/asm-x86/processor.h   Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/processor.h   Fri Mar 24 07:33:22 2006 -0500
@@ -155,7 +155,7 @@ struct cpuinfo_x86 {
     char hard_math;
     char rfu;
     int  cpuid_level;  /* Maximum supported CPUID level, -1=no CPUID */
-    unsigned int x86_capability[NCAPINTS];
+    unsigned long x86_capability[NCAPINTS];
     char x86_vendor_id[16];
     char x86_model_id[64];
int x86_cache_size; /* in KB - valid for CPUS which support this call */
diff -r 401624a17ef7 xen/include/asm-x86/shadow.h
--- a/xen/include/asm-x86/shadow.h      Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/asm-x86/shadow.h      Fri Mar 24 07:33:22 2006 -0500
@@ -642,14 +642,14 @@ static inline void shadow_drop_reference
     /* XXX This needs more thought... */
printk("%s: needing to call shadow_remove_all_access for mfn=%lx \n",
            __func__, page_to_mfn(page));
- printk("Before: mfn=%lx c=%08x t=%" PRtype_info "\n", page_to_mfn (page), + printk("Before: mfn=%lx c=%08lx t=%" PRtype_info "\n", page_to_mfn(page),
            page->count_info, page->u.inuse.type_info);
     shadow_lock(d);
     shadow_remove_all_access(d, page_to_mfn(page));
     shadow_unlock(d);
- printk("After: mfn=%lx c=%08x t=%" PRtype_info "\n", page_to_mfn (page), + printk("After: mfn=%lx c=%08lx t=%" PRtype_info "\n", page_to_mfn(page),
            page->count_info, page->u.inuse.type_info);
}
@@ -756,7 +756,7 @@ put_shadow_ref(unsigned long smfn)
     if ( unlikely(x == 0) )
     {
-        printk("put_shadow_ref underflow, smfn=%lx oc=%08x t=%"
+        printk("put_shadow_ref underflow, smfn=%lx oc=%08lx t=%"
                PRtype_info "\n",
                smfn,
                mfn_to_page(smfn)->count_info,
diff -r 401624a17ef7 xen/include/public/grant_table.h
--- a/xen/include/public/grant_table.h  Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/public/grant_table.h  Fri Mar 24 07:33:22 2006 -0500
@@ -73,7 +73,7 @@
  */
typedef struct grant_entry {
     /* GTF_xxx: various type and flag information.  [XEN,GST] */
-    uint16_t flags;
+    unsigned long flags;
     /* The domain being granted foreign privileges. [GST] */
     domid_t  domid;
     /*
diff -r 401624a17ef7 xen/include/public/hvm/ioreq.h
--- a/xen/include/public/hvm/ioreq.h    Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/public/hvm/ioreq.h    Fri Mar 24 07:33:22 2006 -0500
@@ -60,6 +60,7 @@ typedef struct {
#define BITS_PER_BYTE   8
#define INTR_LEN        (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint64_t)))
#define INTR_LEN_32     (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint32_t)))
+#define INTR_LEN_LONG   (MAX_VECTOR/BITS_PER_LONG)
typedef struct {
     uint16_t    pic_elcr;
diff -r 401624a17ef7 xen/include/public/xen.h
--- a/xen/include/public/xen.h  Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/public/xen.h  Fri Mar 24 07:33:22 2006 -0500
@@ -312,7 +312,7 @@ typedef struct vcpu_info {
* an upcall activation. The mask is cleared when the VCPU requests
      * to block: this avoids wakeup-waiting races.
      */
-    uint8_t evtchn_upcall_pending;
+    unsigned long evtchn_upcall_pending;
     uint8_t evtchn_upcall_mask;
     unsigned long evtchn_pending_sel;
     arch_vcpu_info_t arch;
diff -r 401624a17ef7 xen/include/xen/sched.h
--- a/xen/include/xen/sched.h   Thu Mar 23 14:45:21 2006 +0100
+++ b/xen/include/xen/sched.h   Fri Mar 24 07:33:22 2006 -0500
@@ -133,7 +133,7 @@ struct domain
      */
#define NR_PIRQS 256 /* Put this somewhere sane! */
     u16              pirq_to_evtchn[NR_PIRQS];
-    u32              pirq_mask[NR_PIRQS/32];
+    unsigned long    pirq_mask[NR_PIRQS/BITS_PER_LONG];
     /* I/O capabilities (access to IRQs and memory-mapped I/O). */
     struct rangeset *iomem_caps;



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.