1/* Generic simulator stop.
2   Copyright (C) 1997-2023 Free Software Foundation, Inc.
3   Contributed by Cygnus Support.
4
5This file is part of GDB, the GNU debugger.
6
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 3 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20/* This must come before any other includes.  */
21#include "defs.h"
22
23#include "sim-main.h"
24#include "sim-assert.h"
25#include "sim-signal.h"
26
27/* Generic implementation of sim_stop.  */
28
29static void
30control_c_simulation (SIM_DESC sd,
31		      void *data)
32{
33  ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
34  sim_engine_halt (sd, NULL, NULL, NULL_CIA, sim_stopped, SIM_SIGINT);
35}
36
37int
38sim_stop (SIM_DESC sd)
39{
40  ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
41  sim_events_schedule_after_signal (sd,
42				    0 /*NOW*/,
43				    control_c_simulation,
44				    sd /*data*/);
45  return 1;
46}
47