What is in the August release 1.2 of Morello IE?

Arm has released Morello instruction emulator 1.2 on 10th of August 2021. What are the main changes and improvements that are included in this release?

  • Morello IE 1.2 release brings improvements to the debugger, tracer, non-Morello C library API wrappers, switch to and from restricted mode of execution, as well as a number of bug fixes. Morello specification has been updated to PROTO-REL-03.

    Improvements to the built-in debugger include:

    • Loading buffer of arbitrary length from memory and printing memory buffer as a string.
    • Showing mode of execution (C64 / A64) for PC addresses.
    • Printing memory buffers in big-endian order.
    • Using register values as memory addresses.

    Improvements in the tracer include:

    • Switch between human-readable and machine-readable formats of statistics and cache model results.
    • Correct handling of LDRX / STRX regions.

    It is now possible to run Morello applications with reporting capability faults while not issuing OS signals. OS signals have been aligned with the proposed Morello Linux signal numbers for capability faults.

    We have implemented capability checks for PCC at instruction fetch (with option to disable these checks). Purecap memory access capability checks have been amended to fully comply with the specification. As before there is an option to disable these checks.

    Switching to and from restricted mode with access to different register banks as per Morello specification has been implemented in this release.

    Cache model now supports configuring HW prefetcher and replace policy.

    Better support for running applications linked to Morello and non-Morello versions of C library now include option to selectively enabled or disable non-Morello API wrappers. For applications with Purecap startup code these wrappers will be disabled automatically.

    Bug fixes:

    • Fixed crash when running applications with Purecap startup code.
    • Fixed BRS (pair of capabilities) may result in branch to null address.
    • Fixed XZR is incorrectly reported as a bad indexed register.
    • Fixed emulation of SUBS instruction.

    This release focuses on supporting running Purecap applications linked to non-Morello version of Musl libc. This should allow different experiments with Morello code, including compartmentalisation experiments, ahead of availability of Morello versions of C libraries.

    This version of Morello instruction emulator can be used to work with Morello port of Musl libc (which is currently work in progress).