index
:
litmus-rt.git
archive/unc-master-3.0
archived-2013.1
archived-private-master
archived-semi-part
demo
ecrts-pgm-final
ecrts14-pgm-final
gpusync-rtss12
gpusync/staging
linux-tip
litmus2008-patch-series
master
pgm
prop/litmus-signals
prop/robust-tie-break
staging
test
tracing-devel
v2.6.34-with-arm-patches
v2015.1
wip-2011.2-bbb
wip-2011.2-bbb-trace
wip-2012.3-gpu
wip-2012.3-gpu-preport
wip-2012.3-gpu-rtss13
wip-2012.3-gpu-sobliv-budget-w-kshark
wip-aedzl-final
wip-aedzl-revised
wip-arbit-deadline
wip-aux-tasks
wip-bbb
wip-bbb-prio-don
wip-better-break
wip-binary-heap
wip-budget
wip-color
wip-color-jlh
wip-d10-hz1000
wip-default-clustering
wip-dissipation-jerickso
wip-dissipation2-jerickso
wip-ecrts14-pgm
wip-edf-hsb
wip-edf-os
wip-edf-tie-break
wip-edzl-critique
wip-edzl-final
wip-edzl-revised
wip-events
wip-extra-debug
wip-fix-switch-jerickso
wip-fix3
wip-fmlp-dequeue
wip-ft-irq-flag
wip-gpu-cleanup
wip-gpu-interrupts
wip-gpu-rtas12
wip-gpu-rtss12
wip-gpu-rtss12-srp
wip-gpusync-merge
wip-ikglp
wip-k-fmlp
wip-kernel-coloring
wip-kernthreads
wip-klmirqd-to-aux
wip-kshark
wip-litmus-3.2
wip-litmus2011.2
wip-litmus3.0-2011.2
wip-master-2.6.33-rt
wip-mc
wip-mc-bipasa
wip-mc-jerickso
wip-mc2-cache-slack
wip-mcrit-mac
wip-merge-3.0
wip-merge-v3.0
wip-migration-affinity
wip-mmap-uncache
wip-modechange
wip-nested-locking
wip-omlp-gedf
wip-pai
wip-percore-lib
wip-performance
wip-pgm
// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/bitops.h>
#include <asm/types.h>
/**
* hweightN - returns the hamming weight of a N-bit word
* @x: the word to weigh
*
* The Hamming Weight of a number is the total number of bits set in it.
*/
#ifndef __HAVE_ARCH_SW_HWEIGHT
unsigned int
__sw_hweight32
(
unsigned int
w
)
{
#ifdef CONFIG_ARCH_HAS_FAST_MULTIPLIER
w
-= (
w
>>
1
) &
0x55555555
;
w
= (
w
&
0x33333333
) + ((
w
>>
2
) &
0x33333333
);
w
= (
w
+ (
w
>>
4
)) &
0x0f0f0f0f
;
return
(
w
*
0x01010101
) >>
24
;
#else
unsigned int
res
=
w
- ((
w
>>
1
) &
0x55555555
);
res
= (
res
&
0x33333333
) + ((
res
>>
2
) &
0x33333333
);
res
= (
res
+ (
res
>>
4
)) &
0x0F0F0F0F
;
res
=
res
+ (
res
>>
8
);
return
(
res
+ (
res
>>
16
)) &
0x000000FF
;
#endif
}
EXPORT_SYMBOL
(
__sw_hweight32
);
#endif
unsigned int
__sw_hweight16
(
unsigned int
w
)
{
unsigned int
res
=
w
- ((
w
>>
1
) &
0x5555
);
res
= (
res
&
0x3333
) + ((
res
>>
2
) &
0x3333
);
res
= (
res
+ (
res
>>
4
)) &
0x0F0F
;
return
(
res
+ (
res
>>
8
)) &
0x00FF
;
}
EXPORT_SYMBOL
(
__sw_hweight16
);
unsigned int
__sw_hweight8
(
unsigned int
w
)
{
unsigned int
res
=
w
- ((
w
>>
1
) &