rt2x00: Calculate register offset during compile time
authorIvo van Doorn <IvDoorn@gmail.com>
Tue, 3 Jun 2008 20:45:35 +0000 (22:45 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Sat, 14 Jun 2008 16:17:54 +0000 (12:17 -0400)
commit9dad92b9ba49eaab72513d821ae43298bcf93b90
treed2addafa1534616865c563cb0f71207a8a7cde33
parent030352a9c7715780b2c01033ae9afe56249bb7cc
rt2x00: Calculate register offset during compile time

By using __ffs() the register offsets were always calculated
at run-time which all FIELD32/FIELD16 definitions were builtin
constants. This means we can heavily optimize the register handling
by allowing GCC to do all the work during compilation.

Add some compile_ffs() macros to perform the calculation at
compile time. After this each rt2x00 module size is reduced
by ~2500 bytes. And the stack size of several functions is reduced
as well which further limits the number of rt2x00 results in
'make checkstack'.

v2: Merge GertJan's bugfix of patch [1/11] directly into this patch
      instead of providing it as seperate patch.
v3: Add extra parentheses when bitshifting __x

Signed-off-by: Gertjan van Wingerde <gwingerde@kpnplanet.nl>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00reg.h