[Bug target/37386] Interrupt service routine for arm target corrupts program counter

ramana at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed May 13 12:31:00 GMT 2009



------- Comment #2 from ramana at gcc dot gnu dot org  2009-05-13 12:31 -------
This appears to be fixed with trunk as of r147467. Can you reproduce this with
4.3 or 4.4 ? If not we can close this one out.

_Z18serial_IRQ_Routinev:
        @ Interrupt Service Routine.
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        stmfd   sp!, {r0, r1, r2, r3, r4, ip}
        mov     r2, #0
        ldr     r3, .L9
        ldr     r0, .L9+4
        mov     r1, r2
.L6:
        ldr     r4, [r3, #36]
        ldr     ip, [r3, #40]
        cmp     r4, ip
        bne     .L2
        ldr     ip, [r3, #32]
        cmp     ip, #0
        beq     .L1
.L2:
        ldr     ip, [r3, #32]
        sub     ip, ip, #1
        str     ip, [r3, #32]
        ldr     ip, [r3, #40]
        ldr     r4, [r3, #40]
        add     r4, r4, #1
        str     r4, [r3, #40]
        ldr     r4, [r3, #40]
        ldrb    ip, [r3, ip]    @ zero_extendqisi2
        cmp     r4, #32
        add     r2, r2, #1
        streq   r1, [r3, #40]
        cmp     r2, #16
        strb    ip, [r0, #0]
        bne     .L6
.L1:
        ldmfd   sp!, {r0, r1, r2, r3, r4, ip}
        subs    pc, lr, #4
.L10:
        .align  2
.L9:


-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37386



More information about the Gcc-bugs mailing list