• M
    armv7m: Replace armv7m.hack with unassigned_access handler · 542b3478
    Michael Davidsaver 提交于
    For v7m we need to catch attempts to execute from special
    addresses at 0xfffffff0 and above. Previously we did this
    with the aid of a hacky special purpose lump of memory
    in the address space and a check in translate.c for whether
    we were translating code at those addresses.
    
    We can implement this more cleanly using a CPU
    unassigned access handler which throws the exception
    if the unassigned access is for one of the special addresses.
    Signed-off-by: NMichael Davidsaver <mdavidsaver@gmail.com>
    Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
    Message-id: 1484937883-1068-3-git-send-email-peter.maydell@linaro.org
    [PMM:
     * drop the deletion of the "don't interrupt if PC is magic"
       code in arm_v7m_cpu_exec_interrupt() -- this is still
       required
     * don't generate an exception for unassigned accesses
       which aren't to the magic address -- although doing
       this is in theory correct in practice it will break
       currently working guests which rely on the RAZ/WI
       behaviour when they touch devices which we haven't
       modelled.
     * trigger EXCP_EXCEPTION_EXIT on is_exec, not !is_write
    ]
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    542b3478
armv7m.c 6.2 KB