WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

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

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [RFC, PATCH] bitops take a long
From: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
Date: Fri, 24 Mar 2006 12:11:43 -0500
Delivery-date: Fri, 24 Mar 2006 17:12:58 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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

<Prev in Thread] Current Thread [Next in Thread>