diff options
author | Aaron Williams <Aaron.Williams@caviumnetworks.com> | 2011-01-31 19:55:50 -0800 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2011-04-12 22:58:30 +0200 |
commit | 1472af34c17744d0ae5979efd0c625c10d67797c (patch) | |
tree | 5bfb30387171d3f91911bd0803c2f8e2d6623f0b /include | |
parent | 9096963c729cc05633f2104ec9b79be732c7b1ac (diff) | |
download | u-boot-imx-1472af34c17744d0ae5979efd0c625c10d67797c.zip u-boot-imx-1472af34c17744d0ae5979efd0c625c10d67797c.tar.gz u-boot-imx-1472af34c17744d0ae5979efd0c625c10d67797c.tar.bz2 |
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.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/common.h b/include/common.h index 54503ed..9ba1601 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) |