Home | History | Annotate | Line # | Download | only in common
      1 /* Miscellaneous simulator utilities.
      2 
      3    Copyright (C) 2005-2024 Free Software Foundation, Inc.
      4    Contributed by Analog Devices, Inc. and Stephane Carrez.
      5 
      6    This file is part of simulators.
      7 
      8    This program is free software; you can redistribute it and/or modify
      9    it under the terms of the GNU General Public License as published by
     10    the Free Software Foundation; either version 3 of the License, or
     11    (at your option) any later version.
     12 
     13    This program is distributed in the hope that it will be useful,
     14    but WITHOUT ANY WARRANTY; without even the implied warranty of
     15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16    GNU General Public License for more details.
     17 
     18    You should have received a copy of the GNU General Public License
     19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     20 
     21 /* This must come before any other includes.  */
     22 #include "defs.h"
     23 
     24 #include "symcat.h"
     25 
     26 #include "sim-main.h"
     27 #include "sim-module.h"
     28 #include "sim/sim.h"
     29 
     30 /* Generic implementation of sim_close that works with simulators that use
     31    sim-module for all custom runtime options.  */
     32 
     33 #ifndef SIM_CLOSE_HOOK
     34 # define SIM_CLOSE_HOOK(sd, quitting)
     35 #endif
     36 
     37 void
     38 sim_close (SIM_DESC sd, int quitting)
     39 {
     40   SIM_CLOSE_HOOK (sd, quitting);
     41 
     42   /* If cgen is active, close it down.  */
     43 #ifdef CGEN_ARCH
     44 # define cgen_cpu_close XCONCAT2 (CGEN_ARCH,_cgen_cpu_close)
     45   cgen_cpu_close (CPU_CPU_DESC (STATE_CPU (sd, 0)));
     46 #endif
     47 
     48   /* Shut down all registered/active modules.  */
     49   sim_module_uninstall (sd);
     50 
     51   /* Ensure that any resources allocated through the callback
     52      mechanism are released.  */
     53   sim_io_shutdown (sd);
     54 
     55   /* Break down all of the cpus.  */
     56   sim_cpu_free_all (sd);
     57 
     58   /* Finally break down the sim state itself.  */
     59   sim_state_free (sd);
     60 }
     61