diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2012-05-26 16:14:36 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2012-05-26 16:14:36 -0700 |
commit | caf8a9b2b301aba06735d403317b75b41df59bfe (patch) | |
tree | bfafb3cc0cf8a2f2394b4ed721e7c3d4891b78ab /lib/u64.h | |
parent | fe453991eafc32a890297a2003ac532b9f579f92 (diff) | |
download | emacs-caf8a9b2b301aba06735d403317b75b41df59bfe.tar.gz |
Merge from gnulib.
Fixes: debbugs:11527
Diffstat (limited to 'lib/u64.h')
-rw-r--r-- | lib/u64.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/u64.h b/lib/u64.h index 182d64955aa..f5ec9ebcb3d 100644 --- a/lib/u64.h +++ b/lib/u64.h @@ -1,6 +1,6 @@ /* uint64_t-like operations that work even on hosts lacking uint64_t - Copyright (C) 2006, 2009-2011 Free Software Foundation, Inc. + Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,6 +30,7 @@ typedef uint64_t u64; # define u64hilo(hi, lo) ((u64) (((u64) (hi) << 32) + (lo))) # define u64init(hi, lo) u64hilo (hi, lo) # define u64lo(x) ((u64) (x)) +# define u64size(x) u64lo (x) # define u64lt(x, y) ((x) < (y)) # define u64and(x, y) ((x) & (y)) # define u64or(x, y) ((x) | (y)) @@ -72,6 +73,16 @@ u64lo (uint32_t lo) return r; } +/* Return a u64 value representing SIZE. */ +static inline u64 +u64size (size_t size) +{ + u64 r; + r.hi = size >> 31 >> 1; + r.lo = size; + return r; +} + /* Return X < Y. */ static inline int u64lt (u64 x, u64 y) |