|
@@ -270,75 +270,67 @@ void map_destroy(struct mtd_info *mtd);
|
|
|
#define INVALIDATE_CACHED_RANGE(map, from, size) \
|
|
|
do { if (map->inval_cache) map->inval_cache(map, from, size); } while (0)
|
|
|
|
|
|
-
|
|
|
-static inline int map_word_equal(struct map_info *map, map_word val1, map_word val2)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < map_words(map); i++) {
|
|
|
- if (val1.x[i] != val2.x[i])
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- return 1;
|
|
|
-}
|
|
|
-
|
|
|
-static inline map_word map_word_and(struct map_info *map, map_word val1, map_word val2)
|
|
|
-{
|
|
|
- map_word r;
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < map_words(map); i++)
|
|
|
- r.x[i] = val1.x[i] & val2.x[i];
|
|
|
-
|
|
|
- return r;
|
|
|
-}
|
|
|
-
|
|
|
-static inline map_word map_word_clr(struct map_info *map, map_word val1, map_word val2)
|
|
|
-{
|
|
|
- map_word r;
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < map_words(map); i++)
|
|
|
- r.x[i] = val1.x[i] & ~val2.x[i];
|
|
|
-
|
|
|
- return r;
|
|
|
-}
|
|
|
-
|
|
|
-static inline map_word map_word_or(struct map_info *map, map_word val1, map_word val2)
|
|
|
-{
|
|
|
- map_word r;
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < map_words(map); i++)
|
|
|
- r.x[i] = val1.x[i] | val2.x[i];
|
|
|
-
|
|
|
- return r;
|
|
|
-}
|
|
|
-
|
|
|
-static inline int map_word_andequal(struct map_info *map, map_word val1, map_word val2, map_word val3)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < map_words(map); i++) {
|
|
|
- if ((val1.x[i] & val2.x[i]) != val3.x[i])
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- return 1;
|
|
|
-}
|
|
|
-
|
|
|
-static inline int map_word_bitsset(struct map_info *map, map_word val1, map_word val2)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < map_words(map); i++) {
|
|
|
- if (val1.x[i] & val2.x[i])
|
|
|
- return 1;
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
+#define map_word_equal(map, val1, val2) \
|
|
|
+({ \
|
|
|
+ int i, ret = 1; \
|
|
|
+ for (i = 0; i < map_words(map); i++) \
|
|
|
+ if ((val1).x[i] != (val2).x[i]) { \
|
|
|
+ ret = 0; \
|
|
|
+ break; \
|
|
|
+ } \
|
|
|
+ ret; \
|
|
|
+})
|
|
|
+
|
|
|
+#define map_word_and(map, val1, val2) \
|
|
|
+({ \
|
|
|
+ map_word r; \
|
|
|
+ int i; \
|
|
|
+ for (i = 0; i < map_words(map); i++) \
|
|
|
+ r.x[i] = (val1).x[i] & (val2).x[i]; \
|
|
|
+ r; \
|
|
|
+})
|
|
|
+
|
|
|
+#define map_word_clr(map, val1, val2) \
|
|
|
+({ \
|
|
|
+ map_word r; \
|
|
|
+ int i; \
|
|
|
+ for (i = 0; i < map_words(map); i++) \
|
|
|
+ r.x[i] = (val1).x[i] & ~(val2).x[i]; \
|
|
|
+ r; \
|
|
|
+})
|
|
|
+
|
|
|
+#define map_word_or(map, val1, val2) \
|
|
|
+({ \
|
|
|
+ map_word r; \
|
|
|
+ int i; \
|
|
|
+ for (i = 0; i < map_words(map); i++) \
|
|
|
+ r.x[i] = (val1).x[i] | (val2).x[i]; \
|
|
|
+ r; \
|
|
|
+})
|
|
|
+
|
|
|
+#define map_word_andequal(map, val1, val2, val3) \
|
|
|
+({ \
|
|
|
+ int i, ret = 1; \
|
|
|
+ for (i = 0; i < map_words(map); i++) { \
|
|
|
+ if (((val1).x[i] & (val2).x[i]) != (val2).x[i]) { \
|
|
|
+ ret = 0; \
|
|
|
+ break; \
|
|
|
+ } \
|
|
|
+ } \
|
|
|
+ ret; \
|
|
|
+})
|
|
|
+
|
|
|
+#define map_word_bitsset(map, val1, val2) \
|
|
|
+({ \
|
|
|
+ int i, ret = 0; \
|
|
|
+ for (i = 0; i < map_words(map); i++) { \
|
|
|
+ if ((val1).x[i] & (val2).x[i]) { \
|
|
|
+ ret = 1; \
|
|
|
+ break; \
|
|
|
+ } \
|
|
|
+ } \
|
|
|
+ ret; \
|
|
|
+})
|
|
|
|
|
|
static inline map_word map_word_load(struct map_info *map, const void *ptr)
|
|
|
{
|