July 25, 2023
TEMU 3.0.9 is a bug fix release, addressing the following:
- SPWROUTER AMBA port resets not functioning correctly
- GRCAN incorrect mapping of sync-registers
- GRIOMMU register writes should not overwrite read-only bits
TEMU 3.0.8 is a bug fix release, addressing the following:
- GDB server not translating addresses using the MMU
- GDB server using deprecated memory interface
- GDB server issuing hwbreak as stop reason to GDB, triggering a bug in GDB
TEMU 3.0.7 is a bug fix release, addressing the following:
- Adding missing GRGPIO registers. Some optional registers in the GRGPIO was missing they can now be enabled by configuration settings.
TEMU 3.0.6 is a bug fix release, addressing several issues.
- Fix issue in binary translator resulting in interpreted delay slots being skipped by accidentally chaining the block to the next.
- Fix SPWROUTER configuration in GR740 configuration file.
- Fix SPWROUTER not supporting resets via AMBA port RS bit.
- Fix issue with interrupts sometimes being delayed to the next event for SPARC targets.
- Fix issue with IRQAMP model missing some registers on the GR740.
- Improving robustness of some APIs and models with additional null-pointer checks.
TEMU 3.0.5 is a bug fix release, it addresses a number of issues identified with the GRCAN, IRQMP and IRQAMP models.
- Fix GRCAN IRQ IDs in GR740 configuration file.
- Fix missing GRCAN AMBA P&P updates when configuring IRQ numbers.
- Fix missing GRCAN AMBA P&P updates when mapping devices to memory.
- Fix issue in IRQMP and IRQAMP, with extended main interrupt bits being set incorrectly for extended interrupts.
- Add receive and transmit tracing code to GRCAN model
TEMU 3.0.4 addresses two issues related to IRQ remapping on the GR740
- Enable GR740 IRQ remapping in the GR740 configuration file
- Fix an issue where the IRQ remapping would be applied too late in the interrupt chain
In addition the following features have been added:
- ABI level stacktrace command in the SPARC processor models. To run this, enter
cpu0.stacktrace in the command line interface.
TEMU 3.0.3 addresses the following bugs:
- Adding AHB2AHB model for the GR740 (it only provides PNP data)
- Adding two extra AHBCTRL devices in the GR740 (memory- and AHB slave I/O buses)
- Adding AHB PNP interfaces for GRIOMMU (master AHB, secondary master AHB and slave AHBinterfaces).
- Aligning default capability register values in GRIOMMU with values from GR740 hardware. Documented values were incorrect.
experimental namespace for the SoC ID and version properties in the
AhbCtrl added in TEMU 3.0.2 has been dropped. Properties should now be named without the
TEMU 3.0.2 has been released it addresses the following issues:
- Fix sometimes incorrect determination of on/off page jumps in the binary translator.
- Fix invalid jump instructions in binary translated code, that could happen if the offset was more than 2 GiB.
- PikeOS would not boot in TEMU, resolving this by:
- Fix device version in AMBA PNP data LEON4 processor core.
GRGPREG model. This model is a dummy, but provides the correct PNP info and user configurable registers.
GRGPRBANK model. This model is a dummy, but provides the correct PNP info and user configurable registers.
- Adding a workaround in
AhbCtrl model to expose undocumented SoC ID and version IDs.
TEMU 3.0.2 also adds the following enhancements:
- Adding built-in
ExecutionProfiler model that can monitor performance metrics over time.
- Adding built-in
Sampler model that can sample arbitrary properties over time.
- Adding built-in
ScriptSequencer model that can sequence TEMU scripts on specific times.
TEMU 3.0.1 has been released, it addresses the following issues:
- Bug: Invalid x86-64 instruction generated in translator, possibly leading to stack corruption.
- Bug: Move translator caches to memory-subsystem so they are shared on-multi-processor systems.
- Enhancement: Increase ATC sizes on SPARC targets from 16 to 512 entries. This significantly increases ATC hit ratio.
TEMU 3.0.0 has now been released. TEMU 3.0.0 is a major milestone in the TEMU product evolution.
The major focus for TEMU 3 has been on the performance and we add two major changes to system to increase performance.
The first change is the introduction of a pre-decoded dispatch interpreter, which converts target architecture instructions to an internal intermediate representation format. TEMU 2 used to fetch and decode instructions every time they were executed, but with TEMU 3 we only decode them once. This speeds up the interpreter by around 50% in measurements we have performed.
The second change for performance is the introduction of a dynamic binary translator engine. This engine can yield an additional 100% performance increase (exact numbers depend on the software running, and they can be higher or lower).
TEMU 3 also introduce the ability to define custom idle patterns, which although the API is currently unstable, could be used to define custom idle loop matchers (e.g. memory scrubbers etc). This is possible since the interpreter (and binary translator) decodes blocks of instructions now.
TEMU 3 also switch to semantic versioning for this and future releases, and although TEMU 2 almost use this system, it was not formally semver compliant. This will add clarity to the question of API and ABI stability and the compatibility of different versions.
- System Configurations
- Bus Models
- e500 PowerPC core (including SPE instruction set)
- P2020 peripherals
- eTSEC Ethernet MAC
- DDR controller
- Coherency module
- Legacy event API has been removed, this was deprecated in TEMU 2.2
- External class support has been removed, the solution is to write wrapper models using pseudo properties.