Fix: mman behavior
This commit is contained in:
@@ -24,6 +24,19 @@ uint64_t msb64(uint64_t x)
|
||||
return res == 64 ? 0 : ((uint64_t)1 << (63 - res));
|
||||
}
|
||||
|
||||
uint64_t lsb64(uint64_t x)
|
||||
{
|
||||
uint64_t res = 0x0;
|
||||
asm volatile(
|
||||
"rbit x0, %[val]" ENDL
|
||||
"clz %[res], x0"
|
||||
: [res] "=r" (res)
|
||||
: [val] "r" (x)
|
||||
: "x0"
|
||||
);
|
||||
return res == 64 ? 0 : ((uint64_t)1 << res);
|
||||
}
|
||||
|
||||
uint32_t hton32(const uint32_t h)
|
||||
{
|
||||
const uint8_t *p = (const void *)&h;
|
||||
@@ -106,7 +119,7 @@ uint32_t atoh32(const char *s)
|
||||
exit(ERR_CONVERSION);
|
||||
|
||||
uint32_t ret = 0;
|
||||
for (int i = 8; i--; ++s) {
|
||||
for (int i = 8; i-- && *s != '\0'; ++s) {
|
||||
if (!isxdigit(*s))
|
||||
exit(ERR_CONVERSION);
|
||||
ret <<= 4, ret |= (isdigit(*s) ? *s - '0' :
|
||||
|
||||
Reference in New Issue
Block a user