Fix the naming of the atomic macros on amd64: right now, the 
x86_atomic_*_l() macros actually operate on unsigned 32bit integers 
instead of longs, so:
1) change the callers to use the _u32 versions
2) update the _ul definitions to bew the 64bit versions
3) remove the _l macros

Open question: perhaps the _ul macros should be removed too (they're 
unused after this diff) and future code should just explicitly use the 
_u32 or _u64 macros?


Also, complete remove the x86_multicast_ipi() function as unused (it was 
broken by the move to suport 64 cpus too).

oks?

Philip Guenther


Index: amd64/intr.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/intr.c,v
retrieving revision 1.25
diff -u -p -r1.25 intr.c
--- amd64/intr.c        20 Sep 2010 06:33:46 -0000      1.25
+++ amd64/intr.c        25 Dec 2010 17:46:01 -0000
@@ -498,7 +498,7 @@ intr_disestablish(struct intrhand *ih)
 
        simple_lock(&ci->ci_slock);
        pic->pic_hwmask(pic, ih->ih_pin);       
-       x86_atomic_clearbits_l(&ci->ci_ipending, (1 << ih->ih_slot));
+       x86_atomic_clearbits_u32(&ci->ci_ipending, (1 << ih->ih_slot));
 
        /*
         * Remove the handler from the chain.
Index: amd64/ipi.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/ipi.c,v
retrieving revision 1.8
diff -u -p -r1.8 ipi.c
--- amd64/ipi.c 26 Jun 2008 05:42:09 -0000      1.8
+++ amd64/ipi.c 25 Dec 2010 17:46:01 -0000
@@ -50,7 +50,7 @@ x86_send_ipi(struct cpu_info *ci, int ip
 {
        int ret;
 
-       x86_atomic_setbits_l(&ci->ci_ipis, ipimask);
+       x86_atomic_setbits_u32(&ci->ci_ipis, ipimask);
 
        /* Don't send IPI to cpu which isn't (yet) running. */
        if (!(ci->ci_flags & CPUF_RUNNING))
@@ -88,7 +88,7 @@ x86_broadcast_ipi(int ipimask)
                        continue;
                if ((ci->ci_flags & CPUF_RUNNING) == 0)
                        continue;
-               x86_atomic_setbits_l(&ci->ci_ipis, ipimask);
+               x86_atomic_setbits_u32(&ci->ci_ipis, ipimask);
                count++;
        }
        if (!count)
@@ -98,23 +98,6 @@ x86_broadcast_ipi(int ipimask)
 }
 
 void
-x86_multicast_ipi(int cpumask, int ipimask)
-{
-       struct cpu_info *ci;
-       CPU_INFO_ITERATOR cii;
-
-       cpumask &= ~(1U << cpu_number());
-       if (cpumask == 0)
-               return;
-
-       CPU_INFO_FOREACH(cii, ci) {
-               if ((cpumask & (1U << ci->ci_cpuid)) == 0)
-                       continue;
-               x86_send_ipi(ci, ipimask);
-       }
-}
-
-void
 x86_ipi_handler(void)
 {
        extern struct evcount ipi_count;
@@ -122,7 +105,7 @@ x86_ipi_handler(void)
        u_int32_t pending;
        int bit;
 
-       pending = x86_atomic_testset_ul(&ci->ci_ipis, 0);
+       pending = x86_atomic_testset_u32(&ci->ci_ipis, 0);
 
        for (bit = 0; bit < X86_NIPI && pending; bit++) {
                if (pending & (1<<bit)) {
Index: include/atomic.h
===================================================================
RCS file: /cvs/src/sys/arch/amd64/include/atomic.h,v
retrieving revision 1.6
diff -u -p -r1.6 atomic.h
--- include/atomic.h    25 May 2007 16:22:11 -0000      1.6
+++ include/atomic.h    25 Dec 2010 17:46:02 -0000
@@ -120,12 +120,10 @@ x86_atomic_clearbits_u64(volatile u_int6
        __asm __volatile(LOCK " andq %1,%0" :  "=m" (*ptr) : "ir" (~bits));
 }
 
-#define x86_atomic_testset_ul  x86_atomic_testset_u32
+#define x86_atomic_testset_ul  x86_atomic_testset_u64
 #define x86_atomic_testset_i   x86_atomic_testset_i32
-#define x86_atomic_setbits_l   x86_atomic_setbits_u32
-#define x86_atomic_setbits_ul  x86_atomic_setbits_u32
-#define x86_atomic_clearbits_l x86_atomic_clearbits_u32
-#define x86_atomic_clearbits_ul        x86_atomic_clearbits_u32
+#define x86_atomic_setbits_ul  x86_atomic_setbits_u64
+#define x86_atomic_clearbits_ul        x86_atomic_clearbits_u64
 
 #define atomic_setbits_int x86_atomic_setbits_u32
 #define atomic_clearbits_int x86_atomic_clearbits_u32
Index: include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/amd64/include/intr.h,v
retrieving revision 1.20
diff -u -p -r1.20 intr.h
--- include/intr.h      21 Dec 2010 14:56:23 -0000      1.20
+++ include/intr.h      25 Dec 2010 17:46:02 -0000
@@ -210,7 +210,6 @@ void intr_printconfig(void);
 int x86_send_ipi(struct cpu_info *, int);
 int x86_fast_ipi(struct cpu_info *, int);
 void x86_broadcast_ipi(int);
-void x86_multicast_ipi(int, int);
 void x86_ipi_handler(void);
 void x86_intlock(struct intrframe);
 void x86_intunlock(struct intrframe);

Reply via email to