--- product: TEMU version: 2.1.0 release-date: 2015-11-12 --- # T-EMU Release Notes ## T-EMU 2.1.0 * Rebased to LLVM 3.7, giving around 10% performance improvements. * Added some custom LLVM optimisation passes (2-3 % extra performance). * Command Line Interface Improvements * Added support for variables, these can be used as parameters to commands. They are set using the var-set command or by assigning them using VAR=VALUE syntax. * Default variables can now be taken by some commands. Current default variables include DEFAULT_CPU (used by some CPU commands, e.g. register set and inspection commands), DEFAULT_MACHINE (used by some machine commands) and DEFAULT_RUNNABLE (used by the run, step and time commands). System configs have been updated to assign these variables. * Experimental DWARF support. When loading an ELF file, it is possible to add the parameter dwarf=1, this enables experimental DWARF parsing (and a whole lot of terminal output dumping the DWARF records). Currently, there is support in the disassembler command where instead of an address, it is possible to specify func=name, where name is the name of the function to disassemble. E.g: "dis cpu=cpu0 func=main" will dissassemble the main function. Note as this feature is experimental, it is likely that there are bugs (e.g. incorrect parsing, memory leaks, etc), and many parsing errors are currently handled with assert(). * Added a non-time-based event API. This is used to issue for example trap taken events that the user can intercept. Currently, the following events are defined 'temu.cpuErrorMode', 'temu.cpuTrapEntry' and temu.cpuTrapExit'. Note that there isn't any standard reporting of these (except the error mode event) and the user should provides his own event handlers in that can report the events. * Added GUI based console. A problem with the inline serial console was that it was printing too much info in the T-EMU console window when booting systems with lots of output like Linux. There is now a graphical user interface console with rudimentary VT100 support that also supports console input. This keeps your emulator command window clean from serial output. The GUI console does not log traffic at the moment. * GdbServer now available. The GdbServer is available as firstly a library, secondly through a stand-alone tool (temu-gdbserver) and thirdly as a command in the temu command line interface. Note that it is available as a C++ library, and C++ libs in the emulator are not seen as API stable. A stable C library may be made available later if there is need for one. * Adding Python scripting support to command line interface. * Adding cache emulation support. Note that unlike hardware, emulating a cache will slow down the emulation. The cache emulation interfaces and a generic cache model are available through libTEMUMemory. The cache APIs exist to allow the user to do detailed performance analysis and estimate the impact from running with and without caches. Note, that for normal usage, it is best to emulate caches by setting the average waitstates on the RAM and / or ROM models. * LEON2, 3 and 4 now support caches in the CPU models. Caches are optional and you do not pay for something that is not used. * LEON2SoC is now working as a cache controller to keep taps on flushing bits. ### Deprecations * Logging function temu\_logCritical() is deprecated. It is renamed as temu\_logFatal() to more clearly illustrate the intent. * temu\_MemoryKind is no longer used. The enum will be removed later. * temu\_MemoryMapIface is deprecated. The interface is no longer used and the function interface is preferred. At present users should not implement their own memory spaces. This may change in the future, but at the moment, all fields in the interface are deprecated and the interface will be removed in the future. ### CPU Changes * SPARCv8 * LEON4 * Add support for NGMP reset values ## T-EMU 2.0.0 * Adding Machine class. This is the multi-core CPU scheduler. * Fixes bug where the typesafe wrappers for temu_ifaceArrayDispose (see temu-c/Support/Objsys.h) were passing the wrong pointer to the dispose function. * Adding temu_Object type which should normally be inherited by all native classes registered in the object system (i.e. not by external classes). * Fixes several other issues discovered in the first pre-release. ### CPU Changes * SPARCv8 * General * Ensuring that events are triggered when they expire, even if the CPU is halted. * Synchronised event support. * LEON4 * Adding partial wrpsr support (from SPARCv8-E) ### Device Changes * All devices updated to inherit temu_Object. * GpTimer now posts synchronised timer events. ### API Changes * Adding extra flags argument to event posting functions * Machine interface is now publicly available ## Pre-Release 0 * Initial release on the T-EMU website. ### CPU Changes * SPARCv8 * ERC32: New * LEON2: New * LEON3: New * LEON4: New ### Device Changes * MEC: New * LEON2-on-chip-devices: New * GRLIB AhbCtrl: New * GRLIB ApbCtrl: New * GRLIB ApbUart: New * GRLIB IrqMp: New * GRLIB GPTimer: New ### API Changes * None