blob: 18fff11fb3eadbe6ebd715a584aa49909d1dd30f [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _BCD_H
2#define _BCD_H
3
David Brownelld3de8512008-07-23 21:30:37 -07004#include <linux/compiler.h>
5
Sebastian Andrzej Siewiorb53d6572012-09-07 14:31:45 +02006#define bcd2bin(x) \
7 (__builtin_constant_p((u8 )(x)) ? \
8 const_bcd2bin(x) : \
9 _bcd2bin(x))
10
11#define bin2bcd(x) \
12 (__builtin_constant_p((u8 )(x)) ? \
13 const_bin2bcd(x) : \
14 _bin2bcd(x))
15
16#define const_bcd2bin(x) (((x) & 0x0f) + ((x) >> 4) * 10)
17#define const_bin2bcd(x) ((((x) / 10) << 4) + (x) % 10)
18
19unsigned _bcd2bin(unsigned char val) __attribute_const__;
20unsigned char _bin2bcd(unsigned val) __attribute_const__;
David Brownelld3de8512008-07-23 21:30:37 -070021
Linus Torvalds1da177e2005-04-16 15:20:36 -070022#endif /* _BCD_H */