Skip to content

Commit

Permalink
linux-user: Add '-one-insn-per-tb' option equivalent to '-singlestep'
Browse files Browse the repository at this point in the history
The '-singlestep' option is confusing, because it doesn't actually
have anything to do with single-stepping the CPU. What it does do
is force TCG emulation to put one guest instruction in each TB,
which can be useful in some situations.

Create a new command line argument -one-insn-per-tb, so we can
document that -singlestep is just a deprecated synonym for it,
and eventually perhaps drop it.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20230417164041.684562-5-peter.maydell@linaro.org
  • Loading branch information
pm215 committed May 2, 2023
1 parent 0e33928 commit e99c1f8
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
7 changes: 6 additions & 1 deletion docs/user/main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,13 @@ Debug options:
``-g port``
Wait gdb connection to port

``-one-insn-per-tb``
Run the emulation with one guest instruction per translation block.
This slows down emulation a lot, but can be useful in some situations,
such as when trying to analyse the logs produced by the ``-d`` option.

``-singlestep``
Run the emulation in single step mode.
This is a deprecated synonym for the ``-one-insn-per-tb`` option.

Environment variables:

Expand Down
9 changes: 6 additions & 3 deletions linux-user/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ static void handle_arg_reserved_va(const char *arg)
reserved_va = val ? val - 1 : 0;
}

static void handle_arg_singlestep(const char *arg)
static void handle_arg_one_insn_per_tb(const char *arg)
{
opt_one_insn_per_tb = true;
}
Expand Down Expand Up @@ -500,8 +500,11 @@ static const struct qemu_argument arg_table[] = {
"logfile", "write logs to 'logfile' (default stderr)"},
{"p", "QEMU_PAGESIZE", true, handle_arg_pagesize,
"pagesize", "set the host page size to 'pagesize'"},
{"singlestep", "QEMU_SINGLESTEP", false, handle_arg_singlestep,
"", "run in singlestep mode"},
{"one-insn-per-tb",
"QEMU_ONE_INSN_PER_TB", false, handle_arg_one_insn_per_tb,
"", "run with one guest instruction per emulated TB"},
{"singlestep", "QEMU_SINGLESTEP", false, handle_arg_one_insn_per_tb,
"", "deprecated synonym for -one-insn-per-tb"},
{"strace", "QEMU_STRACE", false, handle_arg_strace,
"", "log system calls"},
{"seed", "QEMU_RAND_SEED", true, handle_arg_seed,
Expand Down

0 comments on commit e99c1f8

Please sign in to comment.