qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

cpu-reset.cocci (1240B)


      1 // Convert targets using the old CPUState reset to DeviceState reset
      2 //
      3 // Copyright Linaro Ltd 2020
      4 // This work is licensed under the terms of the GNU GPLv2 or later.
      5 //
      6 // spatch --macro-file scripts/cocci-macro-file.h \
      7 //        --sp-file scripts/coccinelle/cpu-reset.cocci \
      8 //        --keep-comments --smpl-spacing --in-place --include-headers --dir target
      9 //
     10 // For simplicity we assume some things about the code we're modifying
     11 // that happen to be true for all our targets:
     12 //  * all cpu_class_set_parent_reset() callsites have a 'DeviceClass *dc' local
     13 //  * the parent reset field in the target CPU class is 'parent_reset'
     14 //  * no reset function already has a 'dev' local
     15 
     16 @@
     17 identifier cpu, x;
     18 typedef CPUState;
     19 @@
     20 struct x {
     21 ...
     22 - void (*parent_reset)(CPUState *cpu);
     23 + DeviceReset parent_reset;
     24 ...
     25 };
     26 @ rule1 @
     27 identifier resetfn;
     28 expression resetfield;
     29 identifier cc;
     30 @@
     31 - cpu_class_set_parent_reset(cc, resetfn, resetfield)
     32 + device_class_set_parent_reset(dc, resetfn, resetfield)
     33 @@
     34 identifier rule1.resetfn;
     35 identifier cpu, cc;
     36 typedef CPUState, DeviceState;
     37 @@
     38 -resetfn(CPUState *cpu)
     39 -{
     40 +resetfn(DeviceState *dev)
     41 +{
     42 +    CPUState *cpu = CPU(dev);
     43 <...
     44 -    cc->parent_reset(cpu);
     45 +    cc->parent_reset(dev);
     46 ...>
     47 }