[PATCH] [gdb] Add Z80 CPU basic support
Simon Marchi
simark@simark.ca
Thu Sep 24 14:08:22 GMT 2020
Thanks, I was able to apply it successfully. It doesn't build, however,
please make sure it builds against the current master.
Some questions:
- What's the history behind this code? Is is currently maintained
somewhere else? Do you own it all? In order to push that code (and
transfer the copyright to the FSF), everybody who currently owns it
must have an assignment on file, normally.
- How do you test this? How can I test this? Add this to the commit
message.
- Did you manage to run parts of the GDB testsuite against this?
- If I want more information about the Z80 architecture, such as the ISA
details, ABI, etc, where do I look? It would also be a good idea to
add this to the commit message.
- I see mention of "eZ80". Can you provide information about what CPUs
are supported, what CPUs are not supported? Include any relevant
detail like that in the commit message.
We want to avoid people dropping code and then leaving a maintenance
burden to others. Ideally, each architecture should have a maintainer
(listed in the MAINTAINERS file) responsible for reviewing patches about
that architecture, and to whom we can reach out for questions about that
architecture. Would you be ready to accept such a role?
Please include the ChangeLog entries in the commit message. Take this
patch as an example:
https://sourceware.org/pipermail/gdb-patches/2020-September/171620.html
You can add the NEWS entry directly in the commit.
> diff --git a/gdb/features/z80-cpu.xml b/gdb/features/z80-cpu.xml
> new file mode 100644
> index 0000000000..d8093d68b9
> --- /dev/null
> +++ b/gdb/features/z80-cpu.xml
> @@ -0,0 +1,34 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2020 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.z80.cpu">
> + <flags id="af_flags" size="2">
> + <field name="C" start="0" end="0"/>
> + <field name="N" start="1" end="1"/>
> + <field name="P/V" start="2" end="2"/>
> + <field name="F3" start="3" end="3"/>
> + <field name="H" start="4" end="4"/>
> + <field name="F5" start="5" end="5"/>
> + <field name="Z" start="6" end="6"/>
> + <field name="S" start="7" end="7"/>
> + </flags>
> + <reg name="af" bitsize="16" type="af_flags"/>
> + <reg name="bc" bitsize="16" type="uint16"/>
> + <reg name="de" bitsize="16" type="data_ptr"/>
> + <reg name="hl" bitsize="16" type="data_ptr"/>
> + <reg name="sp" bitsize="16" type="data_ptr" />
> + <reg name="pc" bitsize="32" type="code_ptr" />
> + <reg name="ix" bitsize="16" type="data_ptr"/>
> + <reg name="iy" bitsize="16" type="data_ptr"/>
> + <reg name="af'" bitsize="16" type="af_flags"/>
> + <reg name="bc'" bitsize="16" type="uint16"/>
> + <reg name="de'" bitsize="16" type="data_ptr"/>
> + <reg name="hl'" bitsize="16" type="data_ptr"/>
> + <reg name="ir" bitsize="16" type="uint16"/>
> +<!-- <reg name="sps" bitsize="16" type="uint16"/> -->
> +</feature>
Shouldn't there be two different target descriptions for Z80 and eZ80?
> diff --git a/gdb/regformats/z80.dat b/gdb/regformats/z80.dat
> new file mode 100644
> index 0000000000..05580c8588
> --- /dev/null
> +++ b/gdb/regformats/z80.dat
I don't think you need a .dat file, today it's only used by some
remaining GDBserver ports.
> @@ -0,0 +1,18 @@
> +# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro:
> +# Generated from: z80.xml
> +name:z80
> +xmltarget:z80.xml
> +expedite:sp,pc
> +16:af
> +16:bc
> +16:de
> +16:hl
> +16:sp
> +32:pc
> +16:ix
> +16:iy
> +16:af'
> +16:bc'
> +16:de'
> +16:hl'
> +16:ir
> diff --git a/gdb/stubs/z80-stub.c b/gdb/stubs/z80-stub.c
> new file mode 100644
> index 0000000000..36316b95ba
> --- /dev/null
> +++ b/gdb/stubs/z80-stub.c
What is this file for? How do I use it?
Simon
More information about the Gdb-patches
mailing list