2 #define __kernel __attribute__((address_space(0)))
3 #define __user __attribute__((address_space(__user)))
4 #define __iomem __attribute__((address_space(__iomem)))
5 #define __percpu __attribute__((address_space(__percpu)))
6 #define __rcu __attribute__((address_space(__rcu)))
9 typedef struct s obj_t
;
11 static void expl(obj_t __kernel
*k
, obj_t __iomem
*o
,
12 obj_t __user
*p
, obj_t __percpu
*pc
,
15 (__UINTPTR_TYPE__
)(k
); // OK
16 (unsigned long)(k
); // OK
19 (obj_t __kernel
*)(k
); // OK
21 (__UINTPTR_TYPE__
)(o
); // OK
22 (unsigned long)(o
); // OK
25 (obj_t __iomem
*)(o
); // OK
27 (__UINTPTR_TYPE__
)(p
); // OK
28 (unsigned long)(p
); // OK
31 (obj_t __user
*)(p
); // OK
33 (__UINTPTR_TYPE__
)(pc
); // OK
34 (unsigned long)(pc
); // OK
37 (obj_t __percpu
*)(pc
); // OK
39 (__UINTPTR_TYPE__
)(r
); // OK
40 (unsigned long)(r
); // OK
43 (obj_t __rcu
*)(r
); // OK
47 * check-name: Waddress-space-from
48 * check-command: sparse -Wno-cast-from-as $file
49 * check-description: Test the removal of AS from a pointer but only
50 * in the non-strict variant where casts to ulong (or uintptr_t)
54 Waddress-space-from.c:23:10: warning: cast removes address space '__iomem' of expression
55 Waddress-space-from.c:24:10: warning: cast removes address space '__iomem' of expression
56 Waddress-space-from.c:29:10: warning: cast removes address space '__user' of expression
57 Waddress-space-from.c:30:10: warning: cast removes address space '__user' of expression
58 Waddress-space-from.c:35:10: warning: cast removes address space '__percpu' of expression
59 Waddress-space-from.c:36:10: warning: cast removes address space '__percpu' of expression
60 Waddress-space-from.c:41:10: warning: cast removes address space '__rcu' of expression
61 Waddress-space-from.c:42:10: warning: cast removes address space '__rcu' of expression