@@ -62,8 +62,15 @@ extern int linearize_ptr_list(struct ptr_list *, void **, int);
#define free_ptr_list(list) \
do { VRFY_PTR_LIST(*(list)); __free_ptr_list((struct ptr_list **)(list)); } while (0)
-#define PTR_ENTRY_NOTAG(h,i) ((h)->list[i])
-#define PTR_ENTRY(h,i) (void *)(~3UL & (unsigned long)PTR_ENTRY_NOTAG(h,i))
+static inline void *__ptr_entry(const struct ptr_list *l, unsigned int i)
+{
+ return l->list[i];
+}
+
+#define PTR_ENTRY_NOTAG(h,i) __ptr_entry(h, i)
+#define __PTR_STRIP_TAG(ptr) (void *)(~3UL & (unsigned long)(ptr))
+#define __PTR_KEEP_TAG(ptr) (ptr)
+#define PTR_ENTRY(h,i) __PTR_STRIP_TAG(PTR_ENTRY_NOTAG(h,i))
static inline void *first_ptr_list(struct ptr_list *list)
{