[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