u32 app_cmd_arg;
};
-static inline unsigned int uffs(unsigned int x)
-{
- unsigned int r = 1;
-
- if (!x)
- return 0;
- if (!(x & 0xffff)) {
- x >>= 16;
- r += 16;
- }
- if (!(x & 0xff)) {
- x >>= 8;
- r += 8;
- }
- if (!(x & 0xf)) {
- x >>= 4;
- r += 4;
- }
- if (!(x & 3)) {
- x >>= 2;
- r += 2;
- }
- if (!(x & 1)) {
- x >>= 1;
- r += 1;
- }
- return r;
-}
-
#define sdr_read8(reg) readb(reg)
#define sdr_read32(reg) readl(reg)
#define sdr_write8(reg, val) writeb(val, reg)
do { \
volatile unsigned int tv = sdr_read32(reg); \
tv &= ~(field); \
- tv |= ((val) << (uffs((unsigned int)field) - 1)); \
+ tv |= ((val) << (ffs((unsigned int)field) - 1)); \
sdr_write32(reg, tv); \
} while (0)
#define sdr_get_field(reg, field, val) \
do { \
volatile unsigned int tv = sdr_read32(reg); \
- val = ((tv & (field)) >> (uffs((unsigned int)field) - 1)); \
+ val = ((tv & (field)) >> (ffs((unsigned int)field) - 1)); \
} while (0)
#endif