diff options
| author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-10-16 13:30:09 +0300 |
|---|---|---|
| committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-10-16 13:30:09 +0300 |
| commit | e7d9facf0bab6d919342fea17c8cc0f65f8a0fe9 (patch) | |
| tree | 8301035b4dcb273c211c04fe2c0d1cbaf897021b /include/linux/bcd.h | |
| parent | 28bcd199cc4465733c1ac0c70135a385fff97c71 (diff) | |
| parent | ddffeb8c4d0331609ef2581d84de4d763607bd37 (diff) | |
Merge tag 'v3.7-rc1'
Merge Linux 3.7-rc1 to get latest upstream changes.
Diffstat (limited to 'include/linux/bcd.h')
| -rw-r--r-- | include/linux/bcd.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/include/linux/bcd.h b/include/linux/bcd.h index 22ea563ba3eb..18fff11fb3ea 100644 --- a/include/linux/bcd.h +++ b/include/linux/bcd.h @@ -3,7 +3,20 @@ #include <linux/compiler.h> -unsigned bcd2bin(unsigned char val) __attribute_const__; -unsigned char bin2bcd(unsigned val) __attribute_const__; +#define bcd2bin(x) \ + (__builtin_constant_p((u8 )(x)) ? \ + const_bcd2bin(x) : \ + _bcd2bin(x)) + +#define bin2bcd(x) \ + (__builtin_constant_p((u8 )(x)) ? \ + const_bin2bcd(x) : \ + _bin2bcd(x)) + +#define const_bcd2bin(x) (((x) & 0x0f) + ((x) >> 4) * 10) +#define const_bin2bcd(x) ((((x) / 10) << 4) + (x) % 10) + +unsigned _bcd2bin(unsigned char val) __attribute_const__; +unsigned char _bin2bcd(unsigned val) __attribute_const__; #endif /* _BCD_H */ |
