Trivial branch pull request 20220401

Fix sh4 linux-user build on Alpine
 and some trivial updates
 -----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmJGKK0SHGxhdXJlbnRA
 dml2aWVyLmV1AAoJEPMMOL0/L748eBAP/R4OL8FrmrWjtSPYNpIWUC+pvQpcLLGS
 JDC8Ty6jYXJ/7vD3AFJyyyfp0DPldX7zhcAZAtWjqdMEHqTm3mYEmmXstHEgy/j3
 Kw3zM8r2b3XDV1V4DCqGMOQ8H4j2QxsEti7HeA5NUSHil5FKaRCguwNoh6afriwQ
 H4KFOiPqcmZEcy6LSGFr5nhhvcrLApJ59aJT8dfzPv86LgP1LUIKNzBfajm/Bzkn
 vPFhfcnrqlx1hyzQ9CHpqdIAicDxZbkXQyQvSVilncDVnvKEumZ6y4xclF0r68fV
 KV7yA9KQczdlfC6FvoVR9h5OvghXiKo2u3z5Y/yE6glIRECETEs7sSKv+qTnrXwK
 63dMNEEEC5gJ/4sflE6KjL2OdTOPfYuQKgROUgcDmqX7TRvn6+OFBG+mfcgsmr2m
 7y18tDxADfLrL71Xcn8pGs34x1WYvE2G+uNW7ax1dmnalYuOzRxbkYSbYi6cbcWx
 sgyIPkqNgs6maQFZwn3ekpA4I0ApQPzzEk36krKxuG1yWa8eI4f4BIpL+sqYDj/5
 cGmjp3idlY+lXWYT0Fijbkv/KunZxIQlkLjj0nTp3fOIuI9aNXlxedXqry/lFr0n
 Pk0MWNHN2GZKOEyqxsVFsDUS6Fy4qSXfy11TDjAaVAV6xCWhIztWI1YkOOCZi43/
 KNUV0DHWSRJb
 =I8NW
 -----END PGP SIGNATURE-----

Merge tag 'trivial-branch-for-7.0-pull-request' of https://gitlab.com/laurent_vivier/qemu into staging

Trivial branch pull request 20220401

Fix sh4 linux-user build on Alpine
and some trivial updates

# gpg: Signature made Thu 31 Mar 2022 23:18:21 BST
# gpg:                using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg:                issuer "laurent@vivier.eu"
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
# gpg:                 aka "Laurent Vivier <laurent@vivier.eu>" [full]
# gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* tag 'trivial-branch-for-7.0-pull-request' of https://gitlab.com/laurent_vivier/qemu:
  tests/lcitool: Do not use a hard-coded /usr/bin/python3 as python interpreter
  vhost-vdpa: fix typo in a comment
  target/sh4: Remove old README.sh4 file
  linux-user/sh4/termbits: Silence warning about TIOCSER_TEMT double definition

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2022-04-01 10:23:27 +01:00
commit 9b617b1bb4
5 changed files with 4 additions and 154 deletions

View File

@ -299,7 +299,7 @@ static void vhost_vdpa_listener_region_del(MemoryListener *listener,
memory_region_unref(section->mr);
}
/*
* IOTLB API is used by vhost-vpda which requires incremental updating
* IOTLB API is used by vhost-vdpa which requires incremental updating
* of the mapping. So we can not use generic vhost memory listener which
* depends on the addnop().
*/

View File

@ -273,7 +273,7 @@ ebugging only */
#define TARGET_TIOCSERGETLSR TARGET_IOR('T', 89, unsigned int) /* 0x5459 */ /* Get line sta
tus register */
/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
# define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
# define TARGET_TIOCSER_TEMT 0x01 /* Transmitter physically empty */
#define TARGET_TIOCSERGETMULTI TARGET_IOR('T', 90, int) /* 0x545A
*/ /* Get multiport config */
#define TARGET_TIOCSERSETMULTI TARGET_IOW('T', 91, int) /* 0x545B

View File

