; LoadUnalignedWord  0.03  07-05-2011


LoadUnalignedWord                      ROUT
; Function:     Load a word from a possibly unaligned address
; Entry   :     r0 = address to load from
; Exit    :     r0 = word loaded
; APCS    :     not applicable
; Alters  :     r0,lr
; Flags   :     undefined
; Requires:     -
        STMFD   sp!, {r1, lr}
        ANDS    r1, r0, #3
        BICNE   r0, r0, #3                      ; added to ensure ARMv7 compatibility
        LDMIA   r0, {r0, lr}
        MOVNE   r1, r1, LSL #3
        MOVNE   r0, r0, LSR r1
        RSBNE   r1, r1, #32
        ORRNE   r0, r0, lr, LSL r1
        LDMFD   sp!, {r1, pc}

        END
