maintainer updates (gitlab, plugins, gdbstub, docs)
- update check-units script to take -n <top> argument - fix execlog plugin to handle tab separators - add gdb XML file for alpha - add gdb XML file for sparc64 - use :kbd: in docs to highlight key sequences - clean up rst formatting in virtio-net-failover docs -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmh0374ACgkQ+9DbCVqe KkR0gQf/a9Au455+OWEhG3uLGkMZZaFM6QJv8W3wBBZoRg59LMXkUIhEtyVfdmt5 SDyA79nw1G0iP2qlKQV02R++CrBHMJILtYOMoLTbkWV9Lft4h+uPC27SE17DkNPS 4b4TchlJ3DpOFi0XmYZuIwH/8CPpTdVCLcA5zEXT0Q8nKjk0JsGiOQxoHH+p3ad5 +mgvlmITDpU88OCilDYgmrD5iSe/WLzwszV9D6JTfQakfM7J9G87sj4iMK+En+iu 0rsRBk2gwahy4cfqaiaELTtarqadM1TaNwaRvt6vun+Hp12pypDhogG1Mh5e2eCB /nFwjcswRRk+kd26993AiK8Soomwiw== =Md3/ -----END PGP SIGNATURE----- Merge tag 'pull-10.1-rc0-maintainer-140725-1' of https://gitlab.com/stsquad/qemu into staging maintainer updates (gitlab, plugins, gdbstub, docs) - update check-units script to take -n <top> argument - fix execlog plugin to handle tab separators - add gdb XML file for alpha - add gdb XML file for sparc64 - use :kbd: in docs to highlight key sequences - clean up rst formatting in virtio-net-failover docs # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmh0374ACgkQ+9DbCVqe # KkR0gQf/a9Au455+OWEhG3uLGkMZZaFM6QJv8W3wBBZoRg59LMXkUIhEtyVfdmt5 # SDyA79nw1G0iP2qlKQV02R++CrBHMJILtYOMoLTbkWV9Lft4h+uPC27SE17DkNPS # 4b4TchlJ3DpOFi0XmYZuIwH/8CPpTdVCLcA5zEXT0Q8nKjk0JsGiOQxoHH+p3ad5 # +mgvlmITDpU88OCilDYgmrD5iSe/WLzwszV9D6JTfQakfM7J9G87sj4iMK+En+iu # 0rsRBk2gwahy4cfqaiaELTtarqadM1TaNwaRvt6vun+Hp12pypDhogG1Mh5e2eCB # /nFwjcswRRk+kd26993AiK8Soomwiw== # =Md3/ # -----END PGP SIGNATURE----- # gpg: Signature made Mon 14 Jul 2025 06:45:18 EDT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * tag 'pull-10.1-rc0-maintainer-140725-1' of https://gitlab.com/stsquad/qemu: gdbstub: add the GDB register XML files for sparc64. docs/system: clean-up formatting of virtio-net-failover docs: use :kbd: role in sphinx docs plugins: fix inclusion of user-mode APIs target/alpha: Add GDB XML feature file contrib/plugins/execlog: Add tab to the separator search of insn_disas gitlab: add -n option to check-units script gitlab: use argparse in check-units script Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
c079d3a31e
19 changed files with 352 additions and 86 deletions
|
|
@ -8,8 +8,10 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from os import access, R_OK, path
|
||||
from sys import argv, exit
|
||||
from sys import exit
|
||||
import json
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from collections import Counter
|
||||
|
||||
|
||||
|
|
@ -28,7 +30,7 @@ def extract_build_units(cc_path):
|
|||
return build_units
|
||||
|
||||
|
||||
def analyse_units(build_units):
|
||||
def analyse_units(build_units, top_n):
|
||||
"""
|
||||
Analyse the build units and report stats and the top 10 rebuilds
|
||||
"""
|
||||
|
|
@ -42,7 +44,7 @@ def analyse_units(build_units):
|
|||
reverse=True)
|
||||
|
||||
print("Most rebuilt units:")
|
||||
for unit, count in sorted_build_units[:20]:
|
||||
for unit, count in sorted_build_units[:top_n]:
|
||||
print(f" {unit} built {count} times")
|
||||
|
||||
print("Least rebuilt units:")
|
||||
|
|
@ -51,16 +53,19 @@ def analyse_units(build_units):
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(argv) != 2:
|
||||
script_name = path.basename(argv[0])
|
||||
print(f"Usage: {script_name} <path_to_compile_commands.json>")
|
||||
exit(1)
|
||||
parser = argparse.ArgumentParser(
|
||||
description="analyse number of build units in compile_commands.json")
|
||||
parser.add_argument("cc_path", type=Path, default=None,
|
||||
help="Path to compile_commands.json")
|
||||
parser.add_argument("-n", type=int, default=20,
|
||||
help="Dump the top <n> entries")
|
||||
|
||||
cc_path = argv[1]
|
||||
if path.isfile(cc_path) and access(cc_path, R_OK):
|
||||
units = extract_build_units(cc_path)
|
||||
analyse_units(units)
|
||||
args = parser.parse_args()
|
||||
|
||||
if path.isfile(args.cc_path) and access(args.cc_path, R_OK):
|
||||
units = extract_build_units(args.cc_path)
|
||||
analyse_units(units, args.n)
|
||||
exit(0)
|
||||
else:
|
||||
print(f"{cc_path} doesn't exist or isn't readable")
|
||||
print(f"{args.cc_path} doesn't exist or isn't readable")
|
||||
exit(1)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu/main-loop.h"
|
||||
#include "qemu/plugin.h"
|
||||
#include "accel/tcg/vcpu-state.h"
|
||||
#include "qemu.h"
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -2,3 +2,4 @@ TARGET_ARCH=alpha
|
|||
TARGET_SYSTBL_ABI=common
|
||||
TARGET_SYSTBL=syscall.tbl
|
||||
TARGET_LONG_BITS=64
|
||||
TARGET_XML_FILES= gdb-xml/alpha-core.xml
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
TARGET_ARCH=alpha
|
||||
TARGET_LONG_BITS=64
|
||||
TARGET_XML_FILES= gdb-xml/alpha-core.xml
|
||||
|
|
|
|||
|
|
@ -4,4 +4,5 @@ TARGET_ABI_DIR=sparc
|
|||
TARGET_SYSTBL_ABI=common,64
|
||||
TARGET_SYSTBL=syscall.tbl
|
||||
TARGET_BIG_ENDIAN=y
|
||||
TARGET_XML_FILES=gdb-xml/sparc64-core.xml
|
||||
TARGET_LONG_BITS=64
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
TARGET_ARCH=sparc64
|
||||
TARGET_BASE_ARCH=sparc
|
||||
TARGET_BIG_ENDIAN=y
|
||||
TARGET_XML_FILES=gdb-xml/sparc64-core.xml
|
||||
TARGET_LONG_BITS=64
|
||||
|
|
|
|||
|
|
@ -232,12 +232,15 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
|
|||
*/
|
||||
if (disas_assist && rmatches) {
|
||||
check_regs_next = false;
|
||||
gchar *args = g_strstr_len(insn_disas, -1, " ");
|
||||
for (int n = 0; n < all_reg_names->len; n++) {
|
||||
gchar *reg = g_ptr_array_index(all_reg_names, n);
|
||||
if (g_strrstr(args, reg)) {
|
||||
check_regs_next = true;
|
||||
skip = false;
|
||||
g_auto(GStrv) args = g_strsplit_set(insn_disas, " \t", 2);
|
||||
if (args && args[1]) {
|
||||
for (int n = 0; n < all_reg_names->len; n++) {
|
||||
const gchar *reg = g_ptr_array_index(all_reg_names, n);
|
||||
if (g_strrstr(args[1], reg)) {
|
||||
check_regs_next = true;
|
||||
skip = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -604,9 +604,9 @@ below steps to debug it:
|
|||
2. Add "V=1" to the command line, try again, to see the verbose output.
|
||||
3. Further add "DEBUG=1" to the command line. This will pause in a shell prompt
|
||||
in the container right before testing starts. You could either manually
|
||||
build QEMU and run tests from there, or press Ctrl-D to let the Docker
|
||||
build QEMU and run tests from there, or press :kbd:`Ctrl+d` to let the Docker
|
||||
testing continue.
|
||||
4. If you press Ctrl-D, the same building and testing procedure will begin, and
|
||||
4. If you press :kbd:`Ctrl+d`, the same building and testing procedure will begin, and
|
||||
will hopefully run into the error again. After that, you will be dropped to
|
||||
the prompt for debug.
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ Snapshot mode
|
|||
If you use the option ``-snapshot``, all disk images are considered as
|
||||
read only. When sectors in written, they are written in a temporary file
|
||||
created in ``/tmp``. You can however force the write back to the raw
|
||||
disk images by using the ``commit`` monitor command (or C-a s in the
|
||||
disk images by using the ``commit`` monitor command (or :kbd:`Ctrl+a s` in the
|
||||
serial console).
|
||||
|
||||
.. _vm_005fsnapshots:
|
||||
|
|
|
|||
|
|
@ -1,36 +1,37 @@
|
|||
During the graphical emulation, you can use special key combinations from
|
||||
the following table to change modes. By default the modifier is Ctrl-Alt
|
||||
the following table to change modes. By default the modifier is :kbd:`Ctrl+Alt`
|
||||
(used in the table below) which can be changed with ``-display`` suboption
|
||||
``mod=`` where appropriate. For example, ``-display sdl,
|
||||
grab-mod=lshift-lctrl-lalt`` changes the modifier key to Ctrl-Alt-Shift,
|
||||
while ``-display sdl,grab-mod=rctrl`` changes it to the right Ctrl key.
|
||||
grab-mod=lshift-lctrl-lalt`` changes the modifier key to :kbd:`Ctrl+Alt+Shift`,
|
||||
while ``-display sdl,grab-mod=rctrl`` changes it to the right :kbd:`Ctrl` key.
|
||||
|
||||
Ctrl-Alt-f
|
||||
Toggle full screen
|
||||
.. list-table:: Multiplexer Keys
|
||||
:widths: 10 90
|
||||
:header-rows: 1
|
||||
|
||||
Ctrl-Alt-+
|
||||
Enlarge the screen
|
||||
* - Key Sequence
|
||||
- Action
|
||||
|
||||
Ctrl-Alt\--
|
||||
Shrink the screen
|
||||
* - :kbd:`Ctrl+Alt+f`
|
||||
- Toggle full screen
|
||||
|
||||
Ctrl-Alt-u
|
||||
Restore the screen's un-scaled dimensions
|
||||
* - :kbd:`Ctrl+Alt++`
|
||||
- Enlarge the screen
|
||||
|
||||
Ctrl-Alt-n
|
||||
Switch to virtual console 'n'. Standard console mappings are:
|
||||
* - :kbd:`Ctrl+Alt+-`
|
||||
- Shrink the screen
|
||||
|
||||
*1*
|
||||
Target system display
|
||||
* - :kbd:`Ctrl+Alt+u`
|
||||
- Restore the screen's un-scaled dimensions
|
||||
|
||||
*2*
|
||||
Monitor
|
||||
* - :kbd:`Ctrl+Alt+n`
|
||||
- Switch to virtual console 'n'. Standard console mappings are:
|
||||
|
||||
*3*
|
||||
Serial port
|
||||
- *1*: Target system display
|
||||
- *2*: Monitor
|
||||
- *3*: Serial port
|
||||
* - :kbd:`Ctrl+Alt+g`
|
||||
- Toggle mouse and keyboard grab.
|
||||
|
||||
Ctrl-Alt-g
|
||||
Toggle mouse and keyboard grab.
|
||||
|
||||
In the virtual consoles, you can use Ctrl-Up, Ctrl-Down, Ctrl-PageUp and
|
||||
Ctrl-PageDown to move in the back log.
|
||||
In the virtual consoles, you can use :kbd:`Ctrl+Up`, :kbd:`Ctrl+Down`, :kbd:`Ctrl+PageUp` and
|
||||
:kbd:`Ctrl+PageDown` to move in the back log.
|
||||
|
|
|
|||
|
|
@ -26,5 +26,5 @@ virtual serial port and the QEMU monitor to the console with the
|
|||
|qemu_system| -kernel bzImage -drive file=rootdisk.img,format=raw \
|
||||
-append "root=/dev/sda console=ttyS0" -nographic
|
||||
|
||||
Use Ctrl-a c to switch between the serial console and the monitor (see
|
||||
Use :kbd:`Ctrl+a c` to switch between the serial console and the monitor (see
|
||||
:ref:`GUI_keys`).
|
||||
|
|
|
|||
|
|
@ -1,27 +1,33 @@
|
|||
During emulation, if you are using a character backend multiplexer
|
||||
(which is the default if you are using ``-nographic``) then several
|
||||
commands are available via an escape sequence. These key sequences all
|
||||
start with an escape character, which is Ctrl-a by default, but can be
|
||||
start with an escape character, which is :kbd:`Ctrl+a` by default, but can be
|
||||
changed with ``-echr``. The list below assumes you're using the default.
|
||||
|
||||
Ctrl-a h
|
||||
Print this help
|
||||
.. list-table:: Multiplexer Keys
|
||||
:widths: 20 80
|
||||
:header-rows: 1
|
||||
|
||||
Ctrl-a x
|
||||
Exit emulator
|
||||
* - Key Sequence
|
||||
- Action
|
||||
|
||||
Ctrl-a s
|
||||
Save disk data back to file (if -snapshot)
|
||||
* - :kbd:`Ctrl+a h`
|
||||
- Print this help
|
||||
|
||||
Ctrl-a t
|
||||
Toggle console timestamps
|
||||
* - :kbd:`Ctrl+a x`
|
||||
- Exit emulator
|
||||
|
||||
Ctrl-a b
|
||||
Send break (magic sysrq in Linux)
|
||||
* - :kbd:`Ctrl+a s`
|
||||
- Save disk data back to file (if -snapshot)
|
||||
|
||||
Ctrl-a c
|
||||
Rotate between the frontends connected to the multiplexer (usually
|
||||
this switches between the monitor and the console)
|
||||
* - :kbd:`Ctrl+a t`
|
||||
- Toggle console timestamps
|
||||
|
||||
Ctrl-a Ctrl-a
|
||||
Send the escape character to the frontend
|
||||
* - :kbd:`Ctrl+a b`
|
||||
- Send break (magic sysrq in Linux)
|
||||
|
||||
* - :kbd:`Ctrl+a c`
|
||||
- Rotate between the frontends connected to the multiplexer (usually this switches between the monitor and the console)
|
||||
|
||||
* - :kbd:`Ctrl+a Ctrl+a`
|
||||
- Send the escape character to the frontend
|
||||
|
|
|
|||
|
|
@ -26,43 +26,48 @@ and standby devices are not plugged into the same PCIe slot.
|
|||
Usecase
|
||||
-------
|
||||
|
||||
Virtio-net standby allows easy migration while using a passed-through fast
|
||||
networking device by falling back to a virtio-net device for the duration of
|
||||
the migration. It is like a simple version of a bond, the difference is that it
|
||||
requires no configuration in the guest. When a guest is live-migrated to
|
||||
another host QEMU will unplug the primary device via the PCIe based hotplug
|
||||
handler and traffic will go through the virtio-net device. On the target
|
||||
system the primary device will be automatically plugged back and the
|
||||
net_failover module registers it again as the primary device.
|
||||
Virtio-net standby allows easy migration while using a passed-through
|
||||
fast networking device by falling back to a virtio-net device for the
|
||||
duration of the migration. It is like a simple version of a bond, the
|
||||
difference is that it requires no configuration in the guest. When a
|
||||
guest is live-migrated to another host QEMU will unplug the primary
|
||||
device via the PCIe based hotplug handler and traffic will go through
|
||||
the virtio-net device. On the target system the primary device will be
|
||||
automatically plugged back and the net_failover module registers it
|
||||
again as the primary device.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
The primary device can be hotplugged or be part of the startup configuration
|
||||
The primary device can be hotplugged or be part of the startup configuration
|
||||
|
||||
-device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:6f:55:cc, \
|
||||
bus=root2,failover=on
|
||||
.. code-block:: shell
|
||||
|
||||
With the parameter failover=on the VIRTIO_NET_F_STANDBY feature will be enabled.
|
||||
-device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:6f:55:cc,bus=root2,failover=on
|
||||
|
||||
With the parameter ``failover=on`` the VIRTIO_NET_F_STANDBY feature will be enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
-device vfio-pci,host=5e:00.2,id=hostdev0,bus=root1,failover_pair_id=net1
|
||||
|
||||
failover_pair_id references the id of the virtio-net standby device. This
|
||||
is only for pairing the devices within QEMU. The guest kernel module
|
||||
net_failover will match devices with identical MAC addresses.
|
||||
``failover_pair_id`` references the id of the virtio-net standby device.
|
||||
This is only for pairing the devices within QEMU. The guest kernel
|
||||
module net_failover will match devices with identical MAC addresses.
|
||||
|
||||
Hotplug
|
||||
-------
|
||||
|
||||
Both primary and standby device can be hotplugged via the QEMU monitor. Note
|
||||
that if the virtio-net device is plugged first a warning will be issued that it
|
||||
couldn't find the primary device.
|
||||
Both primary and standby device can be hotplugged via the QEMU
|
||||
monitor. Note that if the virtio-net device is plugged first a warning
|
||||
will be issued that it couldn't find the primary device.
|
||||
|
||||
Migration
|
||||
---------
|
||||
|
||||
A new migration state wait-unplug was added for this feature. If failover primary
|
||||
devices are present in the configuration, migration will go into this state.
|
||||
It will wait until the device unplug is completed in the guest and then move into
|
||||
active state. On the target system the primary devices will be automatically hotplugged
|
||||
when the feature bit was negotiated for the virtio-net standby device.
|
||||
A new migration state wait-unplug was added for this feature. If
|
||||
failover primary devices are present in the configuration, migration
|
||||
will go into this state. It will wait until the device unplug is
|
||||
completed in the guest and then move into active state. On the target
|
||||
system the primary devices will be automatically hotplugged when the
|
||||
feature bit was negotiated for the virtio-net standby device.
|
||||
|
|
|
|||
136
gdb-xml/alpha-core.xml
Normal file
136
gdb-xml/alpha-core.xml
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2025 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
<feature name="org.gnu.gdb.alpha.core">
|
||||
<!-- IEEE rounding mode values -->
|
||||
<enum id="dyn_rm_enum" size="8">
|
||||
<!-- Chopped rounding mode -->
|
||||
<evalue name="chop" value="0"/>
|
||||
<!-- Minus infinity -->
|
||||
<evalue name="-inf" value="1"/>
|
||||
<!-- Normal rounding -->
|
||||
<evalue name="norm" value="2"/>
|
||||
<!-- Plus infinity -->
|
||||
<evalue name="+inf" value="3"/>
|
||||
</enum>
|
||||
|
||||
<!-- Floating-Point Control Register Flags -->
|
||||
<flags id="fpcr_flags" size="8">
|
||||
<!-- Denormal Operand Exception Disable -->
|
||||
<field name="DNOD" start="47" end="47"/>
|
||||
<!-- Denormal Operands to Zero -->
|
||||
<field name="DNZ" start="48" end="48"/>
|
||||
<!-- Invalid Operation Disable -->
|
||||
<field name="INVD" start="49" end="49"/>
|
||||
<!-- Division by Zero Disable -->
|
||||
<field name="DZED" start="50" end="50"/>
|
||||
<!-- Overflow Disable -->
|
||||
<field name="OVFD" start="51" end="51"/>
|
||||
<!-- Invalid Operation -->
|
||||
<field name="INV" start="52" end="52"/>
|
||||
<!-- Division by Zero -->
|
||||
<field name="DZE" start="53" end="53"/>
|
||||
<!-- Overflow -->
|
||||
<field name="OVF" start="54" end="54"/>
|
||||
<!-- Underflow -->
|
||||
<field name="UNF" start="55" end="55"/>
|
||||
<!-- Inexact Result -->
|
||||
<field name="INE" start="56" end="56"/>
|
||||
<!-- Integer Overflow -->
|
||||
<field name="IOV" start="57" end="57"/>
|
||||
<!-- Dynamic Rounding Mode -->
|
||||
<field name="DYN_RM" start="58" end="59" type="dyn_rm_enum"/>
|
||||
<!-- Underflow to Zero -->
|
||||
<field name="UNDZ" start="60" end="60"/>
|
||||
<!-- Underflow Disable -->
|
||||
<field name="UNFD" start="61" end="61"/>
|
||||
<!-- Inexact Disable -->
|
||||
<field name="INED" start="62" end="62"/>
|
||||
<!-- Summary Bit -->
|
||||
<field name="SUM" start="63" end="63"/>
|
||||
</flags>
|
||||
|
||||
<!-- Integer Registers -->
|
||||
<reg name="v0" bitsize="64" type="int64"/>
|
||||
<reg name="t0" bitsize="64" type="int64"/>
|
||||
<reg name="t1" bitsize="64" type="int64"/>
|
||||
<reg name="t2" bitsize="64" type="int64"/>
|
||||
<reg name="t3" bitsize="64" type="int64"/>
|
||||
<reg name="t4" bitsize="64" type="int64"/>
|
||||
<reg name="t5" bitsize="64" type="int64"/>
|
||||
<reg name="t6" bitsize="64" type="int64"/>
|
||||
<reg name="t7" bitsize="64" type="int64"/>
|
||||
<reg name="s0" bitsize="64" type="int64"/>
|
||||
<reg name="s1" bitsize="64" type="int64"/>
|
||||
<reg name="s2" bitsize="64" type="int64"/>
|
||||
<reg name="s3" bitsize="64" type="int64"/>
|
||||
<reg name="s4" bitsize="64" type="int64"/>
|
||||
<reg name="s5" bitsize="64" type="int64"/>
|
||||
<reg name="fp" bitsize="64" type="int64"/>
|
||||
<reg name="a0" bitsize="64" type="int64"/>
|
||||
<reg name="a1" bitsize="64" type="int64"/>
|
||||
<reg name="a2" bitsize="64" type="int64"/>
|
||||
<reg name="a3" bitsize="64" type="int64"/>
|
||||
<reg name="a4" bitsize="64" type="int64"/>
|
||||
<reg name="a5" bitsize="64" type="int64"/>
|
||||
<reg name="t8" bitsize="64" type="int64"/>
|
||||
<reg name="t9" bitsize="64" type="int64"/>
|
||||
<reg name="t10" bitsize="64" type="int64"/>
|
||||
<reg name="t11" bitsize="64" type="int64"/>
|
||||
<reg name="ra" bitsize="64" type="int64"/>
|
||||
<reg name="t12" bitsize="64" type="int64"/>
|
||||
<reg name="at" bitsize="64" type="int64"/>
|
||||
<reg name="gp" bitsize="64" type="data_ptr"/>
|
||||
<reg name="sp" bitsize="64" type="data_ptr"/>
|
||||
<reg name="zero" bitsize="64" type="int64" save-restore="no"/>
|
||||
|
||||
<!-- Floating-Point Registers -->
|
||||
<reg name="f0" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f1" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f2" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f3" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f4" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f5" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f6" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f7" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f8" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f9" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f10" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f11" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f12" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f13" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f14" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f15" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f16" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f17" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f18" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f19" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f20" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f21" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f22" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f23" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f24" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f25" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f26" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f27" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f28" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f29" bitsize="64" type="float" group="float"/>
|
||||
<reg name="f30" bitsize="64" type="float" group="float"/>
|
||||
|
||||
<!-- Floating-Point Control Register -->
|
||||
<reg name="fpcr" bitsize="64" type="fpcr_flags" group="float"/>
|
||||
|
||||
<!-- Program Counter -->
|
||||
<reg name="pc" bitsize="64" type="code_ptr"/>
|
||||
|
||||
<!-- Reserved Index for Former Virtual Register -->
|
||||
<reg name="" bitsize="64" type="int64" save-restore="no"/>
|
||||
|
||||
<!-- PALcode Memory Slot -->
|
||||
<reg name="unique" bitsize="64" type="int64" group="system"/>
|
||||
</feature>
|
||||
99
gdb-xml/sparc64-core.xml
Normal file
99
gdb-xml/sparc64-core.xml
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2013-2025 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
<feature name="org.gnu.gdb.sparc.core">
|
||||
<reg name="g0" bitsize="64" type="uint64" regnum="0"/>
|
||||
<reg name="g1" bitsize="64" type="uint64" regnum="1"/>
|
||||
<reg name="g2" bitsize="64" type="uint64" regnum="2"/>
|
||||
<reg name="g3" bitsize="64" type="uint64" regnum="3"/>
|
||||
<reg name="g4" bitsize="64" type="uint64" regnum="4"/>
|
||||
<reg name="g5" bitsize="64" type="uint64" regnum="5"/>
|
||||
<reg name="g6" bitsize="64" type="uint64" regnum="6"/>
|
||||
<reg name="g7" bitsize="64" type="uint64" regnum="7"/>
|
||||
<reg name="o0" bitsize="64" type="uint64" regnum="8"/>
|
||||
<reg name="o1" bitsize="64" type="uint64" regnum="9"/>
|
||||
<reg name="o2" bitsize="64" type="uint64" regnum="10"/>
|
||||
<reg name="o3" bitsize="64" type="uint64" regnum="11"/>
|
||||
<reg name="o4" bitsize="64" type="uint64" regnum="12"/>
|
||||
<reg name="o5" bitsize="64" type="uint64" regnum="13"/>
|
||||
<reg name="sp" bitsize="64" type="uint64" regnum="14"/>
|
||||
<reg name="o7" bitsize="64" type="uint64" regnum="15"/>
|
||||
<reg name="l0" bitsize="64" type="uint64" regnum="16"/>
|
||||
<reg name="l1" bitsize="64" type="uint64" regnum="17"/>
|
||||
<reg name="l2" bitsize="64" type="uint64" regnum="18"/>
|
||||
<reg name="l3" bitsize="64" type="uint64" regnum="19"/>
|
||||
<reg name="l4" bitsize="64" type="uint64" regnum="20"/>
|
||||
<reg name="l5" bitsize="64" type="uint64" regnum="21"/>
|
||||
<reg name="l6" bitsize="64" type="uint64" regnum="22"/>
|
||||
<reg name="l7" bitsize="64" type="uint64" regnum="23"/>
|
||||
<reg name="i0" bitsize="64" type="uint64" regnum="24"/>
|
||||
<reg name="i1" bitsize="64" type="uint64" regnum="25"/>
|
||||
<reg name="i2" bitsize="64" type="uint64" regnum="26"/>
|
||||
<reg name="i3" bitsize="64" type="uint64" regnum="27"/>
|
||||
<reg name="i4" bitsize="64" type="uint64" regnum="28"/>
|
||||
<reg name="i5" bitsize="64" type="uint64" regnum="29"/>
|
||||
<reg name="fp" bitsize="64" type="uint64" regnum="30"/>
|
||||
<reg name="i7" bitsize="64" type="uint64" regnum="31"/>
|
||||
|
||||
<reg name="f0" bitsize="32" type="ieee_single" regnum="32"/>
|
||||
<reg name="f1" bitsize="32" type="ieee_single" regnum="33"/>
|
||||
<reg name="f2" bitsize="32" type="ieee_single" regnum="34"/>
|
||||
<reg name="f3" bitsize="32" type="ieee_single" regnum="35"/>
|
||||
<reg name="f4" bitsize="32" type="ieee_single" regnum="36"/>
|
||||
<reg name="f5" bitsize="32" type="ieee_single" regnum="37"/>
|
||||
<reg name="f6" bitsize="32" type="ieee_single" regnum="38"/>
|
||||
<reg name="f7" bitsize="32" type="ieee_single" regnum="39"/>
|
||||
<reg name="f8" bitsize="32" type="ieee_single" regnum="40"/>
|
||||
<reg name="f9" bitsize="32" type="ieee_single" regnum="41"/>
|
||||
<reg name="f10" bitsize="32" type="ieee_single" regnum="42"/>
|
||||
<reg name="f11" bitsize="32" type="ieee_single" regnum="43"/>
|
||||
<reg name="f12" bitsize="32" type="ieee_single" regnum="44"/>
|
||||
<reg name="f13" bitsize="32" type="ieee_single" regnum="45"/>
|
||||
<reg name="f14" bitsize="32" type="ieee_single" regnum="46"/>
|
||||
<reg name="f15" bitsize="32" type="ieee_single" regnum="47"/>
|
||||
<reg name="f16" bitsize="32" type="ieee_single" regnum="48"/>
|
||||
<reg name="f17" bitsize="32" type="ieee_single" regnum="49"/>
|
||||
<reg name="f18" bitsize="32" type="ieee_single" regnum="50"/>
|
||||
<reg name="f19" bitsize="32" type="ieee_single" regnum="51"/>
|
||||
<reg name="f20" bitsize="32" type="ieee_single" regnum="52"/>
|
||||
<reg name="f21" bitsize="32" type="ieee_single" regnum="53"/>
|
||||
<reg name="f22" bitsize="32" type="ieee_single" regnum="54"/>
|
||||
<reg name="f23" bitsize="32" type="ieee_single" regnum="55"/>
|
||||
<reg name="f24" bitsize="32" type="ieee_single" regnum="56"/>
|
||||
<reg name="f25" bitsize="32" type="ieee_single" regnum="57"/>
|
||||
<reg name="f26" bitsize="32" type="ieee_single" regnum="58"/>
|
||||
<reg name="f27" bitsize="32" type="ieee_single" regnum="59"/>
|
||||
<reg name="f28" bitsize="32" type="ieee_single" regnum="60"/>
|
||||
<reg name="f29" bitsize="32" type="ieee_single" regnum="61"/>
|
||||
<reg name="f30" bitsize="32" type="ieee_single" regnum="62"/>
|
||||
<reg name="f31" bitsize="32" type="ieee_single" regnum="63"/>
|
||||
|
||||
<reg name="f32" bitsize="64" type="ieee_double" regnum="64"/>
|
||||
<reg name="f34" bitsize="64" type="ieee_double" regnum="65"/>
|
||||
<reg name="f36" bitsize="64" type="ieee_double" regnum="66"/>
|
||||
<reg name="f38" bitsize="64" type="ieee_double" regnum="67"/>
|
||||
<reg name="f40" bitsize="64" type="ieee_double" regnum="68"/>
|
||||
<reg name="f42" bitsize="64" type="ieee_double" regnum="69"/>
|
||||
<reg name="f44" bitsize="64" type="ieee_double" regnum="70"/>
|
||||
<reg name="f46" bitsize="64" type="ieee_double" regnum="71"/>
|
||||
<reg name="f48" bitsize="64" type="ieee_double" regnum="72"/>
|
||||
<reg name="f50" bitsize="64" type="ieee_double" regnum="73"/>
|
||||
<reg name="f52" bitsize="64" type="ieee_double" regnum="74"/>
|
||||
<reg name="f54" bitsize="64" type="ieee_double" regnum="75"/>
|
||||
<reg name="f56" bitsize="64" type="ieee_double" regnum="76"/>
|
||||
<reg name="f58" bitsize="64" type="ieee_double" regnum="77"/>
|
||||
<reg name="f60" bitsize="64" type="ieee_double" regnum="78"/>
|
||||
<reg name="f62" bitsize="64" type="ieee_double" regnum="79"/>
|
||||
|
||||
<reg name="pc" bitsize="64" type="code_ptr" regnum="80"/>
|
||||
<reg name="npc" bitsize="64" type="code_ptr" regnum="81"/>
|
||||
<reg name="state" bitsize="64" type="uint64" regnum="82"/>
|
||||
<reg name="fsr" bitsize="64" type="uint64" regnum="83"/>
|
||||
<reg name="fprs" bitsize="64" type="uint64" regnum="84"/>
|
||||
<reg name="y" bitsize="64" type="uint64" regnum="85"/>
|
||||
</feature>
|
||||
|
|
@ -27,7 +27,10 @@ linux_user_ss.add(libdw)
|
|||
linux_user_ss.add(when: 'TARGET_HAS_BFLT', if_true: files('flatload.c'))
|
||||
linux_user_ss.add(when: 'TARGET_I386', if_true: files('vm86.c'))
|
||||
linux_user_ss.add(when: 'CONFIG_ARM_COMPATIBLE_SEMIHOSTING', if_true: files('semihost.c'))
|
||||
linux_user_ss.add(when: 'CONFIG_TCG_PLUGINS', if_true: files('plugin-api.c'))
|
||||
|
||||
if get_option('plugins')
|
||||
linux_user_ss.add(files('plugin-api.c'))
|
||||
endif
|
||||
|
||||
syscall_nr_generators = {}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,4 +12,5 @@
|
|||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu.h"
|
||||
#include "loader.h"
|
||||
#include "common-user/plugin-api.c.inc"
|
||||
|
|
|
|||
|
|
@ -286,6 +286,7 @@ static void alpha_cpu_class_init(ObjectClass *oc, const void *data)
|
|||
cc->get_pc = alpha_cpu_get_pc;
|
||||
cc->gdb_read_register = alpha_cpu_gdb_read_register;
|
||||
cc->gdb_write_register = alpha_cpu_gdb_write_register;
|
||||
cc->gdb_core_xml_file = "alpha-core.xml";
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
dc->vmsd = &vmstate_alpha_cpu;
|
||||
cc->sysemu_ops = &alpha_sysemu_ops;
|
||||
|
|
|
|||
|
|
@ -1090,6 +1090,7 @@ static void sparc_cpu_class_init(ObjectClass *oc, const void *data)
|
|||
cc->disas_set_info = cpu_sparc_disas_set_info;
|
||||
|
||||
#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
|
||||
cc->gdb_core_xml_file = "sparc64-core.xml";
|
||||
cc->gdb_num_core_regs = 86;
|
||||
#else
|
||||
cc->gdb_num_core_regs = 72;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue