summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAaron Williams <Aaron.Williams@caviumnetworks.com>2011-01-31 19:55:50 -0800
committerWolfgang Denk <wd@denx.de>2011-04-12 22:58:30 +0200
commit1472af34c17744d0ae5979efd0c625c10d67797c (patch)
tree5bfb30387171d3f91911bd0803c2f8e2d6623f0b /include
parent9096963c729cc05633f2104ec9b79be732c7b1ac (diff)
Fix min/max macros in include/common.h
There is a bug in the min and max macros in common.h which occurs if Y is a larger type than X. For example, if Y is a 64-bit value and X is a 32-bit value then Y will be truncated to 32-bits. This fix matches what is done in the Linux kernel but without the additional type checking present in the kernel version. Signed-off-by: Aaron Williams <aaron.williams@caviumnetworks.com>
Diffstat (limited to 'include')
-rw-r--r--include/common.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/common.h b/include/common.h
index 54503ed3eb..9ba16012fe 100644
--- a/include/common.h
+++ b/include/common.h
@@ -180,11 +180,13 @@ typedef void (interrupt_handler_t)(void *);
* General Purpose Utilities
*/
#define min(X, Y) \
- ({ typeof (X) __x = (X), __y = (Y); \
+ ({ typeof (X) __x = (X); \
+ typeof (Y) __y = (Y); \
(__x < __y) ? __x : __y; })
#define max(X, Y) \
- ({ typeof (X) __x = (X), __y = (Y); \
+ ({ typeof (X) __x = (X); \
+ typeof (Y) __y = (Y); \
(__x > __y) ? __x : __y; })
#define MIN(x, y) min(x, y)