I've now been able to reproduce David Creasy's bug myself. While my
previous patch fixed an actual bug, it was not David's bug. However,
the attached patch *does* fix David's bug in my own testing.
-Paul
--
Paul H. Hargrove PHHargrove_at_[hidden]
Future Technologies Group
HPC Research Department Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory Fax: +1-510-486-6900
Index: src/libplpa/plpa_bottom.h
===================================================================
--- src/libplpa/plpa_bottom.h (revision 71)
+++ src/libplpa/plpa_bottom.h (working copy)
@@ -69,15 +69,15 @@
/* Public macro to set a bit in a PLPA cpu set */
#define PLPA_CPU_SET(num, cpuset) \
- (cpuset)->bitmask[PLPA_CPU_BYTE(num)] |= (1 << PLPA_CPU_BIT(num))
+ (cpuset)->bitmask[PLPA_CPU_BYTE(num)] |= ((PLPA_NAME(bitmask_t))1 << PLPA_CPU_BIT(num))
/* Public macro to clear a bit in a PLPA cpu set */
#define PLPA_CPU_CLR(num, cpuset) \
- (cpuset)->bitmask[PLPA_CPU_BYTE(num)] &= ~(1 << PLPA_CPU_BIT(num))
+ (cpuset)->bitmask[PLPA_CPU_BYTE(num)] &= ~((PLPA_NAME(bitmask_t))1 << PLPA_CPU_BIT(num))
/* Public macro to test if a bit is set in a PLPA cpu set */
#define PLPA_CPU_ISSET(num, cpuset) \
- (0 != ((cpuset)->bitmask[PLPA_CPU_BYTE(num)] & (1 << PLPA_CPU_BIT(num))))
+ (0 != ((cpuset)->bitmask[PLPA_CPU_BYTE(num)] & ((PLPA_NAME(bitmask_t))1 << PLPA_CPU_BIT(num))))
/***************************************************************************/
|