xref: /qemu/scripts/coccinelle/exec_rw_const.cocci (revision 85eb7c18ee39e26002de6fa6abc5638af140e588)
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// Remove useless cast
66@@
67expression E1, E2, E3, E4, E5, E6;
68type T;
69@@
70(
71- address_space_rw(E1, E2, E3, (T *)(E4), E5, E6)
72+ address_space_rw(E1, E2, E3, E4, E5, E6)
73|
74- address_space_read(E1, E2, E3, (T *)(E4), E5)
75+ address_space_read(E1, E2, E3, E4, E5)
76|
77- address_space_write(E1, E2, E3, (T *)(E4), E5)
78+ address_space_write(E1, E2, E3, E4, E5)
79|
80- address_space_write_rom(E1, E2, E3, (T *)(E4), E5)
81+ address_space_write_rom(E1, E2, E3, E4, E5)
82|
83
84- cpu_physical_memory_rw(E1, (T *)(E2), E3, E4)
85+ cpu_physical_memory_rw(E1, E2, E3, E4)
86|
87- cpu_physical_memory_read(E1, (T *)(E2), E3)
88+ cpu_physical_memory_read(E1, E2, E3)
89|
90- cpu_physical_memory_write(E1, (T *)(E2), E3)
91+ cpu_physical_memory_write(E1, E2, E3)
92|
93
94- dma_memory_read(E1, E2, (T *)(E3), E4)
95+ dma_memory_read(E1, E2, E3, E4)
96|
97- dma_memory_write(E1, E2, (T *)(E3), E4)
98+ dma_memory_write(E1, E2, E3, E4)
99)
100