4dd6517e36
Bug fixes: * memory encryption: Disable mem merge (Dr. David Alan Gilbert) Features: * New EPYC CPU definitions (Babu Moger) * Denventon-v2 CPU model (Tao Xu) * New 'note' field on versioned CPU models (Tao Xu) Cleanups: * x86 CPU topology cleanups (Babu Moger) * cpu: Use DeviceClass reset instead of a special CPUClass reset (Peter Maydell) -----BEGIN PGP SIGNATURE----- iQJIBAABCAAyFiEEWjIv1avE09usz9GqKAeTb5hNxaYFAl5xdnsUHGVoYWJrb3N0 QHJlZGhhdC5jb20ACgkQKAeTb5hNxaYkGA/9Fn1tCdW/74CEREPbcKNOf8twmCr2 L4qykix7mFcZXstFhEQuoNJQMz8mEPJngOfUSQY1c9w4psf0AXE6q3wbdNcxxdj1 1/+cPbaRuoF8EKw63MgR3AaReuWtAV+sGS4+eKBMJTMUbl03pOYARE+irCWJU6rd YdP0t6CX0NWF4afv+2wMeeZVr+IcKEo81jCCCSjmM0YLkwvu0Vs5ng3jE7vtFKPj MQHMyqD/lz0FwyksBiOLwjOCbnmIydWc/8VV68UH5ulxka96jk8CwmI0+A9v2UMQ 4PjQ84UeQclJTbec+h/Qy8DoCP3qiqijFMRau2wo1UWCsAjMcaRIJjIe5CSOJFRu 3FrP2FEJCZiWjh11b/x3jIyjK6MDjv3Y1oky1j5VkCnFUNLHbXUA2KY3jaZ/pf+1 BDqa6lNDYJBN+FQQt0yXDWAdGLUxxP87S9jmU9RULzwAwCic0FxVR/a5zk9EUDi0 mA+WL0ekfhIEVACdHYuCTxujGq8QnGiCppr1Wgx3t+GgveR8AjXdd/KclcKskYiw ozbujtBPQUImuq3xi6FTkRHXuEW+zc+IFbhZ3Zq5OhmJmpdgmSHryFcKAdvNJH/z VllKAsLg1hffm+PjlpuZLBucC4PBrvHbS7htHhMaemEiJHO9V5EfGDWQdELNRM8p sKymFNs5XjzQcGE= =9fEL -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/ehabkost/tags/x86-and-machine-pull-request' into staging x86 and machine queue for 5.0 soft freeze Bug fixes: * memory encryption: Disable mem merge (Dr. David Alan Gilbert) Features: * New EPYC CPU definitions (Babu Moger) * Denventon-v2 CPU model (Tao Xu) * New 'note' field on versioned CPU models (Tao Xu) Cleanups: * x86 CPU topology cleanups (Babu Moger) * cpu: Use DeviceClass reset instead of a special CPUClass reset (Peter Maydell) # gpg: Signature made Wed 18 Mar 2020 01:16:43 GMT # gpg: using RSA key 5A322FD5ABC4D3DBACCFD1AA2807936F984DC5A6 # gpg: issuer "ehabkost@redhat.com" # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" [full] # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6 * remotes/ehabkost/tags/x86-and-machine-pull-request: hw/i386: Rename apicid_from_topo_ids to x86_apicid_from_topo_ids hw/i386: Update structures to save the number of nodes per package hw/i386: Remove unnecessary initialization in x86_cpu_new machine: Add SMP Sockets in CpuTopology hw/i386: Consolidate topology functions hw/i386: Introduce X86CPUTopoInfo to contain topology info cpu: Use DeviceClass reset instead of a special CPUClass reset machine/memory encryption: Disable mem merge hw/i386: Rename X86CPUTopoInfo structure to X86CPUTopoIDs i386: Add 2nd Generation AMD EPYC processors i386: Add missing cpu feature bits in EPYC model target/i386: Add new property note to versioned CPU models target/i386: Add Denverton-v2 (no MPX) CPU model Signed-off-by: Peter Maydell <peter.maydell@linaro.org> |
||
---|---|---|
.. | ||
cpu-param.h | ||
cpu-qom.h | ||
cpu.c | ||
cpu.h | ||
gdbstub.c | ||
helper.c | ||
helper.h | ||
Makefile.objs | ||
monitor.c | ||
op_helper.c | ||
README.sh4 | ||
translate.c |
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.