}
}
+/**
+ * Compute log2 of 64bit integer v
+ *
+ * Bit Twiddling Hacks
+ * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
+ */
+static int ftdm_log2_64(uint64_t v)
+{
+ unsigned int shift;
+ uint64_t r;
+
+ r = (v > 0xFFFFFFFF) << 5; v >>= r;
+ shift = (v > 0xFFFF ) << 4; v >>= shift; r |= shift;
+ shift = (v > 0xFF ) << 3; v >>= shift; r |= shift;
+ shift = (v > 0xF ) << 2; v >>= shift; r |= shift;
+ shift = (v > 0x3 ) << 1; v >>= shift; r |= shift;
+
+ return (r | (v >> 1));
+}
+
static char *handle_core_command(const char *cmd)
{
char *mycmd = NULL;
print_channel_flag_values(&stream);
goto done;
}
- flagval = flagval >> 1;
+ flagval = ftdm_log2_64(flagval);
} else {
flagval = atoi(flag);
}
print_span_flag_values(&stream);
goto done;
}
- flagval = flagval >> 1;
+ flagval = ftdm_log2_64(flagval);
} else {
flagval = atoi(flag);
}