• Jeffrey Lee's avatar
    Fix AbortTrap's handling of LDA instruction for emulated AP1 · 322fd3a6
    Jeffrey Lee authored
    When AP1 memory is being emulated (long descriptor page tables are in
    use), the AbortTrap machinery is used to emulate usermode read access.
    This provides coverage for all read instructions except those that
    AbortTrap handles via MemMap requests - LDREX, LDA, LDAEX, LDF & LFM.
    
    LDREX & LDAEX request both read & write access, so are fine (the MemMap
    request will get passed through to the registered AbortTrap handlers).
    
    LDF & LFM are irrelevant, since they only exist on ARM7500FE (on other
    machines FPEmulator will translate them to regular LDR/LDM, which are
    handled correctly)
    
    LDA however, will generate a plain "memmap with usermode read" request.
    When AbortTrap looks at the permissions of emulated AP1 it doesn't take
    into account the fact that the usermode read permission is being
    emulated, so it thinks that everything is fine and claims the memmap
    was successful, causing the abort handler to retry the instruction
    without making any changes, re...
    322fd3a6
VersionASM 846 Bytes