aboutsummaryrefslogtreecommitdiff
path: root/scripts/kernel-doc
diff options
context:
space:
mode:
authorTrent Piepho <[email protected]>2007-05-08 00:24:05 -0700
committerLinus Torvalds <[email protected]>2007-05-08 11:14:59 -0700
commit8e2c20023f34b652605a5fb7c68bb843d2b100a8 (patch)
treebd041c1762724dbbc91f4b2da3fc0716165784e5 /scripts/kernel-doc
parent02fb6149f7a64c62934c035e7635321cb9a8cf2e (diff)
Fix constant folding and poor optimization in byte swapping code
Constant folding does not work for the swabXX() byte swapping functions, and the C versions optimize poorly. Attempting to initialize a global variable to swab16(0x1234) or put something like "case swab32(42):" in a switch statement will not compile. It can work, swab.h just isn't doing it correctly. This patch fixes that. Contrary to the comment in asm-i386/byteorder.h, gcc does not recognize the "C" version of swab16 and turn it into efficient code. gcc can do this, just not with the current code. The simple function: u16 foo(u16 x) { return swab16(x); } Would compile to: movzwl %ax, %eax movl %eax, %edx shrl $8, %eax sall $8, %edx orl %eax, %edx With this patch, it will compile to: rolw $8, %ax I also attempted to document the maze different macros/inline functions that are used to create the final product. Signed-off-by: Trent Piepho <[email protected]> Cc: Francois-Rene Rideau <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'scripts/kernel-doc')
0 files changed, 0 insertions, 0 deletions