1/*
2  Usage:
3
4    spatch \
5           --macro-file scripts/cocci-macro-file.h \
6           --sp-file scripts/coccinelle/exec_rw_const.cocci \
7           --keep-comments \
8           --in-place \
9           --dir .
10*/
11
12// Convert to boolean
13@@
14expression E1, E2, E3, E4, E5;
15@@
16(
17- address_space_rw(E1, E2, E3, E4, E5, 0)
18+ address_space_rw(E1, E2, E3, E4, E5, false)
19|
20- address_space_rw(E1, E2, E3, E4, E5, 1)
21+ address_space_rw(E1, E2, E3, E4, E5, true)
22|
23
24- cpu_physical_memory_rw(E1, E2, E3, 0)
25+ cpu_physical_memory_rw(E1, E2, E3, false)
26|
27- cpu_physical_memory_rw(E1, E2, E3, 1)
28+ cpu_physical_memory_rw(E1, E2, E3, true)
29|
30
31- cpu_physical_memory_map(E1, E2, 0)
32+ cpu_physical_memory_map(E1, E2, false)
33|
34- cpu_physical_memory_map(E1, E2, 1)
35+ cpu_physical_memory_map(E1, E2, true)
36)
37
38// Use address_space_write instead of casting to non-const
39@@
40type T;
41const T *V;
42expression E1, E2, E3, E4;
43@@
44(
45- address_space_rw(E1, E2, E3, (T *)V, E4, 1)
46+ address_space_write(E1, E2, E3, V, E4)
47|
48- address_space_rw(E1, E2, E3, (void *)V, E4, 1)
49+ address_space_write(E1, E2, E3, V, E4)
50)
51
52// Avoid uses of address_space_rw() with a constant is_write argument.
53@@
54expression E1, E2, E3, E4, E5;
55symbol true, false;
56@@
57(
58- address_space_rw(E1, E2, E3, E4, E5, false)
59+ address_space_read(E1, E2, E3, E4, E5)
60|
61- address_space_rw(E1, E2, E3, E4, E5, true)
62+ address_space_write(E1, E2, E3, E4, E5)
63)
64
65// Avoid uses of cpu_physical_memory_rw() with a constant is_write argument.
66@@
67expression E1, E2, E3;
68@@
69(
70- cpu_physical_memory_rw(E1, E2, E3, false)
71+ cpu_physical_memory_read(E1, E2, E3)
72|
73- cpu_physical_memory_rw(E1, E2, E3, true)
74+ cpu_physical_memory_write(E1, E2, E3)
75)
76
77// Remove useless cast
78@@
79expression E1, E2, E3, E4, E5, E6;
80type T;
81@@
82(
83- address_space_rw(E1, E2, E3, (T *)(E4), E5, E6)
84+ address_space_rw(E1, E2, E3, E4, E5, E6)
85|
86- address_space_read(E1, E2, E3, (T *)(E4), E5)
87+ address_space_read(E1, E2, E3, E4, E5)
88|
89- address_space_write(E1, E2, E3, (T *)(E4), E5)
90+ address_space_write(E1, E2, E3, E4, E5)
91|
92- address_space_write_rom(E1, E2, E3, (T *)(E4), E5)
93+ address_space_write_rom(E1, E2, E3, E4, E5)
94|
95
96- cpu_physical_memory_rw(E1, (T *)(E2), E3, E4)
97+ cpu_physical_memory_rw(E1, E2, E3, E4)
98|
99- cpu_physical_memory_read(E1, (T *)(E2), E3)
100+ cpu_physical_memory_read(E1, E2, E3)
101|
102- cpu_physical_memory_write(E1, (T *)(E2), E3)
103+ cpu_physical_memory_write(E1, E2, E3)
104|
105
106- dma_memory_read(E1, E2, (T *)(E3), E4)
107+ dma_memory_read(E1, E2, E3, E4)
108|
109- dma_memory_write(E1, E2, (T *)(E3), E4)
110+ dma_memory_write(E1, E2, E3, E4)
111)
112