cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

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@@
     17identifier cpu, x;
     18typedef CPUState;
     19@@
     20struct x {
     21...
     22- void (*parent_reset)(CPUState *cpu);
     23+ DeviceReset parent_reset;
     24...
     25};
     26@ rule1 @
     27identifier resetfn;
     28expression resetfield;
     29identifier cc;
     30@@
     31- cpu_class_set_parent_reset(cc, resetfn, resetfield)
     32+ device_class_set_parent_reset(dc, resetfn, resetfield)
     33@@
     34identifier rule1.resetfn;
     35identifier cpu, cc;
     36typedef 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}