0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef __CVMX_COREMASK_H__
0030 #define __CVMX_COREMASK_H__
0031
0032 #define CVMX_MIPS_MAX_CORES 1024
0033
0034 #define CVMX_COREMASK_ELTSZ 64
0035
0036
0037 #define CVMX_COREMASK_BMPSZ (CVMX_MIPS_MAX_CORES / CVMX_COREMASK_ELTSZ)
0038
0039
0040
0041 struct cvmx_coremask {
0042 u64 coremask_bitmap[CVMX_COREMASK_BMPSZ];
0043 };
0044
0045
0046
0047
0048 static inline bool cvmx_coremask_is_core_set(const struct cvmx_coremask *pcm,
0049 int core)
0050 {
0051 int n, i;
0052
0053 n = core % CVMX_COREMASK_ELTSZ;
0054 i = core / CVMX_COREMASK_ELTSZ;
0055
0056 return (pcm->coremask_bitmap[i] & ((u64)1 << n)) != 0;
0057 }
0058
0059
0060
0061
0062 static inline void cvmx_coremask_copy(struct cvmx_coremask *dest,
0063 const struct cvmx_coremask *src)
0064 {
0065 memcpy(dest, src, sizeof(*dest));
0066 }
0067
0068
0069
0070
0071 static inline void cvmx_coremask_set64(struct cvmx_coremask *pcm,
0072 uint64_t coremask_64)
0073 {
0074 pcm->coremask_bitmap[0] = coremask_64;
0075 }
0076
0077
0078
0079
0080 static inline void cvmx_coremask_clear_core(struct cvmx_coremask *pcm, int core)
0081 {
0082 int n, i;
0083
0084 n = core % CVMX_COREMASK_ELTSZ;
0085 i = core / CVMX_COREMASK_ELTSZ;
0086 pcm->coremask_bitmap[i] &= ~(1ull << n);
0087 }
0088
0089 #endif