1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
--- 19 unchanged lines hidden (view full) ---
28 * Authors: Steve Reinhardt
29 * Nathan Binkert
30 */
31
32#ifndef __BASE_BITFIELD_HH__
33#define __BASE_BITFIELD_HH__
34
35#include <inttypes.h>
36
37/**
38 * Generate a 64-bit mask of 'nbits' 1s, right justified.
39 */
40inline uint64_t
41mask(int nbits)
42{
43 return (nbits == 64) ? (uint64_t)-1LL : (1ULL << nbits) - 1;
--- 81 unchanged lines hidden (view full) ---
125 if (bits(val, 31,16)) { msb += 16; val >>= 16; }
126 if (bits(val, 15,8)) { msb += 8; val >>= 8; }
127 if (bits(val, 7,4)) { msb += 4; val >>= 4; }
128 if (bits(val, 3,2)) { msb += 2; val >>= 2; }
129 if (bits(val, 1,1)) { msb += 1; }
130 return msb;
131}
132
133
134
135#endif // __BASE_BITFIELD_HH__
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
--- 19 unchanged lines hidden (view full) ---
28 * Authors: Steve Reinhardt
29 * Nathan Binkert
30 */
31
32#ifndef __BASE_BITFIELD_HH__
33#define __BASE_BITFIELD_HH__
34
35#include <inttypes.h>
36
37/**
38 * Generate a 64-bit mask of 'nbits' 1s, right justified.
39 */
40inline uint64_t
41mask(int nbits)
42{
43 return (nbits == 64) ? (uint64_t)-1LL : (1ULL << nbits) - 1;
--- 81 unchanged lines hidden (view full) ---
125 if (bits(val, 31,16)) { msb += 16; val >>= 16; }
126 if (bits(val, 15,8)) { msb += 8; val >>= 8; }
127 if (bits(val, 7,4)) { msb += 4; val >>= 4; }
128 if (bits(val, 3,2)) { msb += 2; val >>= 2; }
129 if (bits(val, 1,1)) { msb += 1; }
130 return msb;
131}
132
133
134
135#endif // __BASE_BITFIELD_HH__