@ -1,150 +0,0 @@
qemu target: sh4
author: Samuel Tardieu <sam@rfc1149.net>
last modified: Tue Dec 6 07:22:44 CET 2005
The sh4 target is not ready at all yet for integration in qemu. This
file describes the current state of implementation.
Most places requiring attention and/or modification can be detected by
looking for "XXXXX" or "abort()".
The sh4 core is located in target/sh4/*, while the 7750 peripheral
features (IO ports for example) are located in hw/sh7750.[ch]. The
main board description is in hw/shix.c, and the NAND flash in
hw/tc58128.[ch].
All the shortcomings indicated here will eventually be resolved. This
is a work in progress. Features are added in a semi-random order: if a
point is blocking to progress on booting the Linux kernel for the shix
board, it is addressed first; if feedback is necessary and no progress
can be made on blocking points until it is received, a random feature
is worked on.
Goals
-----
The primary model being worked on is the soft MMU target to be able to
emulate the Shix 2.0 board by Alexis Polti, described at
https://web.archive.org/web/20070917001736/http://perso.enst.fr/~polti/realisations/shix20/
Ultimately, qemu will be coupled with a system C or a verilog
simulator to simulate the whole board functionalities.
A sh4 user-mode has also somewhat started but will be worked on
afterwards. The goal is to automate tests for GNAT (GNU Ada) compiler
that I ported recently to the sh4-linux target.
Registers
---------
16 general purpose registers are available at any time. The first 8
registers are banked and the non-directly visible ones can be accessed
by privileged instructions. In qemu, we define 24 general purpose
registers and the code generation use either [0-7]+[8-15] or
[16-23]+[8-15] depending on the MD and RB flags in the sr
configuration register.
Instructions
------------
Most sh4 instructions have been implemented. The missing ones at this
time are:
- FPU related instructions
- LDTLB to load a new MMU entry
- SLEEP to put the processor in sleep mode
Most instructions could be optimized a lot. This will be worked on
after the current model is fully functional unless debugging
convenience requires that it is done early.
Many instructions did not have a chance to be tested yet. The plan is
to implement unit and regression testing of those in the future.
MMU
---
The MMU is implemented in the sh4 core. MMU management has not been
tested at all yet. In the sh7750, it can be manipulated through memory
mapped registers and this part has not yet been implemented.
Exceptions
----------
Exceptions are implemented as described in the sh4 reference manual
but have not been tested yet. They do not use qemu EXCP_ features
yet.
IRQ
---
IRQ are not implemented yet.
Peripheral features
-------------------
+ Serial ports
Configuration and use of the first serial port (SCI) without
interrupts is supported. Input has not yet been tested.
Configuration of the second serial port (SCIF) is supported. FIFO
handling infrastructure has been started but is not completed yet.
+ GPIO ports
GPIO ports have been implemented. A registration function allows
external modules to register interest in some port changes (see
hw/tc58128.[ch] for an example) and will be called back. Interrupt
generation is not yet supported but some infrastructure is in place
for this purpose. Note that in the current model a peripheral module
cannot directly simulate a H->L->H input port transition and have an
interrupt generated on the low level.
+ TC58128 NAND flash
TC58128 NAND flash is partially implemented through GPIO ports. It
supports reading from flash.
GDB
---
GDB remote target support has been implemented and lightly tested.
Files
-----
File names are hardcoded at this time. The bootloader must be stored in
shix_bios.bin in the current directory. The initial Linux image must
be stored in shix_linux_nand.bin in the current directory in NAND
format. Test files can be obtained from
http://perso.enst.fr/~polti/robot/ as well as the various datasheets I
use.
qemu disk parameter on the command line is unused. You can supply any
existing image and it will be ignored. As the goal is to simulate an
embedded target, it is not clear how this parameter will be handled in
the future.
To build an ELF kernel image from the NAND image, 16 bytes have to be
stripped off the end of every 528 bytes, keeping only 512 of them. The
following Python code snippet does it:
#! /usr/bin/python
def denand (infd, outfd):
while True:
d = infd.read (528)
if not d: return
outfd.write (d[:512])
if __name__ == '__main__':
import sys
denand (open (sys.argv[1], 'rb'),
open (sys.argv[2], 'wb'))
Style isssues
-------------
There is currently a mix between my style (space before opening
parenthesis) and qemu style. This will be resolved before final
integration is proposed.

View File

@ -14,4 +14,4 @@ lcitool-help: lcitool
lcitool-refresh:
$(call quiet-command, cd $(SRC_PATH) && git submodule update --init tests/lcitool/libvirt-ci)
$(call quiet-command, $(LCITOOL_REFRESH))
$(call quiet-command, $(PYTHON) $(LCITOOL_REFRESH))

View File

@ -1,4 +1,4 @@
#!/usr/bin/python3
#!/usr/bin/env python3
#
# Re-generate container recipes
#